fn main() {
println!("cargo:rerun-if-changed=src/ffi.rs");
println!("cargo:rerun-if-changed=src/lib.rs");
println!("cargo:rerun-if-changed=cbindgen.toml");
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("macos") {
println!("cargo:rustc-cdylib-link-arg=-Wl,-install_name,@rpath/libvmette.dylib");
}
#[cfg(feature = "regenerate-header")]
regenerate_header();
}
#[cfg(feature = "regenerate-header")]
fn regenerate_header() {
use std::env;
use std::path::PathBuf;
let crate_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR"));
let include_dir = crate_dir.join("include");
let _ = std::fs::create_dir_all(&include_dir);
let header_path = include_dir.join("vmette.h");
let config =
cbindgen::Config::from_file(crate_dir.join("cbindgen.toml")).expect("read cbindgen.toml");
match cbindgen::Builder::new()
.with_crate(&crate_dir)
.with_config(config)
.generate()
{
Ok(bindings) => {
bindings.write_to_file(&header_path);
}
Err(e) => {
println!("cargo:warning=cbindgen failed: {e}");
}
}
}