use std::env;
use std::path::PathBuf;
fn init_bindgen_builder(header: impl Into<String>) -> bindgen::Builder {
bindgen::Builder::default()
.header(header)
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
.layout_tests(false)
.raw_line("#![allow(non_upper_case_globals)]")
.raw_line("#![allow(non_camel_case_types)]")
.raw_line("#![allow(non_snake_case)]")
.raw_line("#![allow(dead_code)]")
}
fn main() {
let hw_dcmi_path = env::var("HW_DCMI_PATH").unwrap_or_else(|_| "/usr/local/dcmi".to_string());
let interface_path = format!("{}/dcmi_interface_api.h", hw_dcmi_path);
println!("cargo:rustc-link-search=native={}", hw_dcmi_path);
#[cfg(not(feature = "load_dynamic"))]
println!("cargo:rustc-link-lib=dylib=dcmi");
let builder = init_bindgen_builder(interface_path);
#[cfg(feature = "load_dynamic")]
let builder = builder
.dynamic_library_name("dcmi")
.dynamic_link_require_all(true);
let bindings = builder
.generate()
.expect("Unable to generate bindings");
#[cfg(feature = "load_dynamic")]
let out_path =
PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("src/bindings_dyn.rs");
#[cfg(not(feature = "load_dynamic"))]
let out_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("src/bindings.rs");
bindings
.write_to_file(out_path)
.expect("Couldn't write bindings!");
}