obj = test.o efiso = test.so efibin = bootx64.efi inc = -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol def = -DEFI_FUNCTION_WRAPPER eficrt = /usr/lib/crt0-efi-x86_64.o ldscript = /usr/lib/elf_x86_64_efi.lds CFLAGS = -pedantic -Wall $(inc) $(def) -fno-stack-protector -fPIC -fshort-wchar \ -mno-red-zone LDFLAGS = -nostdlib -znocombreloc -T $(ldscript) -L/usr/lib $(eficrt) -lefi -lgnuefi .PHONY: all all: $(efibin) $(efiso): $(obj) $(LD) -o $@ -shared -Bsymbolic $(obj) $(LDFLAGS) $(efibin): $(efiso) objcopy -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ -j .rela -j .reloc --target=efi-app-x86_64 $< $@ part.img: $(efibin) dd if=/dev/zero of=$@ bs=1024 count=2080 mkfs -t vfat $@ mmd -i $@ ::/EFI mmd -i $@ ::/EFI/BOOT mcopy -i $@ $< ::/EFI/BOOT disk.img: part.img dd if=/dev/zero of=$@ bs=1024 count=2048 echo start=2048 type=ef | sfdisk $@ dd if=$< of=$@ bs=512 seek=2048 conv=notrunc .PHONY: clean clean: rm -f $(obj) $(efibin) $(efiso) *.img