-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
54 lines (42 loc) · 1.42 KB
/
Makefile
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
OS := $(shell uname)
DISTRO := $(shell cat /etc/*release | grep '^ID=' | cut -d '=' -f2)
OVMF_CODE_PATH := /usr/share/OVMF/OVMF_CODE.fd
OVMF_VARS_PATH := /usr/share/OVMF/OVMF_VARS.fd
ifeq ($(OS),Linux)
ifeq ($(DISTRO),arch)
OVMF_CODE_PATH := /usr/share/OVMF/x64/OVMF_CODE.4m.fd
OVMF_VARS_PATH := /usr/share/OVMF/x64/OVMF_VARS.4m.fd
endif
ifeq ($(DISTRO),debian)
OVMF_CODE_PATH := /usr/share/OVMF/OVMF_CODE_4M.fd
OVMF_VARS_PATH := /usr/share/OVMF/OVMF_VARS_4M.fd
endif
endif
$(info OS=$(OS))
$(info DISTRO=$(DISTRO))
$(info OVMF_CODE_PATH=$(OVMF_CODE_PATH))
$(info OVMF_VARS_PATH=$(OVMF_VARS_PATH))
all: efi kernel
efi:
cd bootloader/uefi && cargo build --target x86_64-unknown-uefi --release -Zbuild-std=core -Zbuild-std-features=compiler-builtins-mem
mkdir -p esp/efi/boot/
cp bootloader/target/x86_64-unknown-uefi/release/bootloader-x86_64-uefi.efi esp/efi/boot/bootx64.efi
kernel:
cargo build --bin canicula-kernel --target x86_64-unknown-none
mkdir -p esp
cp target/x86_64-unknown-none/debug/canicula-kernel esp/kernel-x86_64
clean:
rm -rf target
rm -rf esp
clean-esp:
rm -rf esp
qemu:
qemu-system-x86_64 \
-m 256 \
-enable-kvm \
-drive if=pflash,format=raw,readonly=on,file=$(OVMF_CODE_PATH) \
-drive if=pflash,format=raw,readonly=on,file=$(OVMF_VARS_PATH) \
-drive format=raw,file=fat:rw:esp
kill-qemu:
pgrep qemu | xargs kill -9
.PHONY: efi kernel clean qemu kill-qemu clean-esp all