From b9f43dd529939cd29acb5b2fc16964b893c75dd6 Mon Sep 17 00:00:00 2001 From: Robin Randhawa Date: Tue, 6 Oct 2020 13:42:03 +0100 Subject: [PATCH] Switch kernel builds away from using xargo Use cargo's 'build-std=core,alloc' instead. Also: Cargo is now given the complete path to the target specific JSON file. This forces the use of the JSON file (the file is silently ignored if the target in question was built into the rust compiler). --- mk/config.mk | 1 - mk/kernel.mk | 6 +++--- mk/prefix.mk | 2 ++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mk/config.mk b/mk/config.mk index 43a4aed..45a7cdc 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -38,7 +38,6 @@ endif ROOT=$(CURDIR) export RUST_COMPILER_RT_ROOT=$(ROOT)/rust/src/llvm-project/compiler-rt export RUST_TARGET_PATH=$(ROOT)/kernel/targets -export XARGO_HOME=$(ROOT)/build/xargo export XARGO_RUST_SRC=$(ROOT)/rust/src ## Kernel variables diff --git a/mk/kernel.mk b/mk/kernel.mk index 63d2501..b6634bd 100644 --- a/mk/kernel.mk +++ b/mk/kernel.mk @@ -2,19 +2,19 @@ build/libkernel.a: kernel/Cargo.lock kernel/Cargo.toml kernel/src/* kernel/src/* export PATH="$(PREFIX_PATH):$$PATH" && \ export INITFS_FOLDER=$(ROOT)/build/initfs && \ cd kernel && \ - xargo rustc --lib --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ + cargo rustc --lib --target=$(ROOT)/kernel/targets/$(KTARGET).json --release -Z build-std=core,alloc -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ build/libkernel_coreboot.a: kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs_coreboot.tag export PATH="$(PREFIX_PATH):$$PATH" && \ export INITFS_FOLDER=$(ROOT)/build/initfs_coreboot && \ cd kernel && \ - xargo rustc --lib --target $(KTARGET) --release --features live -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ + cargo rustc --lib --target=$(ROOT)/kernel/targets/$(KTARGET).json --release --features live -Z build-std=core,alloc -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ build/libkernel_live.a: kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs_live.tag export PATH="$(PREFIX_PATH):$$PATH" && \ export INITFS_FOLDER=$(ROOT)/build/initfs_live && \ cd kernel && \ - xargo rustc --lib --target $(KTARGET) --release --features live -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ + cargo rustc --lib --target=$(ROOT)/kernel/targets/$(KTARGET).json --release --features live -Z build-std=core,alloc -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ build/kernel: kernel/linkers/$(ARCH).ld build/libkernel.a export PATH="$(PREFIX_PATH):$$PATH" && \ diff --git a/mk/prefix.mk b/mk/prefix.mk index 02ce5a4..47023ee 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -28,6 +28,8 @@ $(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/rust-install cd "$@.partial" && $(PREFIX_STRIP) touch "$@.partial" mv "$@.partial" "$@" + mkdir $@/lib/rustlib/src + ln -s $(ROOT)/rust $@/lib/rustlib/src $(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install tar \