extern crate bindgen;
extern crate pkg_config;
use std::path::Path;
use std::env;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let out_file = Path::new(&out_dir).join("purple.rs");
let mut bindings = bindgen::builder()
.bitfield_enum("PurpleMessageFlags")
.bitfield_enum("PurpleBlistNodeFlags")
.bitfield_enum("PurpleProtocolOptions");
let purple_lib = pkg_config::probe_library("purple").unwrap();
for path in &purple_lib.include_paths {
let mut p = path.clone();
p.push("purple.h");
println!("test = {:?}", p);
if p.exists() && p.is_file() {
println!("found = {:?}", p);
bindings = bindings.header(p.to_str().unwrap());
break;
}
}
bindings = bindings.clang_arg("-D").clang_arg("PURPLE_PLUGINS");
for include_path in purple_lib.include_paths {
let include_path = include_path.to_str().unwrap();
println!("Adding include dir: {}", include_path);
bindings = bindings.clang_arg("-I").clang_arg(include_path);
}
bindings = bindings.emit_builtins();
bindings = bindings.derive_debug(false);
match bindings.generate() {
Ok(bindings) => {
bindings.write_to_file(out_file).unwrap();
}
_ => panic!("Bindings generation failed"),
}
}