extern crate bindgen;
use std::env;
use std::path::PathBuf;
use std::fs::File;
use std::io::prelude::*;
fn write_wrapper(wrapper_path : &PathBuf) {
let mut inclpath = PathBuf::new();
inclpath.push("include");
inclpath.push("edlib.h");
let mut incl = String::from("#include\"");
incl.push_str(& inclpath.to_str().unwrap());
incl.push_str("\"");
let mut f = File::create(wrapper_path).unwrap();
f.write_all(incl.as_bytes()).expect("cannot write wrapper.h");
}
fn main() {
let dst = cmake::Config::new("edlib-c")
.cflag("-D CMAKE_BUILD_TYPE=Release")
.build();
println!("cargo:rustc-link-search=native={}", dst.display());
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
let wrapper_path = out_path.join("wrapper.h");
write_wrapper(&wrapper_path);
let mut libdir = String::from("cargo:rustc-link-search=");
libdir.push_str(out_path.to_str().unwrap());
libdir.push_str("/lib");
println!("{}",libdir);
println!("cargo:rustc-link-lib=edlib");
println!("cargo:rustc-link-lib=stdc++");
let bindings = bindgen::Builder::default()
.header(wrapper_path.to_str().unwrap())
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.generate()
.expect("Unable to generate bindings");
println!("cargo:rerun-if-changed=binding.rs");
bindings
.write_to_file(out_path.join("bindings.rs"))
.expect("Couldn't write bindings!");
}