-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathjustfile
67 lines (51 loc) · 1.64 KB
/
justfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
set dotenv-load
nimflags := (
"--os:any" +
if os() == "macos" { " -d:macosx" } else { "" }
)
export PATH := (
if os() == "macos" {
`brew --prefix llvm` + "/bin:" + env_var('PATH')
} else {
env_var('PATH')
}
)
boot_nim := "src/boot/bootx64.nim"
boot_out := "bootx64.efi"
kernel_nim := "src/kernel/main.nim"
kernel_out := "kernel.bin"
user_nim := "src/user/utask.nim"
user_out := "utask.bin"
ovmf_code := "ovmf/OVMF_CODE.fd"
ovmf_vars := "ovmf/OVMF_VARS.fd"
disk_image_dir := "diskimg"
bootloader:
nim c {{nimflags}} --out:build/boot/{{boot_out}} {{boot_nim}}
kernel:
nim c {{nimflags}} --out:build/kernel/{{kernel_out}} {{kernel_nim}}
user:
nim c {{nimflags}} --out:build/user/{{user_out}} {{user_nim}}
build: bootloader kernel user
run *QEMU_ARGS: bootloader kernel user
mkdir -p {{disk_image_dir}}/efi/boot
mkdir -p {{disk_image_dir}}/efi/fusion
cp build/boot/{{boot_out}} {{disk_image_dir}}/efi/boot/{{boot_out}}
cp build/kernel/{{kernel_out}} {{disk_image_dir}}/efi/fusion/{{kernel_out}}
cp build/user/{{user_out}} {{disk_image_dir}}/efi/fusion/{{user_out}}
@git restore ovmf/OVMF_VARS.fd
@echo ""
-qemu-system-x86_64 \
-drive if=pflash,format=raw,file={{ovmf_code}},readonly=on \
-drive if=pflash,format=raw,file={{ovmf_vars}} \
-drive format=raw,file=fat:rw:{{disk_image_dir}} \
-machine q35 \
-net none \
-no-reboot \
-debugcon stdio {{QEMU_ARGS}}
@git restore ovmf/OVMF_VARS.fd
clean:
git restore ovmf/OVMF_VARS.fd
rm -rf build
rm -rf {{disk_image_dir}}/efi/boot/{{boot_out}}
rm -rf {{disk_image_dir}}/efi/fusion/{{kernel_out}}
rm -rf {{disk_image_dir}}/efi/fusion/{{user_out}}