about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2019-09-09 10:31:22 -0700
committerAlex Crichton <alex@alexcrichton.com>2019-09-23 09:34:44 -0700
commit385470b8bb1250ac11276fa57a3d1fc1d9ffb710 (patch)
tree4360017db3983baf5db11f2151961cfc5d34d511
parentb3f95f460f6c35985bf7b3e6220b1370e0323312 (diff)
downloadrust-385470b8bb1250ac11276fa57a3d1fc1d9ffb710.tar.gz
rust-385470b8bb1250ac11276fa57a3d1fc1d9ffb710.zip
Move handling of `-Cprefer-dynamic` into `builder.rs`
This logic is *super* old and can be tweaked and moved into `builder.rs`
-rw-r--r--src/bootstrap/bin/rustc.rs7
-rw-r--r--src/bootstrap/builder.rs10
-rw-r--r--src/bootstrap/test.rs4
-rw-r--r--src/bootstrap/tool.rs4
4 files changed, 10 insertions, 15 deletions
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
index 528e7787610..0abfa023add 100644
--- a/src/bootstrap/bin/rustc.rs
+++ b/src/bootstrap/bin/rustc.rs
@@ -89,13 +89,6 @@ fn main() {
             cmd.arg("--sysroot").arg(&sysroot);
         }
 
-        // When we build Rust dylibs they're all intended for intermediate
-        // usage, so make sure we pass the -Cprefer-dynamic flag instead of
-        // linking all deps statically into the dylib.
-        if env::var_os("RUSTC_NO_PREFER_DYNAMIC").is_none() {
-            cmd.arg("-Cprefer-dynamic");
-        }
-
         // If we're compiling specifically the `panic_abort` crate then we pass
         // the `-C panic=abort` option. Note that we do not do this for any
         // other crate intentionally as this is the only crate for now that we
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 076947f8781..428926e106b 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -1227,6 +1227,16 @@ impl<'a> Builder<'a> {
 
         self.ci_env.force_coloring_in_ci(&mut cargo);
 
+        // When we build Rust dylibs they're all intended for intermediate
+        // usage, so make sure we pass the -Cprefer-dynamic flag instead of
+        // linking all deps statically into the dylib.
+        match mode {
+            Mode::Std | Mode::Rustc | Mode::Codegen => {
+                rustflags.arg("-Cprefer-dynamic");
+            }
+            _ => {}
+        }
+
         Cargo {
             command: cargo,
             rustflags,
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 90d1d9d6b7c..b7ce9c7b397 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -1814,10 +1814,6 @@ impl Step for Crate {
                     .expect("nodejs not configured"),
             );
         } else if target.starts_with("wasm32") {
-            // On the wasm32-unknown-unknown target we're using LTO which is
-            // incompatible with `-C prefer-dynamic`, so disable that here
-            cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
-
             let node = builder
                 .config
                 .nodejs
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index 553adb0ebb6..f1baeafe26a 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -234,10 +234,6 @@ pub fn prepare_tool_cargo(
     let dir = builder.src.join(path);
     cargo.arg("--manifest-path").arg(dir.join("Cargo.toml"));
 
-    // We don't want to build tools dynamically as they'll be running across
-    // stages and such and it's just easier if they're not dynamically linked.
-    cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
-
     if source_type == SourceType::Submodule {
         cargo.env("RUSTC_EXTERNAL_TOOL", "1");
     }