keytar-sys 0.1.6

cxx bindings to keytar
Documentation
#[cfg(feature = "docs-rs")]
fn main() {}

#[cfg(not(feature = "docs-rs"))]
fn main() {
    use std::env;

    let mut cxx = cxx_build::bridge("src/lib.rs");

    let out_dir = env::var("OUT_DIR").unwrap();
    let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
    let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
    match target_os.as_str() {
        "linux" => {
            let lib = pkg_config::probe_library("libsecret-1").unwrap();
            for dir in lib.include_paths.into_iter() {
                cxx.include(dir);
            }

            cxx.file("node-keytar/src/keytar_posix.cc")
                .flag("-fexceptions")
                .flag("-Wno-missing-field-initializers")
                .flag("-Wno-deprecated-declarations");
        }
        "macos" => {
            println!("cargo:rustc-link-lib=framework=AppKit");
            println!("cargo:rustc-link-lib=framework=Security");

            cxx.file("node-keytar/src/keytar_mac.cc");
        }
        "windows" => {
            cxx.file("node-keytar/src/keytar_win.cc");
        }
        _ => panic!("unsupported TARGET_OS: {}", target_os),
    }

    cxx.file("src/lib.cc")
        .include(manifest_dir)
        .include(out_dir)
        .flag_if_supported("-std=c++14")
        .compile("keytar-sys");

    println!("cargo:rerun-if-changed=src/lib.rs");
    println!("cargo:rerun-if-changed=src/lib.h");
    println!("cargo:rerun-if-changed=src/lib.cc");
}