# TODO Autogen.obj # Difference *.o *.obj MAIN_FILE=MemtestEfi CC=gcc CFLAGS= -Werror -Wall -fno-builtin -fshort-wchar -fno-common -fno-strict-aliasing -g \ -Wno-array-bounds -fno-stack-protector -Wno-address -mno-red-zone \ -fpie -ffunction-sections -fdata-sections -flto -maccumulate-outgoing-args \ -fno-asynchronous-unwind-tables -nostdlib -fPIC LINKER= M64=-m64 -mcmodel=small M32=-m32 M=$(M64) PREPROCESSOR=-DUEFI -DUSING_LTO -Os \ -D DISABLE_NEW_DEPRECATED_INTERFACES "-DEFIAPI=__attribute__((ms_abi))" INCLUDE_FILES=main cpuid test smp config screen_buffer lib init controller pci \ spd dmi reloc patn error vmem memsize random logger memory_tables #ADDITIONAL_HEADER=$(addprefix memtest86+/, defs.h efi/stdin.h io.h \ # stdint.h stddef.h serial.h msr.h jedec_id.h elf.h efi/main_asm.h) OBJS=AutoGen.obj main.o display.o test.o smp.o config.o screen_buffer.o lib.o init.o controller.o \ pci.o spd.o dmi.o reloc.o patn.o error.o vmem.o cpuid.o memsize.o \ random.o MemtestEfi.obj logger.o memory_tables.o ApplicationEntryPoint.o UefiLib.o \ UefiRuntimeServicesTableLib.o UefiBootServicesTableLib.o #UefiDebugLibStdErr.o #BaseDebugPrintErrorLevelLib.o BaseMemoryLib.o LIBRARIES=OUTPUT/MemtestEfi.lib # BasePcdLibNull.lib BasePrintLib.lib \ # UefiDevicePathLib.lib \ # UefiMemoryAllocationLib.lib) all: clean MemtestEfi.efi move run $(MAIN_FILE).efi: $(MAIN_FILE).dll ./memtest86+/efi/Include/GenFw -e UEFI_APPLICATION -o $(MAIN_FILE).efi $(MAIN_FILE).dll $(MAIN_FILE).dll: $(MAIN_FILE).lib $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -o $(MAIN_FILE).dll \ -nostdlib \ -Wl,-n,-q,--gc-sections \ -Wl,--entry,_ModuleEntryPoint \ -Wl,-Map,$(MAIN_FILE).map,--whole-archive \ -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie \ -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 \ -Wl,--script=memtest86+/efi/Include/GccBase.lds \ -z common-page-size=0x40 \ -u _ModuleEntryPoint \ -DSTRING_ARRAY_NAME=${MAIN_FILE}Strings \ $(LIBRARIES) objcopy --strip-unneeded -R .eh_frame -v $(MAIN_FILE).dll $(MAIN_FILE).dll strip -R .strtab MemtestEfi.dll $(MAIN_FILE).lib: $(OBJS) gcc-ar crv OUTPUT/$(MAIN_FILE).lib $(OBJS) $(MAIN_FILE).obj: $(MAIN_FILE).c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -o $(MAIN_FILE).obj \ -MMD -MF OUTPUT/$(MAIN_FILE).obj.deps \ -c \ -include memtest86+/efi/Include/AutoGen.h \ -DSTRING_ARRAY_NAME=${MAIN_FILE}Strings \ -I . \ -I"memtest86+" \ -I"memtest86+/efi/Include" \ $(MAIN_FILE).c AutoGen.obj: memtest86+/efi/Include/AutoGen.c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -o AutoGen.obj \ -c \ -I"./" \ -I"memtest86+/efi/Include/" \ -I"memtest86+/efi/Include/Uefi" \ -I"memtest86+/efi/Include/Library" \ memtest86+/efi/Include/AutoGen.c %.o: memtest86+/%.c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -c -o $@ $< \ -I"memtest86+/efi" %.o: memtest86+/efi/Include/src/%.c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -c -o $@ $< \ -I"memtest86+/efi/Include" \ -I"memtest86+/efi/Include/Library" %.o: memtest86+/efi/Include/src/UefiLib/%.c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -c -o $@ $< \ -I"memtest86+/efi/Include" \ -I"memtest86+/efi/Include/Protocol" \ -I"memtest86+/efi/Include/Guid" UefiLib.o: Acpi.o Console.o UefiDriverModel.o UefiLib.o UefiLibPrint.o UefiNotTiano.o ld -r Acpi.o Console.o UefiDriverModel.o UefiLib.o UefiLibPrint.o UefiNotTiano.o -o UefiLib.o # todo create UefiLib obj file #%.o: memtest86+/efi/Include/src/UefiDebugLibStdErr/%.c # $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) %.o: memtest86+/efi/%.c $(CC) $(CFLAGS) $(PREPROCESSOR) $(M) -c -o $@ $< \ -I"memtest86+" \ -I"memtest86+/efi" \ -I"memtest86+/efi/Include" clean: rm -f OUTPUT/* rm -f memtest86+/*.o rm -f *.o rm -f MemtestEfi.obj rm -f MemtestEfi.map rm -f MemtestEfi.dll rm -f MemtestEfi.efi rm -f MemtestEfi.txt rm -f AutoGen.obj move: cp MemtestEfi.efi ../test_code/hda-contents run: sudo ./run.sh