| 123456789101112131415161718192021222324252627282930313233343536373839 |
- extern crate bindgen;
- use std::env;
- use std::path::PathBuf;
- use std::process::Command;
- fn main() {
- let out_dir = env::var("OUT_DIR").expect("No out dir");
- println!("cargo:rustc-link-lib=murmur3");
- println!("cargo:rustc-link-search=native={}", &out_dir);
- let bindings = bindgen::Builder::default()
- .header("murmur3.h")
- .generate()
- .expect("Unable to generate bindings");
- let target_os = std::env::var_os("CARGO_CFG_TARGET_OS").expect("No target OS");
- if target_os == "linux" {
- assert!(Command::new("make")
- .arg("shared")
- .status()
- .expect("Building C lib failed")
- .success());
- } else if target_os == "macos" {
- assert!(Command::new("make")
- .arg("shared-mac")
- .status()
- .expect("Building C lib failed")
- .success());
- } else {
- panic!("Unsupported OS: {:?}", target_os);
- }
- // Write the bindings to the $OUT_DIR/bindings.rs file.
- let out_path = PathBuf::from(out_dir);
- bindings
- .write_to_file(out_path.join("bindings.rs"))
- .expect("Couldn't write bindings!");
- }
|