3 # asm and init order is important
4 src/main.asm: src/uefi.asm src/impl.asm src/bootstrap.asm
5 src/main.asm: init/sys.f init/uefi.f
10 out/main: src/main.asm | out
19 # Based on https://wiki.osdev.org/UEFI#Emulation_with_QEMU_and_OVMF
20 qemu: ARGS = -cpu qemu64
21 qemu: ARGS += -drive if=pflash,format=raw,unit=0,file=OVMF_CODE.fd,readonly=on
22 qemu: ARGS += -drive if=pflash,format=raw,unit=1,file=OVMF_VARS.fd
23 qemu: ARGS += -net none
24 qemu: ARGS += -drive format=raw,file=fat:rw:out
25 qemu: ARGS += -display type=gtk,zoom-to-fit=on
26 qemu: out/main out/startup.nsh OVMF_CODE.fd OVMF_VARS.fd
27 qemu-system-x86_64 $(ARGS)
29 OVMF_CODE.fd OVMF_VARS.fd: %: /usr/share/OVMF/%
32 OVMF: OVMF_CODE.fd OVMF_VARS.fd
35 mkfs.fat -C $@ 2048 # =1Mb
37 mmd -i "$@" ::efi/boot
38 mcopy -i "$@" out/main "::EFI/BOOT/bootx64.efi"
42 rm -rf out OVMF_CODE.fd OVMF_VARS.fd EFI.raw