in tpm/tss-minimal/rc-sys/build.rs [6:49]
fn main() {
println!("cargo:rerun-if-changed=wrapper.h");
println!("cargo:rerun-if-env-changed=VENDOR_PREFIX");
println!("cargo:rerun-if-env-changed=VENDOR_PKGCONFIG");
if let Some((fakeroot, pkgconfig)) =
std::env::var_os("VENDOR_PREFIX").zip(std::env::var_os("VENDOR_PKGCONFIG"))
{
if std::path::Path::new(&fakeroot).exists() {
std::env::set_var("PKG_CONFIG_SYSROOT_DIR", fakeroot);
std::env::set_var("PKG_CONFIG_PATH", pkgconfig);
}
}
let lib_cfg = pkg_config::Config::new()
.atleast_version("2.3.0") // tss2-rc introduction
.probe("tss2-rc")
.unwrap();
for lib in lib_cfg.libs {
println!("cargo:rustc-link-lib={lib}");
}
for path in lib_cfg.link_paths {
println!("cargo:rustc-link-search={}", path.to_str().unwrap());
}
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.allowlist_function("Tss2_RC_Decode")
.clang_args(
lib_cfg
.include_paths
.into_iter()
.map(|path| format!("-I{}", path.to_str().unwrap())),
)
.generate()
.unwrap();
let out_path = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap());
bindings
.write_to_file(out_path.join("bindings.rs"))
.unwrap();
}