-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
79 lines (62 loc) · 1.89 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
SHELL := bash
.RECIPEPREFIX = >
.ONESHELL:
MAKEFLAGS += --no-builtin-rules --no-builtin-variables
#.SILENT:
export RELEASE ?=
export QEMU ?=
export QEMU_SYSTEM ?=qemu-system-x86_64
build_mode :=$(if $(RELEASE),release,debug)
features :=
qemu :=
ifeq ($(QEMU),1)
features +=qemu
qemu =-qemu
endif
export RUSTFLAGS = -Z emit-stack-sizes
CARGO ?= cargo +nightly
CARGOFLAGS += $(if $(RELEASE),--release,)
.PHONY: build-kernel
build-kernel:
> cd kernel; $(CARGO) build $(CARGOFLAGS) --features "$(features)"
.PHONY: build-loader
build-loader:
> cd loader; $(CARGO) build $(CARGOFLAGS)
.PHONY: build
build: build-kernel build-loader
.PHONY: fmt
fmt:
> (cd kernel; $(CARGO) fmt --all -- --check)
> (cd loader; $(CARGO) fmt --all -- --check)
.PHONY: clippy
clippy:
> (cd kernel; $(CARGO) clippy $(CARGOFLAGS) -- -D warnings)
> (cd loader; $(CARGO) clippy $(CARGOFLAGS) -- -D warnings)
.PHONY: test
test:
> $(CARGO) test $(CARGOFLAGS) --all -- --nocapture
QEMUFLAGS += -drive if=pflash,format=raw,readonly,file=./ovmf/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=./ovmf/OVMF_VARS.fd \
-drive if=ide,file=fat:rw:image,index=0,media=disk \
-serial stdio
.PHONY: run
run:
> cp target/x86_64-kani2-kernel/$(build_mode)/kani2_kernel.elf image/kani2_kernel.elf
> cp target/x86_64-unknown-uefi/$(build_mode)/kani2_loader.efi image/EFI/BOOT/BOOTX64.EFI
> $(QEMU_SYSTEM) \
-drive if=pflash,format=raw,readonly,file=./ovmf/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=./ovmf/OVMF_VARS.fd \
-drive if=ide,file=fat:rw:image,index=0,media=disk \
-serial stdio
.PHONY: debug-run
debug-run:
> $(QEMU_SYSTEM) $(QEMUFLAGS) -no-shutdown -no-reboot -monitor telnet::1234,server,nowait -gdb tcp::12345 -S #-d int
.PHONY: debug-attach
debug-attach:
> gdb -ex 'file target/x86_64-kani2-kernel/$(build_mode)/kani2_kernel.elf' -ex 'target remote localhost:12345'
.PHONY: all
all: build run
.PHONY: clean
clean:
> cargo clean
> rm -rf kani2.map