snapshot before branching
[rrq/jonasforth.git] / Makefile
1 default: out/main
2
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 init/blurb.f
6
7 out:
8         mkdir -p out
9
10 out/main: src/main.asm | out
11         fasm $< $@
12
13 # Start script
14 out/startup.nsh: out
15         echo 'fs0:main' > $@
16
17 .PHONY: qemu
18
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)
28
29 OVMF_CODE.fd OVMF_VARS.fd: %: /usr/share/OVMF/%
30         cp $< $@
31
32 OVMF: OVMF_CODE.fd OVMF_VARS.fd
33
34 EFI.raw: out/main
35         mkfs.fat -C $@ 2048 # =1Mb
36         mmd -i "$@" ::efi
37         mmd -i "$@" ::efi/boot
38         mcopy -i "$@" Makefile "::EFI/BOOT"
39         mcopy -i "$@" out/main "::EFI/BOOT/bootx64.efi"
40
41 .PHONY: clean
42 clean:
43         rm -rf out OVMF_CODE.fd OVMF_VARS.fd EFI.raw
44
45