OpenBSD has two stdc++ libraries: use the newer

stdc++ is from base, and is an old library (GCC 4.2)
estdc++ is from ports, and is a recent library (GCC 4.9 currently)

as LLVM requires the newer version, use it if under OpenBSD.
This commit is contained in:
Sébastien Marie 2016-12-18 18:31:42 +01:00
parent a7d9025e40
commit 2c39ee12a9

View file

@ -230,6 +230,13 @@ fn main() {
}
}
// OpenBSD has a particular C++ runtime library name
let stdcppname = if target.contains("openbsd") {
"estdc++"
} else {
"stdc++"
};
// C++ runtime library
if !target.contains("msvc") {
if let Some(s) = env::var_os("LLVM_STATIC_STDCPP") {
@ -237,11 +244,11 @@ fn main() {
let path = PathBuf::from(s);
println!("cargo:rustc-link-search=native={}",
path.parent().unwrap().display());
println!("cargo:rustc-link-lib=static=stdc++");
println!("cargo:rustc-link-lib=static={}", stdcppname);
} else if cxxflags.contains("stdlib=libc++") {
println!("cargo:rustc-link-lib=c++");
} else {
println!("cargo:rustc-link-lib=stdc++");
println!("cargo:rustc-link-lib={}", stdcppname);
}
}
}