Move linker config into libc-artifacts script. Use cargo config
This commit is contained in:
parent
53144d1c93
commit
c7aaa41ac5
6
.cargo/config
Normal file
6
.cargo/config
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[target.x86_64-unknown-redox]
|
||||||
|
linker = "libc-artifacts/gcc.sh"
|
||||||
|
rustflags = [
|
||||||
|
"--verbose",
|
||||||
|
"-Z", "print-link-args"
|
||||||
|
]
|
37
Makefile
37
Makefile
|
@ -1,17 +1,11 @@
|
||||||
|
# Configuration
|
||||||
ARCH?=x86_64
|
ARCH?=x86_64
|
||||||
|
|
||||||
|
# Automatic variables
|
||||||
ROOT=$(PWD)
|
ROOT=$(PWD)
|
||||||
export RUST_TARGET_PATH=$(ROOT)/targets
|
export RUST_TARGET_PATH=$(ROOT)/targets
|
||||||
|
export CC=$(ROOT)/libc-artifacts/gcc.sh
|
||||||
export CFLAGS=-static -nostartfiles -nostdlib -nodefaultlibs \
|
export CFLAGS=-fno-stack-protector -U_FORTIFY_SOURCE
|
||||||
-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
|
|
||||||
|
|
||||||
# Kernel variables
|
# Kernel variables
|
||||||
KTARGET=$(ARCH)-unknown-none
|
KTARGET=$(ARCH)-unknown-none
|
||||||
|
@ -182,11 +176,6 @@ ifeq ($(ARCH),arm)
|
||||||
export CC=$(ARCH)-none-eabi-gcc
|
export CC=$(ARCH)-none-eabi-gcc
|
||||||
export LD=$(ARCH)-none-eabi-ld
|
export LD=$(ARCH)-none-eabi-ld
|
||||||
|
|
||||||
KRUSTCFLAGS+=-C linker=$(CC)
|
|
||||||
KCARGOFLAGS+=-C linker=$(CC)
|
|
||||||
RUSTCFLAGS+=-C linker=$(CC)
|
|
||||||
CARGOFLAGS+=-C linker=$(CC)
|
|
||||||
|
|
||||||
%.list: %
|
%.list: %
|
||||||
$(ARCH)-none-eabi-objdump -C -D $< > $@
|
$(ARCH)-none-eabi-objdump -C -D $< > $@
|
||||||
|
|
||||||
|
@ -240,11 +229,6 @@ else
|
||||||
VBM=VBoxManage
|
VBM=VBoxManage
|
||||||
endif
|
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: %
|
%.list: %
|
||||||
objdump -C -M intel -D $< > $@
|
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=$@
|
$(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
|
$(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
|
$(KBUILD)/kernel: $(KBUILD)/libkernel.a
|
||||||
$(LD) $(LDFLAGS) -z max-page-size=0x1000 -T kernel/arch/$(ARCH)/src/linker.ld -o $@ $<
|
$(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
|
# Userspace recipes
|
||||||
$(BUILD)/libstd.rlib: rust/src/libstd/Cargo.toml rust/src/libstd/**
|
$(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)
|
mkdir -p $(BUILD)
|
||||||
$(CARGO) rustc --verbose --manifest-path $< $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@
|
$(CARGO) rustc --verbose --manifest-path $< $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@
|
||||||
cp rust/src/target/$(TARGET)/release/deps/*.rlib $(BUILD)
|
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 $@
|
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
|
||||||
$(STRIP) $@
|
$(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
|
filesystem/bin/sh: filesystem/bin/ion
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue