rtmidi 0.2.0

Safe wrapper for RtMidi, realtime MIDI input/output
use std::env;
use std::path::PathBuf;

fn main() {
    println!("cargo:rustc-link-lib=rtmidi");
    println!("cargo:rerun-if-changed=wrapper.h");

    let (version, include_args) = match pkg_config::Config::new()
        .statik(false)
        .atleast_version("3.0.0")
        .probe("rtmidi")
    {
        Err(_) => ("4.0.0".to_string(), vec![]),
        Ok(library) => (
            library.version,
            library
                .include_paths
                .iter()
                .map(|include_path| {
                    format!(
                        "-I{}",
                        include_path.to_str().expect("include path was not UTF-8")
                    )
                })
                .collect::<Vec<_>>(),
        ),
    };

    let feature = match version.as_ref() {
        "4.0.0" => "v4_0_0",
        "3.0.0" => "v3_0_0",
        version => panic!("Unsupported RtMidi version '{}'", version),
    };
    println!("cargo:rustc-cfg=rtmidi_version=\"{}\"", feature);

    let bindings = bindgen::Builder::default()
        .header("wrapper.h")
        .clang_args(include_args)
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .generate()
        .expect("Unable to generate bindings");

    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}