helios-dac-sys 0.2.0

generated bindings for the helios dac sdk
Documentation
use std::path::PathBuf;

fn main() {
    generate_bindings();
    build_sdk();
}

fn generate_bindings() {
    println!("cargo:rerun-if-changed=wrapper.hpp");
    println!("cargo:rerun-if-changed=sdk/sdk/HeliosDac.h");
    println!("cargo:rerun-if-changed=sdk/sdk/HeliosDacAPI.h");
    pkg_config::find_library("libusb-1.0").expect("could not find libusb to link to");
    let bindings = bindgen::builder()
        .header("wrapper.hpp")
        .generate_comments(true)
        .clang_arg("-std=c++14")
        .opaque_type("std::.*")
        .opaque_type("libusb_.*")
        .allowlist_type("HeliosDac")
        .allowlist_var("HELIOS_SUCCESS")
        .allowlist_var("HELIOS_ERROR_.*")
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .generate()
        .expect("Unable to generate bindings");
    let out_path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}

fn build_sdk() {
    cc::Build::new()
        .cpp(true)
        .flag("-std=c++14")
        .flag("-fPIC")
        .opt_level(2)
        .files(&["sdk/sdk/HeliosDacAPI.cpp", "sdk/sdk/HeliosDac.cpp"])
        .shared_flag(true)
        .compile("HeliosDacAPI");
}