projectm-sys 1.2.2

Bindings for ProjectM
Documentation
use std::{env, path::PathBuf};

pub fn bindgen() {
    println!("cargo:rerun-if-changed=wrapper.h");

    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
    let out_path = out_dir.join("bindings.rs");

    fn get_header() -> String {
        if cfg!(feature = "playlist") {
            "bindgen/playlist.h".to_string()
        } else {
            "bindgen/default.h".to_string()
        }
    }

    let bindings = bindgen::Builder::default()
        .header(get_header())
        .allowlist_function("projectm_.*")
        .clang_arg(format!("-I{}/include", out_dir.display()))
        .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
        .generate()
        .expect("Unable to generate bindings");

    bindings
        .write_to_file(out_path)
        .expect("Couldn't write bindings!");
}