extern crate bindgen;
extern crate fs_utils;
use fs_utils::copy::copy_directory;
use std::env;
use std::path::PathBuf;
use std::process::Command;
fn main() {
let out = PathBuf::from(env::var("OUT_DIR").unwrap());
if !out.join("htslib").exists() {
copy_directory("htslib", &out).unwrap();
}
if Command::new("make")
.current_dir(out.join("htslib"))
.arg("CFLAGS=-g -Wall -O2 -fPIC")
.arg("lib-static")
.arg("-B")
.status()
.unwrap()
.success() != true
{
panic!("failed to build htslib");
}
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.generate_comments(false)
.blacklist_type("max_align_t")
.generate()
.expect("Unable to generate bindings.");
bindings
.write_to_file(out.join("bindings.rs"))
.expect("Could not write bindings.");
println!(
"cargo:rustc-flags=-L {out}/htslib -L {out} -l static=hts -l z -l lzma -l bz2",
out = out.to_str().unwrap()
);
}