mirror of
https://gitee.com/openharmony/third_party_rust_link-cplusplus
synced 2024-11-26 17:10:38 +00:00
35 lines
1016 B
Rust
35 lines
1016 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");
|
|
}
|
|
}
|
|
}
|