extern crate autotools;
extern crate bindgen;
use fs_extra::dir;
use std::env;
use std::path::PathBuf;
fn main() {
println!("cargo:rerun-if-changed=build.rs");
let out_dir = env::var("OUT_DIR").unwrap();
let freesasa_dir = PathBuf::from(&out_dir).join("freesasa");
let freesasa_src = PathBuf::from("freesasa");
let mut copy_options = dir::CopyOptions::new();
copy_options.overwrite = true;
dir::copy(&freesasa_src, &out_dir, ©_options).unwrap();
let dst = autotools::Config::new(&freesasa_dir)
.reconf("-i")
.config_option("disable-json", None)
.config_option("disable-xml", None)
.build();
println!(
"cargo:rustc-link-search=native={}",
dst.join("lib").display()
);
println!("cargo:rustc-link-lib=static=freesasa");
let header = env::var("OUT_DIR").unwrap() + "/include/freesasa.h";
let bindings = bindgen::Builder::default()
.header(header)
.merge_extern_blocks(true)
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.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!");
dir::remove(&freesasa_dir).unwrap();
}