extern crate bindgen;
use std::{
env,
path::{Path, PathBuf},
};
fn main() {
let delight = match &env::var("DELIGHT") {
Err(_) => {
#[cfg(target_os="windows")]
{
panic!("Please download & install 3Delight from https://www.3delight.com/download before building this crate");
}
eprintln!("Building against 3Delight 2.1.2 shipped with crate");
env::var("CARGO_MANIFEST_DIR").unwrap()
}
Ok(path) => {
eprintln!("Building against locally installed 3Delight @ {}", &path);
path.to_string()
}
};
println!(
"cargo:rustc-link-search={}",
Path::new(&delight).join("lib").display()
);
println!("cargo:rustc-link-lib=3delight");
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.clang_arg(format!(
"-I{}",
Path::new(&delight).join("include").display()
))
.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.");
}