From c73e2ffecf21644b2e5975616cb5a03f6246f33a Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 25 Jun 2024 12:46:02 +0200 Subject: [PATCH] Add Makefile. This will both improve CI, and decouple the kernel build script from cookbook. --- Makefile | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..3341592a --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +export RUST_TARGET_PATH=targets + +ifeq ($(TARGET),) + ARCH?=$(shell uname -a) +else + ARCH?=$(shell echo "$(TARGET)" | cut -d - -f1) +endif + +BUILD?=target/$(ARCH)-unknown-kernel + +all: $(BUILD)/kernel $(BUILD)/kernel.sym + +LD_SCRIPT=linkers/$(ARCH).ld +TARGET_SPEC=targets/$(ARCH)-unknown-kernel.json + +$(BUILD)/kernel.all: $(LD_SCRIPT) $(TARGET_SPEC) $(shell find . -name "*.rs" -type f) + cargo rustc \ + --bin kernel \ + --target "$(TARGET_SPEC)" \ + --release \ + -Z build-std=core,alloc \ + -- \ + -C link-arg=-T -Clink-arg="$(LD_SCRIPT)" \ + -C link-arg=-z -Clink-arg=max-page-size=0x1000 \ + --emit link="$(BUILD)/kernel.all" + +$(BUILD)/kernel.sym: $(BUILD)/kernel.all + $(TARGET)-objcopy \ + --only-keep-debug \ + "$(BUILD)/kernel.all" \ + "$(BUILD)/kernel.sym" + +$(BUILD)/kernel: $(BUILD)/kernel.all + $(TARGET)-objcopy \ + --strip-debug \ + "$(BUILD)/kernel.all" \ + "$(BUILD)/kernel"