diff options
-rw-r--r-- | run_rustc/Makefile | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/run_rustc/Makefile b/run_rustc/Makefile index 55133b9a..00de43c3 100644 --- a/run_rustc/Makefile +++ b/run_rustc/Makefile @@ -20,6 +20,18 @@ PREFIX_S := $(OUTDIR)prefix-s/ LIBDIR_S := $(PREFIX_S)lib/rustlib/$(RUSTC_TARGET)/lib/ BINDIR_S := $(PREFIX_S)bin/ +LLVM_CONFIG := $(RUST_SRC)../build/bin/llvm-config +LLVM_TARGETS ?= X86;ARM;AArch64#;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX + +RUSTC_ENV_VARS := CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) +RUSTC_ENV_VARS += LLVM_CONFIG=$(abspath $(LLVM_CONFIG)) +RUSTC_ENV_VARS += CFG_RELEASE= +RUSTC_ENV_VARS += CFG_RELEASE_CHANNEL=$(RUSTC_CHANNEL) +RUSTC_ENV_VARS += CFG_VERSION=$(RUSTC_VERSION)-$(RUSTC_CHANNEL)-mrustc +RUSTC_ENV_VARS += CFG_PREFIX=mrustc +RUSTC_ENV_VARS += CFG_LIBDIR_RELATIVE=lib +RUSTC_ENV_VARS += LD_LIBRARY_PATH=$(abspath output) + V ?= @ @@ -39,7 +51,7 @@ RUSTFLAGS_compiler_builtins := --cfg feature=\"compiler-builtins\" ../output$(OUTDIR_SUF)/cargo: make -C ../ output$(OUTDIR_SUF)/cargo -j 3 -$(BINDIR)rustc: ../output$(OUTDIR_SUF)/rustc +$(BINDIR)rustc_m: ../output$(OUTDIR_SUF)/rustc @mkdir -p $(dir $@) $Vcp $< $@ $(BINDIR_S)rustc: ../output$(OUTDIR_SUF)/rustc @@ -57,27 +69,35 @@ $(CARGO_HOME)config: Makefile $Vecho "[source.vendored-sources]" >> $@ $Vecho "directory = \"$(abspath $(RUST_SRC)vendor)\"" >> $@ -# Actual libstd build (using cargo) +# Actual libstd build (using cargo, and using manually-build libstd as deps) $(LIBDIR)libstd.rlib: $(BINDIR_S)rustc $(BINDIR)cargo $(LIBDIR_S)libstd.rlib $(CARGO_HOME)config @mkdir -p $(OUTDIR)build-std + @mkdir -p $(LIBDIR) @echo [CARGO] $(RUST_SRC)libstd/Cargo.toml $VCARGO_TARGET_DIR=$(OUTDIR)build-std RUSTC=$(BINDIR_S)rustc CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) RUSTC_BOOTSTRAP=1 CARGO_HOME=$(CARGO_HOME) $(BINDIR)cargo build --manifest-path $(RUST_SRC)libstd/Cargo.toml -j 1 --release --features panic-unwind $Vcp --remove-destination $(OUTDIR)build-std/release/deps/*.rlib $(LIBDIR) $Vcp --remove-destination $(OUTDIR)build-std/release/deps/*.so $(LIBDIR) -$(LIBDIR)libtest.rlib: $(LIBDIR)libstd.rlib $(CARGO_HOME)config +# libtest +$(LIBDIR)libtest.rlib: $(BINDIR)rustc_m $(LIBDIR)libstd.rlib $(CARGO_HOME)config @mkdir -p $(OUTDIR)build-test @echo [CARGO] $(RUST_SRC)libtest/Cargo.toml - $VCARGO_TARGET_DIR=$(OUTDIR)build-test RUSTC=$(BINDIR)rustc CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) RUSTC_BOOTSTRAP=1 CARGO_HOME=$(CARGO_HOME) RUSTFLAGS="-Z force-unstable-if-unmarked" $(BINDIR)cargo build --manifest-path $(RUST_SRC)libtest/Cargo.toml -j 1 --release + $VCARGO_TARGET_DIR=$(OUTDIR)build-test RUSTC=$(BINDIR)rustc_m CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) RUSTC_BOOTSTRAP=1 CARGO_HOME=$(CARGO_HOME) RUSTFLAGS="-Z force-unstable-if-unmarked" $(BINDIR)cargo build --manifest-path $(RUST_SRC)libtest/Cargo.toml -j 1 --release @mkdir -p $(LIBDIR) $Vcp --remove-destination $(OUTDIR)build-test/release/deps/*.rlib $(LIBDIR) $Vcp --remove-destination $(OUTDIR)build-test/release/deps/*.so $(LIBDIR) $(LIBDIR)libproc_macro.rlib: $(LIBDIR)libstd.rlib $(LIBDIR)libtest.rlib $(CARGO_HOME)config @mkdir -p $(OUTDIR)build-pm @echo [CARGO] $(RUST_SRC)libproc_macro/Cargo.toml - $VCARGO_TARGET_DIR=$(OUTDIR)build-pm RUSTC=$(BINDIR)rustc RUSTC_ERROR_METADATA_DST=$(abspath $(PREFIX)) CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) RUSTFLAGS="-Z force-unstable-if-unmarked" RUSTC_BOOTSTRAP=1 CARGO_HOME=$(CARGO_HOME) $(BINDIR)cargo build --manifest-path $(RUST_SRC)libproc_macro/Cargo.toml --release -j 1 + $VCARGO_TARGET_DIR=$(OUTDIR)build-pm RUSTC=$(BINDIR)rustc_m RUSTC_ERROR_METADATA_DST=$(abspath $(PREFIX)) CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) RUSTFLAGS="-Z force-unstable-if-unmarked" RUSTC_BOOTSTRAP=1 CARGO_HOME=$(CARGO_HOME) $(BINDIR)cargo build --manifest-path $(RUST_SRC)libproc_macro/Cargo.toml --release -j 1 $Vcp --remove-destination $(OUTDIR)build-pm/release/deps/lib*.so $(LIBDIR) $Vcp --remove-destination $(OUTDIR)build-pm/release/deps/lib*.rlib $(LIBDIR) +# - Build rustc with itself (so we have a rustc with the right ABI) +$(BINDIR)rustc: $(BINDIR)rustc_m $(BINDIR)cargo $(CARGO_HOME)config $(LIBDIR)libtest.rlib + @mkdir -p $(PREFIX)tmp + @echo [CARGO] $(RUST_SRC)rustc/Cargo.toml + $V$(RUSTC_ENV_VARS) TMPDIR=$(abspath $(PREFIX)tmp) CARGO_TARGET_DIR=$(OUTDIR)build-rustc RUSTC=$(BINDIR)rustc_m CARGO_HOME=$(CARGO_HOME) RUSTC_ERROR_METADATA_DST=$(abspath $(PREFIX)) RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z force-unstable-if-unmarked" $(BINDIR)cargo build --manifest-path $(RUST_SRC)rustc/Cargo.toml --release -j 1 --verbose + $(BINDIR)hello_world: $(RUST_SRC)test/run-pass/hello.rs $(LIBDIR)libstd.rlib $(BINDIR)rustc @mkdir -p $(dir $@) @echo "[RUSTC] -o $@" |