aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2022-05-30-cmake-cargo-example/libcalc/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'content/2022-05-30-cmake-cargo-example/libcalc/build.rs')
-rw-r--r--content/2022-05-30-cmake-cargo-example/libcalc/build.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/content/2022-05-30-cmake-cargo-example/libcalc/build.rs b/content/2022-05-30-cmake-cargo-example/libcalc/build.rs
new file mode 100644
index 0000000..acfa6a7
--- /dev/null
+++ b/content/2022-05-30-cmake-cargo-example/libcalc/build.rs
@@ -0,0 +1,24 @@
+fn main() {
+ let crate_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
+
+ let out_file = format!("{}/libcalc.h", std::env::var("LIBCALC_BUILD_DIR").unwrap_or(String::from(".")));
+
+ let cfg = cbindgen::Config {
+ cpp_compat: true,
+ ..Default::default()
+ };
+
+ if std::path::Path::new(&out_file).exists() {
+ std::fs::remove_file(&out_file).unwrap();
+ }
+
+ let ok = cbindgen::Builder::new()
+ .with_config(cfg)
+ .with_crate(crate_dir)
+ .with_language(cbindgen::Language::C)
+ .with_include_guard("LIBCALC_H")
+ .generate()
+ .expect("Unable to generate bindings")
+ .write_to_file(&out_file);
+ assert!(ok);
+}