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
This commit is contained in:
pweyck 2016-11-06 11:45:21 +01:00
parent 161f2623bd
commit bcfbbd8645

View File

@ -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");
}