diff options
| author | bors <bors@rust-lang.org> | 2019-12-12 19:52:27 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-12-12 19:52:27 +0000 |
| commit | 3eeb8d4f2fbae0bb1c587d00b5abeaf938da47f4 (patch) | |
| tree | b34847e50618034373a8cea277b59839733e96da /src | |
| parent | e9469a6aec2f49fa1e2ae670649f293866932253 (diff) | |
| parent | 786b9d0d626dfbf97e64cd113bbcca08f65c3ca9 (diff) | |
| download | rust-3eeb8d4f2fbae0bb1c587d00b5abeaf938da47f4.tar.gz rust-3eeb8d4f2fbae0bb1c587d00b5abeaf938da47f4.zip | |
Auto merge of #67172 - jethrogb:jb/bootstrap-linker, r=alexcrichton
Bootstrap: change logic for choosing linker and rpath This is a follow-up from #66957 and #67023. Apparently there was one more location with a hard-coded list of targets to influence linking. I've filed #67171 to track this madness. r? @alexcrichton
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/builder.rs | 7 | ||||
| -rw-r--r-- | src/bootstrap/lib.rs | 8 | ||||
| -rw-r--r-- | src/bootstrap/util.rs | 13 |
3 files changed, 17 insertions, 11 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 5c0b43c1d24..fc1e1cf2b1d 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -981,7 +981,7 @@ impl<'a> Builder<'a> { // argument manually via `-C link-args=-Wl,-rpath,...`. Plus isn't it // fun to pass a flag to a tool to pass a flag to pass a flag to a tool // to change a flag in a binary? - if self.config.rust_rpath { + if self.config.rust_rpath && util::use_host_linker(&target) { let rpath = if target.contains("apple") { // Note that we need to take one extra step on macOS to also pass @@ -991,10 +991,7 @@ impl<'a> Builder<'a> { // flesh out rpath support more fully in the future. rustflags.arg("-Zosx-rpath-install-name"); Some("-Wl,-rpath,@loader_path/../lib") - } else if !target.contains("windows") && - !target.contains("wasm32") && - !target.contains("emscripten") && - !target.contains("fuchsia") { + } else if !target.contains("windows") { Some("-Wl,-rpath,$ORIGIN/../lib") } else { None diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 1f4a4f923e0..7f7e29108a8 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -805,12 +805,8 @@ impl Build { .and_then(|c| c.linker.as_ref()) { Some(linker) } else if target != self.config.build && - !target.contains("msvc") && - !target.contains("emscripten") && - !target.contains("wasm32") && - !target.contains("nvptx") && - !target.contains("fortanix") && - !target.contains("fuchsia") { + util::use_host_linker(&target) && + !target.contains("msvc") { Some(self.cc(target)) } else { None diff --git a/src/bootstrap/util.rs b/src/bootstrap/util.rs index 6f8a6308745..6824b7a58c4 100644 --- a/src/bootstrap/util.rs +++ b/src/bootstrap/util.rs @@ -15,6 +15,7 @@ use build_helper::t; use crate::config::Config; use crate::builder::Builder; +use crate::cache::Interned; /// Returns the `name` as the filename of a static library for `target`. pub fn staticlib(name: &str, target: &str) -> String { @@ -306,3 +307,15 @@ pub fn forcing_clang_based_tests() -> bool { false } } + +pub fn use_host_linker(target: &Interned<String>) -> bool { + // FIXME: this information should be gotten by checking the linker flavor + // of the rustc target + !( + target.contains("emscripten") || + target.contains("wasm32") || + target.contains("nvptx") || + target.contains("fortanix") || + target.contains("fuchsia") + ) +} |
