Add placeholder implementation of Linux backend
[rrq/jonasforth.git] / Makefile
index 786399fbd158040dbb6245e66cf43c73a0616dfb..c812dccc9bb2933bd480bb73c5bfa14d351c3af5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,26 @@
-.PHONY: run
-run: main
-       cat sys.f - | ./main
+.PHONY: qemu
+qemu: out/main OVMF_CODE.fd OVMF_VARS.fd
+       # Based on https://wiki.osdev.org/UEFI#Emulation_with_QEMU_and_OVMF
+       qemu-system-x86_64 -cpu qemu64 \
+               -drive if=pflash,format=raw,unit=0,file=OVMF_CODE.fd,readonly=on \
+               -drive if=pflash,format=raw,unit=1,file=OVMF_VARS.fd \
+               -net none \
+               -drive format=raw,file=fat:rw:out \
+               -display type=gtk,zoom-to-fit=on
 
-main: main.asm impl.asm
-       fasm $< $@
+# Assuming 'ovmf' package on Arch Linux is installed.
+OVMF_CODE.fd: /usr/share/ovmf/x64/OVMF_CODE.fd
+       cp $< $@
+OVMF_VARS.fd: /usr/share/ovmf/x64/OVMF_VARS.fd
+       cp $< $@
+
+out/main: main.asm impl.asm bootstrap.asm sys.f os/uefi.asm
+       mkdir -p out
+       OS_INCLUDE=os/uefi.asm fasm $< $@
+
+main: main.asm impl.asm bootstrap.asm sys.f os/linux.asm
+       OS_INCLUDE=os/linux.asm fasm $< $@
 
 .PHONY: clean
 clean:
-       rm -f main
+       rm -rf out OVMF_CODE.fd OVMF_VARS.fd