28 lines
1.1 KiB
Rust
28 lines
1.1 KiB
Rust
use std::path::PathBuf;
|
|
|
|
fn main() {
|
|
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
|
let lib_dir = manifest_dir.join("..").join("bench").join("moonshine-voice").join("lib");
|
|
let include_dir = manifest_dir.join("..").join("bench").join("moonshine-voice").join("include");
|
|
let header = include_dir.join("moonshine-c-api.h");
|
|
|
|
println!("cargo:rerun-if-changed={}", header.display());
|
|
println!("cargo:rustc-link-search=native={}", lib_dir.display());
|
|
println!("cargo:rustc-link-lib=dylib=moonshine");
|
|
println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display());
|
|
|
|
let bindings = bindgen::Builder::default()
|
|
.header(header.to_str().unwrap())
|
|
.allowlist_function("moonshine_.*")
|
|
.allowlist_var("MOONSHINE_.*")
|
|
.allowlist_type("transcript.*|moonshine_option_t|speaker_span_t|transcript_word_t")
|
|
.derive_default(true)
|
|
.generate()
|
|
.expect("Unable to generate moonshine bindings");
|
|
|
|
let out_path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
|
bindings
|
|
.write_to_file(out_path.join("moonshine_bindings.rs"))
|
|
.expect("Couldn't write bindings");
|
|
}
|