fwd/vendor/link-cplusplus/build.rs
John Doty 9c435dc440 Vendor dependencies
Let's see how I like this workflow.
2022-12-19 08:38:22 -08:00

34 lines
1,016 B
Rust

use std::env;
use std::fs;
use std::path::PathBuf;
fn main() {
println!("cargo:rerun-if-changed=build.rs");
let libstdcxx = cfg!(feature = "libstdc++");
let libcxx = cfg!(feature = "libc++");
let nothing = cfg!(feature = "nothing");
if nothing {
return;
}
if libstdcxx && libcxx {
println!(
"cargo:warning=-lstdc++ and -lc++ are both requested, \
using the platform's default"
);
}
match (libstdcxx, libcxx) {
(true, false) => println!("cargo:rustc-link-lib=stdc++"),
(false, true) => println!("cargo:rustc-link-lib=c++"),
(false, false) | (true, true) => {
// The platform's default.
let out_dir = env::var_os("OUT_DIR").expect("missing OUT_DIR");
let path = PathBuf::from(out_dir).join("dummy.cc");
fs::write(&path, "int rust_link_cplusplus;\n").unwrap();
cc::Build::new().cpp(true).file(&path).compile("link-cplusplus");
}
}
}