# This build script uses some GNU make specific extensions. include config.mk CFLAGS += -ggdb # Kernel sources which are specific to the x86_64 architecture. # Add new source files (C or Assembler) here, # preferentially in alphabetical order. VISOR_SOURCES_x86_64 := \ # end of x86_64 specific sources list # Architecture-agnostic kernel sources. # Add new source files (C or Assembler) here, # preferentially in alphabetical order. VISOR_SOURCES := \ efi.c \ $(VISOR_SOURCES_$(ARCH)) \ # end of sources list VISOR_OBJECTS := $(VISOR_SOURCES:.c=.o) VISOR_OBJECTS := $(VISOR_OBJECTS:.S=.o) VISOR_OBJECTS := $(VISOR_OBJECTS:%.o=build/%.o) VISOR_DEPFILES := $(VISOR_OBJECTS:.o=.d) VISOR_TARGET := build/visor .PHONY: all clean all: $(VISOR_TARGET) clean: rm -f $(VISOR_OBJECTS) rm -f $(VISOR_DEPFILES) rm -f build/visor.so rm -f $(VISOR_TARGET) build/%.o: %.[cS] | build @printf "CC %s\n" $@ @"$(CC)" $(CFLAGS) -MMD -MP -c -o $@ $< $(CPPFLAGS) build/$(ARCH)/%.o: $(ARCH)/%.[cS] | build/$(ARCH) @printf "CC %s\n" $@ @"$(CC)" $(CFLAGS) -MMD -MP -c -o $@ $< $(CPPFLAGS) build/visor.so: $(VISOR_OBJECTS) gnuefi/crt0-efi-$(ARCH).o | build @printf "LD %s\n" $@ @"$(LD)" $(LDFLAGS) -o $@ gnuefi/crt0-efi-$(ARCH).o $(VISOR_OBJECTS) $(VISOR_TARGET): build/visor.so | build @printf "ELF->PE %s\n" $@ @objcopy -j .text -j .sdata -j .data -j .rodata -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc --target efi-app-x86_64 --subsystem 10 build/visor.so $@ build: mkdir -p $@ build/$(ARCH): mkdir -p $@ config.mk: | config.default.mk cp config.default.mk $@ -include $(VISOR_DEPFILES)