extern crate bindgen;
use std::env;
use std::fs;
use std::path::PathBuf;
#[cfg(windows)]
mod build_win;
#[cfg(target_os = "macos")]
mod build_mac;
fn main() {
println!("cargo:rerun-if-changed=wrapper.h");
#[cfg(not(target_os = "macos"))]
println!("cargo:rustc-link-lib=dylib=obs");
#[cfg(target_os = "macos")]
println!("cargo:rustc-link-lib=dylib=obs.0");
#[cfg(windows)]
build_win::find_windows_obs_lib();
#[cfg(target_os = "macos")]
build_mac::find_mac_obs_lib();
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()).join("bindings.rs");
if let Ok(bindings) = bindgen::Builder::default()
.header("wrapper.h")
.blocklist_type("_bindgen_ty_2")
.blocklist_type("_bindgen_ty_3")
.blocklist_type("_bindgen_ty_4")
.derive_default(true)
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.generate()
{
bindings
.write_to_file(&out_path)
.expect("Couldn't write bindings!");
fs::copy(&out_path, "generated/bindings.rs").expect("Could not copy bindings!");
} else {
if env::var("DONT_USE_GENERATED_BINDINGS").is_ok() {
panic!("Could not find obs headers - aborting!");
}
println!("cargo:warning=Could not find obs headers - using pre-compiled.");
println!("cargo:warning=This could result in a library that doesn't work.");
fs::copy("generated/bindings.rs", out_path).expect("Could not copy bindings!");
}
}