summaryrefslogtreecommitdiff
path: root/codegen/bindings.rs
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/bindings.rs')
-rw-r--r--codegen/bindings.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/codegen/bindings.rs b/codegen/bindings.rs
new file mode 100644
index 0000000..d6b7e0d
--- /dev/null
+++ b/codegen/bindings.rs
@@ -0,0 +1,24 @@
+use std::error::Error;
+use std::path::Path;
+
+use bindgen::{CodegenConfig, MacroTypeVariation};
+
+pub fn generate_bindings(dest_file: &Path) -> Result<(), Box<dyn Error>>
+{
+ println!("cargo:rerun-if-changed=gl.h");
+
+ let bindings = bindgen::Builder::default()
+ .header("gl.h")
+ .default_macro_constant_type(MacroTypeVariation::Signed)
+ .with_codegen_config(CodegenConfig::all() & !CodegenConfig::FUNCTIONS)
+ .allowlist_type("GL.*")
+ .allowlist_type("_cl_.*")
+ .allowlist_var("GL_.*")
+ .blocklist_item("GL_Z4.*")
+ .blocklist_item("GL_Z6.*")
+ .generate()?;
+
+ bindings.write_to_file(dest_file)?;
+
+ Ok(())
+}