From c7aaa41ac545a357f89e2095e694e5d679d3f6b0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 4 Jan 2017 10:39:03 -0700 Subject: [PATCH] Move linker config into libc-artifacts script. Use cargo config --- .cargo/config | 6 ++++++ Makefile | 37 ++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 .cargo/config diff --git a/.cargo/config b/.cargo/config new file mode 100644 index 0000000..4336324 --- /dev/null +++ b/.cargo/config @@ -0,0 +1,6 @@ +[target.x86_64-unknown-redox] +linker = "libc-artifacts/gcc.sh" +rustflags = [ + "--verbose", + "-Z", "print-link-args" +] diff --git a/Makefile b/Makefile index 0df0610..9ebe069 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,11 @@ +# Configuration ARCH?=x86_64 +# Automatic variables ROOT=$(PWD) export RUST_TARGET_PATH=$(ROOT)/targets - -export CFLAGS=-static -nostartfiles -nostdlib -nodefaultlibs \ - -undef -imacros $(ROOT)/libc-artifacts/define.h \ - -isystem $(ROOT)/libc-artifacts/usr/include \ - -L $(ROOT)/libc-artifacts/usr/lib \ - $(ROOT)/libc-artifacts/usr/lib/crt0.o \ - $(ROOT)/libc-artifacts/usr/lib/libm.a \ - $(ROOT)/libc-artifacts/usr/lib/libc.a \ - $(ROOT)/libc-artifacts/usr/lib/libgcc.a \ - -fno-stack-protector -U_FORTIFY_SOURCE +export CC=$(ROOT)/libc-artifacts/gcc.sh +export CFLAGS=-fno-stack-protector -U_FORTIFY_SOURCE # Kernel variables KTARGET=$(ARCH)-unknown-none @@ -182,11 +176,6 @@ ifeq ($(ARCH),arm) export CC=$(ARCH)-none-eabi-gcc export LD=$(ARCH)-none-eabi-ld - KRUSTCFLAGS+=-C linker=$(CC) - KCARGOFLAGS+=-C linker=$(CC) - RUSTCFLAGS+=-C linker=$(CC) - CARGOFLAGS+=-C linker=$(CC) - %.list: % $(ARCH)-none-eabi-objdump -C -D $< > $@ @@ -240,11 +229,6 @@ else VBM=VBoxManage endif - KRUSTCFLAGS+=-C linker=$(CC) -C link-args="$(CFLAGS)" - KCARGOFLAGS+=-C linker=$(CC) -C link-args="$(CFLAGS)" - RUSTCFLAGS+=-C linker=$(CC) -C link-args="$(CFLAGS)" - CARGOFLAGS+=-C linker=$(CC) -C link-args="$(CFLAGS)" - %.list: % objdump -C -M intel -D $< > $@ @@ -357,7 +341,7 @@ $(KBUILD)/libkernel.a: kernel/Cargo.toml kernel/arch/** kernel/src/** $(KBUILD)/ $(KCARGO) rustc --manifest-path $< --lib $(KCARGOFLAGS) -C lto --emit obj=$@ $(KBUILD)/libkernel_live.a: kernel/Cargo.toml kernel/arch/** kernel/src/** $(KBUILD)/libcore.rlib $(KBUILD)/liballoc.rlib $(KBUILD)/libcollections.rlib $(BUILD)/initfs.rs build/filesystem.bin - $(KCARGO) rustc --manifest-path $< --lib $(KCARGOFLAGS) --cfg 'feature="live"' -C lto --emit obj=$@ + $(KCARGO) rustc --manifest-path $< --lib --features live $(KCARGOFLAGS) -C lto --emit obj=$@ $(KBUILD)/kernel: $(KBUILD)/libkernel.a $(LD) $(LDFLAGS) -z max-page-size=0x1000 -T kernel/arch/$(ARCH)/src/linker.ld -o $@ $< @@ -367,6 +351,11 @@ $(KBUILD)/kernel_live: $(KBUILD)/libkernel_live.a # Userspace recipes $(BUILD)/libstd.rlib: rust/src/libstd/Cargo.toml rust/src/libstd/** + mkdir -p $(BUILD) + $(CARGO) rustc --verbose --manifest-path $< --features "panic-unwind" $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@ + cp rust/src/target/$(TARGET)/release/deps/*.rlib $(BUILD) + +$(BUILD)/libtest.rlib: rust/src/libtest/Cargo.toml rust/src/libtest/** $(BUILD)/libstd.rlib mkdir -p $(BUILD) $(CARGO) rustc --verbose --manifest-path $< $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@ cp rust/src/target/$(TARGET)/release/deps/*.rlib $(BUILD) @@ -418,6 +407,12 @@ filesystem/bin/%: programs/%/Cargo.toml programs/%/src/** $(BUILD)/libstd.rlib $(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@ $(STRIP) $@ +# Example of compiling tests - still TODO +filesystem/test/%: programs/%/Cargo.toml programs/%/src/** $(BUILD)/libstd.rlib $(BUILD)/libtest.rlib + mkdir -p filesystem/test + $(CARGO) test --no-run --manifest-path $< $(CARGOFLAGS) + cp programs/$*/target/$(TARGET)/release/deps/$*-* $@ + filesystem/bin/sh: filesystem/bin/ion cp $< $@