libquantum 0.1.2

Rust bindings for the libquantum C library.
extern crate bindgen;
extern crate glob;

use glob::glob;

use std::env;
use std::path::{Path, PathBuf};

fn generate_bindings(qh_path: PathBuf) {
    let out_dir = env::var("OUT_DIR").unwrap();
    let _ = bindgen::builder()
        .no_unstable_rust()
        .header(qh_path.into_os_string().into_string().unwrap())
        .generate().unwrap()
        .write_to_file(Path::new(&out_dir).join("quantum.rs"));
}

fn main() {
    println!("cargo:rustc-link-lib=quantum");
    println!("cargo:rustc-link-lib=gomp");

    let mut patterns = Vec::new();
    patterns.push("/usr/include/**/quantum.h".to_string());
    patterns.push("/usr/local/include/**/quantum.h".to_string());

    match env::var("LIBQUANTUM_INCLUDE") {
        Ok(path) => patterns.push(path), 
        Err(_) => (),
    }

    for pattern in patterns.iter() {
        for entry in glob(pattern).expect("Failed to read glob pattern") {
            match entry {
                Ok(path) => { generate_bindings(path); return; },
                Err(e) => println!("{:?}", e),
            }
        }
    }
    panic!("Failed to find dependency 'quantum.h'!");
}