nodex-api 0.1.4

rust binding to node_api.h
Documentation
#![allow(unreachable_code)]

pub fn main() {
    #[cfg(feature = "gen-api")]
    {
        use std::env;
        use std::path::PathBuf;

        let bindings = bindgen::Builder::default()
            .clang_args(&["-x", "c"])
            .clang_args(&["-Iapi/include"])
            .clang_args(api_version())
            .rust_target(bindgen::RustTarget::Nightly)
            .layout_tests(false)
            .generate_inline_functions(false)
            .derive_debug(true)
            .header("src/api.h")
            .generate()
            .expect("unable to generate api.h bindings!");

        let out = PathBuf::from("./src");
        bindings
            .write_to_file(out.join("out.rs"))
            .expect("could not write bindings!");
    }

    #[cfg(not(feature = "no-linkage"))]
    {
        // NB: macos link options
        #[cfg(target_os = "macos")]
        {
            println!("cargo:rustc-cdylib-link-arg=-Wl");
            println!("cargo:rustc-cdylib-link-arg=-undefined");
            println!("cargo:rustc-cdylib-link-arg=dynamic_lookup");
        }
    }
}

#[cfg(feature = "gen-api")]
fn api_version<'a>() -> &'a [&'a str] {
    #[cfg(feature = "v8")]
    return &["-DNAPI_VERSION=8"];
    #[cfg(feature = "v7")]
    return &["-DNAPI_VERSION=7"];
    #[cfg(feature = "v6")]
    return &["-DNAPI_VERSION=6"];
    #[cfg(feature = "v5")]
    return &["-DNAPI_VERSION=5"];
    #[cfg(feature = "v4")]
    return &["-DNAPI_VERSION=4"];
    #[cfg(feature = "v3")]
    return &["-DNAPI_VERSION=3"];
    #[cfg(feature = "v2")]
    return &["-DNAPI_VERSION=2"];
    #[cfg(feature = "v1")]
    return &["-DNAPI_VERSION=1"];

    &["-DNAPI_VERSION=100"]
}