use std::{env, path::PathBuf}; #[cfg(feature = "wayland")] const GLFW_USE_WAYLAND: &str = "ON"; #[cfg(not(feature = "wayland"))] const GLFW_USE_WAYLAND: &str = "OFF"; fn main() { let bindgen_builder = bindgen::Builder::default() .header("wrapper.h") .allowlist_function("glfw.*") .allowlist_var("GLFW.*"); #[cfg(feature = "wayland")] let bindgen_builder = bindgen_builder.clang_arg("-DGLFW_BINDGEN_FEATURE_WAYLAND"); let bindings = bindgen_builder .generate() .expect("Failed to generate bindings"); let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); bindings .write_to_file(out_path.join("bindings.rs")) .expect("Failed to write bindings"); let libdir = "lib"; let cmake = cmake::Config::new("./glfw") .define("CMAKE_INSTALL_LIBDIR", libdir) .define("GLFW_BUILD_DOCS", "OFF") .define("GLFW_BUILD_EXAMPLES", "OFF") .define("GLFW_BUILD_TESTS", "OFF") .define("GLFW_USE_WAYLAND", GLFW_USE_WAYLAND) .build(); println!( "cargo:rustc-link-search=native={}", cmake.join(libdir).display() ); }