aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: f2e1fa690a401364b1f579f56a02f504da5e2cc7 (plain)
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
BSP ?= rpi2
DEBUG ?= 0
AUTO ?= 0
DEV_SERIAL ?= /dev/ttyUSB0
TARGET=armv7a-none-eabi
QEMU_BINARY=qemu-system-arm
QEMU_MACHINE_TYPE=raspi2b
QEMU_RELEASE_ARGS=-cpu=cortex-a7 -m 1G -display none
OBJDUMP_BINARY=arm-none-eabi-objdump
NM_BINARY=arm-none-eabi-nm
READELF_BINARY=arm-none-eabi-readelf
LINKER_FILE=src/bsp/raspberrypi/linker.ld
RUSTC_MISC_ARGS=-C target-cpu=cortex-a7
QEMU_RELEASE_ARGS=-chardev stdio,id=char0,mux=on,logfile=serial.log,signal=on -serial chardev:char0 -mon chardev=char0
KERNEL_ELF=target/$(TARGET)/release/kernel
RUSTFLAGS=-C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC=$(RUSTFLAGS) -D warnings -D missing_docs
FEATURES=--features bsp_$(BSP)
COMPILER_ARGS=--target=$(TARGET) $(FEATURES) --release
RUSTC_CMD=cargo rustc $(COMPILER_ARGS)
export LINKER_FILE

.PHONY: build doc clean run

build:
	@RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)

doc:
	@RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" cargo doc $(COMPILER_ARGS)

clean:
	-@rm -rf target

run: build
	@qemu-system-arm -cpu cortex-a7 -m 1G -kernel target/armv7a-none-eabi/release/kernel -machine raspi2b -serial mon:stdio -nographic

init:
	rustup target install $(TARGET)
	rustup target add $(TARGET)
	rustup override set nightly
	rustup component add llvm-tools-preview
	cargo install cargo-binutils