From b921aee04c65e607409dd435ca77d1c77303dbfc Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 5 Dec 2018 21:45:11 +0100 Subject: version 0.1 --- build.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 build.rs (limited to 'build.rs') diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..5372e3a --- /dev/null +++ b/build.rs @@ -0,0 +1,49 @@ +extern crate bindgen; +extern crate pkg_config; + +use std::env; +use std::path::PathBuf; + +fn print_library(lib: &pkg_config::Library) { + for p in &lib.include_paths { + println!("cargo:include={}", p.display()); + } + + for p in &lib.frameworks { + println!("cargo:rustc-link-lib=framework={}", p); + } + + for p in &lib.framework_paths { + println!("cargo:rustc-link-search=framework={}", p.display()); + } + + for p in &lib.libs { + println!("cargo:rustc-link-lib=dylib={}", p); + } + + for p in &lib.link_paths { + println!("cargo:rustc-link-search=native={}", p.display()); + } +} + +fn main() { + let libical = pkg_config::Config::new().atleast_version("3.0.0").probe("libical").unwrap(); + + print_library(&libical); + + let mut builder = bindgen::Builder::default() + .header("bindgen-wrapper.h"); + + for p in libical.include_paths { + builder = builder.clang_arg(format!("-I{}", p.display())); + } + + builder = builder.whitelist_type("ical.+") + .whitelist_var("ical.+") + .whitelist_function("ical.+"); + + let bindings = builder.generate().unwrap(); + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()).join("bindings.rs"); + + bindings.write_to_file(out_path).expect("Couldn't write bindings!"); +} -- cgit v1.2.3