build.rs 920 B

123456789101112131415161718192021222324252627282930313233
  1. use std::{
  2. io::{stderr, Write},
  3. path::PathBuf,
  4. };
  5. fn main() {
  6. let headers = ["rust-headers.hpp"];
  7. let bindings = bindgen::Builder::default()
  8. .use_core()
  9. .ctypes_prefix("core::ffi")
  10. .headers(headers)
  11. .clang_arg("-I./gblibc/include")
  12. .clang_arg("-std=c++20")
  13. .opaque_type("std::.*")
  14. .enable_cxx_namespaces()
  15. .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
  16. .generate()
  17. .expect("Unable to generate bindings");
  18. let out_path = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
  19. let out = bindings.write_to_file(out_path.join("src/bindings.rs"));
  20. if let Err(err) = out {
  21. writeln!(
  22. stderr().lock(),
  23. "out_dir = {}",
  24. out_path.as_path().display()
  25. )
  26. .unwrap();
  27. Result::<(), _>::Err(err).expect("Couldn't write bindings!");
  28. }
  29. }