30 lines
1.1 KiB
Rust
30 lines
1.1 KiB
Rust
use pkg_config::Config;
|
|
|
|
fn main() {
|
|
let target_dir = std::env::var_os("CARGO_TARGET_DIR").unwrap();
|
|
|
|
// The main linking point with c++ code is the libbluetooth-static.a
|
|
// These includes all the symbols built via C++ but doesn't include other
|
|
// links (i.e. pkg-config)
|
|
println!("cargo:rustc-link-lib=static=bluetooth-static");
|
|
println!("cargo:rustc-link-search=native={}", target_dir.clone().into_string().unwrap());
|
|
// Also re-run the build if anything in the C++ build changes
|
|
println!("cargo:rerun-if-changed={}", target_dir.into_string().unwrap());
|
|
|
|
// A few dynamic links
|
|
println!("cargo:rustc-link-lib=dylib=flatbuffers");
|
|
println!("cargo:rustc-link-lib=dylib=protobuf");
|
|
println!("cargo:rustc-link-lib=dylib=resolv");
|
|
|
|
// Clang requires -lc++ instead of -lstdc++
|
|
println!("cargo:rustc-link-lib=c++");
|
|
|
|
// A few more dependencies from pkg-config. These aren't included as part of
|
|
// the libbluetooth-static.a
|
|
Config::new().probe("libchrome").unwrap();
|
|
Config::new().probe("libmodp_b64").unwrap();
|
|
Config::new().probe("tinyxml2").unwrap();
|
|
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
}
|