summaryrefslogtreecommitdiff
path: root/dhcp-client/build.rs
diff options
context:
space:
mode:
authorAntonio Cardace <acardace@redhat.com>2020-08-11 18:55:06 +0200
committerAntonio Cardace <acardace@redhat.com>2020-08-21 10:15:31 +0200
commit6451fe9202904e8110ebdd0b372c1e04ecbdfc87 (patch)
tree4e8ae57641397212353a60b20b4228701f56723d /dhcp-client/build.rs
parentbc0d4e610f261ed0718aa6f9b0ec87f8f033af44 (diff)
downloadNetworkManager-ac/dhcp_rust.tar.gz
ndhcp4: trying sandboxing with rustac/dhcp_rust
Diffstat (limited to 'dhcp-client/build.rs')
-rw-r--r--dhcp-client/build.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/dhcp-client/build.rs b/dhcp-client/build.rs
new file mode 100644
index 0000000000..966c965092
--- /dev/null
+++ b/dhcp-client/build.rs
@@ -0,0 +1,43 @@
+use bindgen;
+use meson;
+use std::env;
+use std::path::PathBuf;
+use varlink_generator;
+
+fn main() {
+ let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
+ let meson_path = out_path.join("build");
+ let build_path_ndhcp4 = meson_path.join("src");
+ let build_path_c_siphash = meson_path.join("subprojects/c-siphash/src");
+
+ meson::build("n-dhcp4", meson_path.to_str().unwrap());
+
+ bindgen::Builder::default()
+ // The input header we would like to generate
+ // bindings for.
+ .header("wrapper.h")
+ .clang_arg("-In-dhcp4/src")
+ // Tell cargo to invalidate the built crate whenever any of the
+ // included header files changed.
+ .parse_callbacks(Box::new(bindgen::CargoCallbacks))
+ // Finish the builder and generate the bindings.
+ .generate()
+ // Unwrap the Result and panic on failure.
+ .expect("Unable to generate bindings")
+ .write_to_file(out_path.join("bindings.rs"))
+ .expect("Couldn't write bindings!");
+
+ println!("cargo:rerun-if-changed=wrapper.h");
+ println!("cargo:rustc-link-lib=static=ndhcp4-private");
+ println!("cargo:rustc-link-lib=static=csiphash-private");
+ println!(
+ "cargo:rustc-link-search={}",
+ build_path_ndhcp4.to_str().unwrap()
+ );
+ println!(
+ "cargo:rustc-link-search={}",
+ build_path_c_siphash.to_str().unwrap()
+ );
+
+ varlink_generator::cargo_build_tosource("src/com.redhat.dhcp", true);
+}