extern crate bindgen;
use std::env;
use std::path::PathBuf;
use std::process::Command;
fn main() {
let bindings = bindgen::Builder::default()
.no_unstable_rust()
.header("PCANBasic.h")
.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!");
let out_dir = env::var("OUT_DIR").unwrap();
if cfg!(windows) {
let machine = if cfg!(target_arch = "x86") {
"/Machine:X86"
} else if cfg!(target_arch = "x86_64") {
"/Machine:X64"
} else {
panic!("Unknown architecture");
};
let mut output_lib_path = PathBuf::from(&out_dir);
output_lib_path.push("PCANBasic.lib");
Command::new("lib.exe")
.args(&["/def:PCANBasic.def", &format!("/OUT:{}", output_lib_path.to_str().unwrap()), machine])
.status().expect("Could not run lib.exe");
}
println!("cargo:rustc-link-lib=PCANBasic");
println!("cargo:rustc-link-search=native={}", out_dir);
}