use std::{env, path::Path}; fn main() { let out_dir = env::var("OUT_DIR").unwrap(); let out_dir = Path::new(&out_dir); // TODO: add better error handling for when GGWAVE_PATH is not set let ggwave_path = env::var("GGWAVE_PATH").unwrap(); let ggwave_path = Path::new(&ggwave_path); let ggwave_lib_dir = ggwave_path.join("lib"); let ggwave_include_dir = ggwave_path.join("include"); println!("cargo:rustc-link-search=native={ggwave_lib_dir:?}"); println!("cargo:rustc-link-lib=ggwave"); let bindings = bindgen::Builder::default() .header(ggwave_include_dir.join("ggwave/ggwave.h").to_string_lossy()) .clang_args(["-x", "c++"]) .derive_debug(true) .derive_default(true) .generate() .unwrap(); let bindings_path = out_dir.join("bindings.rs"); bindings.write_to_file(&bindings_path).unwrap(); }