use cmake;
use std::{
env,
path::{Path, PathBuf},
process::Command,
};
#[allow(unused_macros)]
macro_rules! p {
($($tokens: tt)*) => {
println!("cargo:warning={}", format!($($tokens)*))
}
}
fn main() {
if let Ok(include_dir) = env::var("APRIL_INCLUDE_DIR") {
println!("cargo:include={}", include_dir);
}
if !Path::new("vendor/april-asr").exists() {
let _ = Command::new("git")
.args(&["submodule", "update", "--init", "vendor/april-asr"])
.status();
}
println!("cargo:rerun-if-changed=vendor/april-asr/april_api.h");
println!("cargo:rerun-if-changed=wrapper.h");
let dst = cmake::Config::new("vendor/april-asr").build().join("build");
println!("cargo:rustc-link-search=native={}", dst.display());
println!("cargo:rustc-link-lib=aprilasr");
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
.generate()
.expect("Couldn't 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!")
}