use bindgen;
use cc;
use std::env;
use std::path::{Path, PathBuf};
fn main() {
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
assert!(
Path::new("extern/auto_casadi_constraints_type_penalty.c").exists(),
"extern/auto_casadi_cost.c is missing"
);
assert!(
Path::new("extern/auto_casadi_cost.c").exists(),
"extern/auto_casadi_cost.c is missing"
);
assert!(
Path::new("extern/auto_casadi_grad.c").exists(),
"extern/auto_casadi_grad.c is missing"
);
assert!(
Path::new("extern/icasadi.c").exists(),
"extern/icasadi.c is missing"
);
assert!(
Path::new("extern/icasadi.h").exists(),
"extern/icasadi.h is missing"
);
assert!(
Path::new("extern/icasadi_config.h").exists(),
"extern/icasadi_config.h is missing"
);
cc::Build::new()
.flag_if_supported("-Wall")
.flag_if_supported("-Wpedantic")
.flag_if_supported("-Wno-long-long")
.flag_if_supported("-Wno-unused-parameter")
.pic(true)
.include("src")
.file("extern/auto_casadi_cost.c")
.file("extern/auto_casadi_grad.c")
.file("extern/auto_casadi_constraints_type_penalty.c")
.file("extern/icasadi.c")
.compile("icasadi");
bindgen::Builder::default()
.header("extern/icasadi_config.h")
.generate()
.expect("Unable to generate bindings")
.write_to_file(out_path.join("bindings.rs"))
.expect("Couldn't write bindings!");
println!("cargo:rerun-if-changed=extern/auto_casadi_cost.c");
println!("cargo:rerun-if-changed=extern/auto_casadi_grad.c");
println!("cargo:rerun-if-changed=extern/auto_casadi_constraints_type_penalty.c");
println!("cargo:rerun-if-changed=extern/icasadi.c");
println!("cargo:rerun-if-changed=extern/icasadi.h");
println!("cargo:rerun-if-changed=extern/icasadi_config.h");
}