use std::{ env, path::{self, PathBuf}, }; fn find_mgba_library() -> Option<&'static str> { const POTENTIAL_LIBRARY_LOCATIONS: &[&str] = &["/usr/lib/libmgba.so.0.9", "/usr/local/lib/libmgba.so.0.9"]; POTENTIAL_LIBRARY_LOCATIONS .iter() .find(|file_path| path::Path::new(file_path).exists()) .copied() } fn main() { let mgba_library = find_mgba_library().expect("Need mgba 0.9 installed"); cc::Build::new() .file("c/test-runner.c") .object(mgba_library) .include("c/include") .compile("test-runner"); let bindings = bindgen::Builder::default() .header("c/test-runner.h") .generate() .expect("Unable to generate bindings"); let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); bindings .write_to_file(out_path.join("runner-bindings.rs")) .expect("Couldn't write bindings!"); }