ntcore-sys 0.3.0

Raw Rust bindings to ntcore
Documentation
use std::process::Command;

fn main() {
    let out_dir = std::env::var("OUT_DIR").unwrap();
    let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
    let release = std::env::var("PROFILE").unwrap() == "release";
    let maybe_d = if release { "" } else { "d" };

    cmake::Config::new(format!("{manifest_dir}/allwpilib"))
        .define("WITH_CSCORE", "OFF")
        .define("WITH_GUI", "OFF")
        .define("WITH_SIMULATION_MODULES", "OFF")
        .define("WITH_TESTS", "OFF")
        .define("WITH_WPILIB", "OFF")
        .define("WITH_WPIMATH", "OFF")
        .define("WITH_PROTOBUF", "OFF")
        .define("BUILD_SHARED_LIBS", "OFF")
        .build();

    Command::new("cmake")
        .args(["--build", &out_dir, "-j", "8"])
        .spawn()
        .unwrap()
        .wait()
        .unwrap();

    println!("cargo:rustc-link-lib=stdc++");
    println!("cargo:rustc-link-search=native={out_dir}/lib");
    println!("cargo:rustc-link-lib=ntcore{maybe_d}");
    println!("cargo:rustc-link-lib=wpiutil{maybe_d}");
    println!("cargo:rustc-link-lib=wpinet{maybe_d}");
}