diff --git a/run_rustc/Makefile b/run_rustc/Makefile index e78d8c51..cc9f785e 100644 --- a/run_rustc/Makefile +++ b/run_rustc/Makefile @@ -150,14 +150,23 @@ $(CARGO_HOME)config: Makefile $Vecho "[source.vendored-sources]" >> $@ $Vecho "directory = \"$(abspath $(VENDOR_DIR))\"" >> $@ +self-contained: + mkdir -p $@ + (set -o braceexpand && ln -s \ + /system/lib/{'rcrt1.o','crti.o','crtn.o'} \ + /system/lib/gcc/"$(ROSA_TRIPLE)"/"$(shell gcc -dumpfullversion)"/{'crtbeginS.o','crtendS.o'} \ + /system/lib/"$(ROSA_TRIPLE)"/* \ + $@) + # ------------------------------------- # Stage 1: Build standard library (using minicargo with rustc) # - Can't use `cargo` because there isn't a rustc-compatible std yet # - _could_ use it if mrustc accepted all the arguments rustc does (via the proxy) # ------------------------------------- -$(LIBDIR_S)libstd.rlib: $(BINDIR_S)rustc $(MINICARGO) Makefile +$(LIBDIR_S)libstd.rlib: self-contained $(BINDIR_S)rustc $(MINICARGO) Makefile @echo "[MINICARGO] $(RUST_SRC_LIBS)std > $(LIBDIR_S)" - mkdir -p $(LIBDIR_S) + @mkdir -p $(LIBDIR_S) + @ln -sf ../../../../../../self-contained $(LIBDIR_S) ifneq ($(TARGETVER_LEAST_1_74),) $V+STD_ENV_ARCH=$(RUSTC_ARCH) MRUSTC_PATH=$(abspath $(BINDIR_S)rustc) $(MINICARGO) --vendor-dir $(VENDOR_DIR) --script-overrides ../script-overrides/stable-$(RUSTC_VERSION)-$(PLATFORM)/ --output-dir $(LIBDIR_S) $(RUST_SRC_LIBS)sysroot else @@ -178,6 +187,7 @@ CARGO_OUTDIR_STAGE2_STD := $(OUTDIR)build-std2/$(RUSTC_TARGET)/release/ CARGO_ENV_STAGE2_STD := CARGO_TARGET_DIR=$(OUTDIR)build-std2 RUSTC=$(abspath rustc_proxy.sh) PROXY_RUSTC=$(abspath $(BINDIR_2)rustc) PROXY_MRUSTC=$(abspath $(BINDIR_S)rustc) $(CARGO_ENV) $(LIBDIR_2)libtest.rlib: $(LIBDIR_S)libstd.rlib $(BINDIR_2)rustc $(BINDIR_S)rustc $(BINDIR_S)cargo $(CARGO_HOME)config Makefile @mkdir -p $(LIBDIR_2) + @ln -sf ../../../../../../self-contained $(LIBDIR_2) @echo [CARGO] $(RUST_SRC_LIBS)test/Cargo.toml '>' $(OUTDIR)build-std2 ifneq ($(TARGETVER_LEAST_1_74),) $V$(CARGO_ENV_STAGE2_STD) $(BINDIR_S)cargo build $(CARGO_FLAGS) --manifest-path $(RUST_SRC_LIBS)sysroot/Cargo.toml --features panic-unwind @@ -215,6 +225,7 @@ else @echo "[CP] libraries and results ($@)" endif @mkdir -p $(LIBDIR) + @ln -sf ../../../../../../self-contained $(LIBDIR) $Vcp $(LIBDIR_2)*.$(DYLIB_EXT) $(PREFIX)lib $Vcp $(CARGO_OUTDIR_RUSTC)deps/*.rlib $(LIBDIR) $Vcp $(CARGO_OUTDIR_RUSTC)deps/*.$(DYLIB_EXT) $(LIBDIR) @@ -243,6 +254,7 @@ CARGO_OUTDIR_STAGE3_STD := $(OUTDIR)build-std/$(RUSTC_TARGET)/release/ CARGO_ENV_STAGE3_STD := CARGO_TARGET_DIR=$(OUTDIR)build-std RUSTC=$(abspath rustc_proxy.sh) PROXY_RUSTC=$(abspath $(BINDIR)rustc) PROXY_MRUSTC=$(abspath $(BINDIR_2)rustc) $(CARGO_ENV) $(LIBDIR)libstd.rlib: $(BINDIR)rustc @mkdir -p $(LIBDIR) + @ln -sf ../../../../../../self-contained $(LIBDIR) @echo [CARGO] $(RUST_SRC_LIBS)test/Cargo.toml '>' $(OUTDIR)build-std2 ifneq ($(TARGETVER_LEAST_1_74),) $V$(CARGO_ENV_STAGE3_STD) $(BINDIR_S)cargo build $(CARGO_FLAGS) --manifest-path $(RUST_SRC_LIBS)sysroot/Cargo.toml --features panic-unwind