diff options
| author | pweyck <pweyck@users.noreply.github.com> | 2016-11-06 11:45:21 +0100 |
|---|---|---|
| committer | pweyck <pweyck@users.noreply.github.com> | 2016-11-06 16:33:34 +0100 |
| commit | bcfbbd864561a9aa64b9e5908a62eaa2123c5764 (patch) | |
| tree | e658d615f4d144c412ad732b0b03593256c184eb | |
| parent | 161f2623bd078017dfc9a06bd3417b36f6a58de9 (diff) | |
| download | rust-bcfbbd864561a9aa64b9e5908a62eaa2123c5764.tar.gz rust-bcfbbd864561a9aa64b9e5908a62eaa2123c5764.zip | |
Force static linking of LLVM
Run llvm-config with "--link-static" if available, to force static linking of LLVM. This option was added in LLVM 3.8. Fixes #36854 See also: #36996
| -rw-r--r-- | src/librustc_llvm/build.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs index 35140d5ab4a..4d3a4d09dce 100644 --- a/src/librustc_llvm/build.rs +++ b/src/librustc_llvm/build.rs @@ -128,6 +128,19 @@ fn main() { // of llvm-config, not the target that we're attempting to link. let mut cmd = Command::new(&llvm_config); cmd.arg("--libs"); + + // Force static linking with "--link-static" if available. + let mut version_cmd = Command::new(&llvm_config); + version_cmd.arg("--version"); + let version_output = output(&mut version_cmd); + let mut parts = version_output.split('.'); + if let (Some(major), Some(minor)) = (parts.next().and_then(|s| s.parse::<u32>().ok()), + parts.next().and_then(|s| s.parse::<u32>().ok())) { + if major > 3 || (major == 3 && minor >= 8) { + cmd.arg("--link-static"); + } + } + if !is_crossed { cmd.arg("--system-libs"); } |
