diff --git a/run_rustc/Makefile b/run_rustc/Makefile index e78d8c5..00162a7 100644 --- a/run_rustc/Makefile +++ b/run_rustc/Makefile @@ -108,7 +108,7 @@ CARGO_FLAGS := --target $(RUSTC_TARGET) -j $(PARLEVEL) --release --verbose CARGO_ENV := CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) CARGO_ENV += RUSTC_BOOTSTRAP=1 CARGO_ENV += CARGO_HOME=$(CARGO_HOME) -CARGO_ENV += RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$$ORIGIN/../lib -C target-feature=-crt-static" +CARGO_ENV += RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$$ORIGIN/../lib -C target-feature=-crt-static -C link-self-contained=no" fn_opt_copy = (test -e "$2" && test ! "$1" -nt "$2") || cp "$1" "$2" @@ -159,7 +159,7 @@ $(LIBDIR_S)libstd.rlib: $(BINDIR_S)rustc $(MINICARGO) Makefile @echo "[MINICARGO] $(RUST_SRC_LIBS)std > $(LIBDIR_S)" mkdir -p $(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 + $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) --target $(RUSTC_TARGET) $(RUST_SRC_LIBS)sysroot else $V+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)std $V+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)panic_unwind @@ -169,7 +169,7 @@ endif # Build hello_world using the bootstrapping compiler (mrustc-built rustc) $(BINDIR_S)hello_world: $(RUST_SRC_HELLO) $(LIBDIR_S)libstd.rlib $(BINDIR_S)rustc @mkdir -p $(dir $@) - $V$(BINDIR_S)rustc $(RUSTFLAGS_$@) -L $(LIBDIR_S) $< -o $@ + $V$(BINDIR_S)rustc $(RUSTFLAGS_$@) --target $(RUSTC_TARGET) -C target-feature=-crt-static -C link-self-contained=no -L $(LIBDIR_S) $< -o $@ # --- # Stage 2: Build a proper libstd (which includes dynamc libraries too) @@ -259,7 +259,7 @@ endif $(BINDIR)hello_world: $(RUST_SRC_HELLO) $(BINDIR)rustc $(LIBDIR)libstd.rlib @mkdir -p $(dir $@) @echo "[RUSTC] -o $@" - $V$(DBG) $(BINDIR)rustc -L $(LIBDIR) $< -o $@ + $V$(DBG) $(BINDIR)rustc --target $(RUSTC_TARGET) -C target-feature=-crt-static -C link-self-contained=no -L $(LIBDIR) $< -o $@ ./$@ #.PHONY: TEST_BOOTSTRAP diff --git a/run_rustc/rustc_proxy.sh b/run_rustc/rustc_proxy.sh index 3f4f2b9..78f6f1d 100755 --- a/run_rustc/rustc_proxy.sh +++ b/run_rustc/rustc_proxy.sh @@ -17,7 +17,12 @@ if is_target "$@"; then #echo " [REAL]" "$@" >&2 ${PROXY_RUSTC} "$@" else + # Host (build-script / proc-macro) build. With the musl-host stage0 rustc its + # default target IS x86_64-unknown-linux-musl, so no --target inject is needed + # (host==target==musl, proc-macros load natively). Just force dynamic + + # non-self-contained so the Alpine gcc supplies the CRT (the mrustc sysroot has + # no self-contained CRT dir, and musl's default is static-pie). #echo " [BOOTSTRAP]" "$@" >&2 - ${PROXY_MRUSTC} "$@" + ${PROXY_MRUSTC} -C target-feature=-crt-static -C link-self-contained=no "$@" fi