X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=Makefile;h=88c74ca61bb474c1173dfdaa2a17566f55c4b645;hb=HEAD;hp=1bfaabe82ac9c90f294f7c2fc0f7f7e7f9620cd3;hpb=a856c7d5b35de1b48bdd948186ec4a03f7c3685c;p=rrq%2Fjonasforth.git diff --git a/Makefile b/Makefile index 1bfaabe..88c74ca 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,45 @@ -.PHONY: run -run: main - cat sys.f - | ./main +default: out/main -main: main.asm impl.asm bootstrap.asm +# asm and init order is important +src/main.asm: src/uefi.asm src/impl.asm src/bootstrap.asm +src/main.asm: init/sys.f init/uefi.f init/blurb.f + +out: + mkdir -p out + +out/main: src/main.asm | out fasm $< $@ +# Start script +out/startup.nsh: out + echo 'fs0:main' > $@ + +.PHONY: qemu + +# Based on https://wiki.osdev.org/UEFI#Emulation_with_QEMU_and_OVMF +qemu: ARGS = -cpu qemu64 +qemu: ARGS += -drive if=pflash,format=raw,unit=0,file=OVMF_CODE.fd,readonly=on +qemu: ARGS += -drive if=pflash,format=raw,unit=1,file=OVMF_VARS.fd +qemu: ARGS += -net none +qemu: ARGS += -drive format=raw,file=fat:rw:out +qemu: ARGS += -display type=gtk,zoom-to-fit=on +qemu: out/main out/startup.nsh OVMF_CODE.fd OVMF_VARS.fd + qemu-system-x86_64 $(ARGS) + +OVMF_CODE.fd OVMF_VARS.fd: %: /usr/share/OVMF/% + cp $< $@ + +OVMF: OVMF_CODE.fd OVMF_VARS.fd + +EFI.raw: out/main + mkfs.fat -C $@ 2048 # =1Mb + mmd -i "$@" ::efi + mmd -i "$@" ::efi/boot + mcopy -i "$@" Makefile "::EFI/BOOT" + mcopy -i "$@" out/main "::EFI/BOOT/bootx64.efi" + .PHONY: clean clean: - rm -f main + rm -rf out OVMF_CODE.fd OVMF_VARS.fd EFI.raw + +