use std::env;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    if env::var("CARGO_CFG_TARGET_OS")? != "macos" {
        return Ok(());
    }

    println!("cargo:rerun-if-changed=bindgen.h");
    println!("cargo:rustc-link-lib=framework=SystemConfiguration");

    let nix_cflags = env::var("NIX_CFLAGS_COMPILE").unwrap_or("".to_owned());
    let bindings = bindgen::Builder::default()
        .rust_target(bindgen::RustTarget::Stable_1_40)
        .detect_include_paths(true)
        .clang_args(nix_cflags.split(" "))
        .header("external/apple/dnsinfo.h")
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .generate()
        .expect("failed to generate bindings");

    let path = std::path::PathBuf::from(env::var("OUT_DIR")?);
    bindings.write_to_file(path.join("dnsinfo.rs"))?;

    Ok(())
}