-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
53 lines (41 loc) · 1.79 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
# ------------------------------------------------------------------------------
# Config
BSP ?= rpi3ap
ifeq ($(BSP),rpi3ap)
TARGET = aarch64-unknown-none-softfloat
TARGET_CPU = cortex-a53
LINKER = aarch64-unknown-linux-gnu-gcc
LINKER_FILE = $(shell pwd)/src/arch/aarch64/cpu/kernel.ld
KERNEL_BIN = kernel8.img
QEMU_BINARY = qemu-system-aarch64
QEMU_MACHINE_TYPE = raspi3ap
RUST_FLAGS = -C link-arg=-nostartfiles
else ifeq ($(BSP),rpi3b)
TARGET = aarch64-unknown-none-softfloat
TARGET_CPU = cortex-a53
LINKER = aarch64-unknown-linux-gnu-gcc
LINKER_FILE = $(shell pwd)/src/arch/aarch64/cpu/kernel.ld
KERNEL_BIN = kernel8.img
QEMU_BINARY = qemu-system-aarch64
QEMU_MACHINE_TYPE = raspi3b
RUST_FLAGS = -C link-arg=-nostartfiles
endif
KERNEL_ELF = $(shell pwd)/target/$(TARGET)/release/eve
# ------------------------------------------------------------------------------
# Rust build
.PHONY: all $(KERNEL_ELF) $(KERNEL_BIN) clean
all: $(KERNEL_BIN)
$(KERNEL_ELF):
@printf "\033[0;32mInfo: Compiling kernel for \033[1m$(BSP)\033[0m\033[0m\n"
RUSTFLAGS="-C target-cpu=$(TARGET_CPU) -C linker=$(LINKER) -C link-arg=-T$(LINKER_FILE) $(RUST_FLAGS)" cargo build --target=$(TARGET) --features bsp_$(BSP) -Z build-std=core,alloc --release
$(KERNEL_BIN): $(KERNEL_ELF)
@printf "\033[0;32mINFO: Generating stripped binary\033[0m\n"
rust-objcopy --strip-all -O binary $(KERNEL_ELF) $(KERNEL_BIN)
# ------------------------------------------------------------------------------
# Qemu
qemu: $(KERNEL_BIN)
$(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE) -kernel $(KERNEL_BIN) -serial stdio
# ------------------------------------------------------------------------------
# Cleanup
clean:
rm -rf target $(KERNEL_BIN)