ddctui 1.0.0

Terminal UI for controlling DDC/CI monitor properties
use std::env;
use std::path::PathBuf;

fn main() {
    let lib = pkg_config::Config::new()
        .probe("ddcutil")
        .expect("ddcutil not found via pkg-config; is libddcutil-dev / ddcutil installed?");

    let mut builder = bindgen::Builder::default()
        .header_contents(
            "wrapper.h",
            "#include <ddcutil_types.h>\n#include <ddcutil_c_api.h>\n",
        )
        .allowlist_function("ddca_.*")
        .allowlist_type("DDCA_.*")
        .allowlist_var("DDCA_.*")
        .derive_default(true)
        .derive_debug(true)
        .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()));

    for path in &lib.include_paths {
        builder = builder.clang_arg(format!("-I{}", path.display()));
    }

    let bindings = builder.generate().expect("failed to generate ddcutil bindings");

    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("failed to write bindings.rs");
}