extern crate bindgen;
#[cfg(feature = "pkg-config")]
extern crate pkg_config;
use std::env;
use std::path::PathBuf;
fn main() {
print_libdir();
println!("cargo:rustc-link-lib=dylib=elektra-core");
println!("cargo:rustc-link-lib=dylib=elektra-meta");
println!("cargo:rustc-link-lib=dylib=elektra-kdb");
let elektra_include_dir = get_include_dir();
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.whitelist_function("(key|ks|kdb).*")
.whitelist_var("(KEY|KDB).*")
.clang_arg(format!("-I{}", elektra_include_dir))
.clang_arg("-I/usr/local/include/elektra")
.generate()
.expect("Unable to generate bindings");
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindings
.write_to_file(out_path.join("bindings.rs"))
.expect("Couldn't write bindings!");
}
fn get_include_dir() -> String {
#[cfg(feature = "pkg-config")]
return pkg_config::get_variable("elektra", "includedir").unwrap_or_else(|e| panic!("pkg_config error {}", e));
#[cfg(not(feature = "pkg-config"))]
"/usr/include/elektra".to_owned()
}
fn print_libdir() {
#[cfg(feature = "pkg-config")]
println!("cargo:rustc-link-search={}", pkg_config::get_variable("elektra", "libdir").unwrap_or_else(|e| panic!("pkg_config error {}", e)));
}