openshmem-sys 1.5.0

Bindings for the OpenSHMEM API.
use std::path::PathBuf;

fn main() {
    let install_dir = std::env::var("SHMEM_INSTALL_DIR").expect("SHMEM_INSTALL_DIR to be provided!");
    println!("cargo:rustc-link-search={install_dir}/lib");
    println!("cargo:rustc-link-lib=sma");
    println!("cargo:rustc-link-lib=pmi_simple");
    let out = PathBuf::from(std::env::var("OUT_DIR").unwrap());
    for header in [
        "shmem",
        #[cfg(feature = "shmemx")]
        "shmemx",
    ] {
        let bindings = bindgen::Builder::default()
            .header(&format!("{install_dir}/include/{header}.h"))
            .clang_arg(format!("-I{install_dir}/include"))
            .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
            .generate()
            .expect(&format!("generating {header}.h bindings"));

        bindings
            .write_to_file(out.join(format!("{header}_bindings.rs")))
            .expect(&format!("writing {header}.h bindings"));
    }
}