gaviota-sys 0.1.27

Low level bindings for libgtb, a library for Gaviota tablebase probing
Documentation
use std::{env, path::PathBuf};

fn main() {
    let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());

    bindgen::builder()
        .layout_tests(false)
        .header("wrapper.h")
        .clang_arg("-IGaviota-Tablebases")
        .clang_arg("-IGaviota-Tablebases/sysport")
        .allowlist_type("TB_STATS")
        .allowlist_var("tb_MAXPATHLEN")
        .allowlist_function("tb_availability")
        .allowlist_function("tb_done")
        .allowlist_function("tb_indexmemory")
        .allowlist_function("tb_init")
        .allowlist_function("tb_is_initialized")
        .allowlist_function("tb_probe_WDL_hard")
        .allowlist_function("tb_probe_WDL_soft")
        .allowlist_function("tb_probe_hard")
        .allowlist_function("tb_probe_soft")
        .allowlist_function("tb_restart")
        .allowlist_function("tbcache_done")
        .allowlist_function("tbcache_flush")
        .allowlist_function("tbcache_init")
        .allowlist_function("tbcache_is_on")
        .allowlist_function("tbcache_restart")
        .allowlist_function("tbpaths_add")
        .allowlist_function("tbpaths_done")
        .allowlist_function("tbpaths_getmain")
        .allowlist_function("tbpaths_init")
        .allowlist_function("tbstats_get")
        .allowlist_function("tbstats_reset")
        .allowlist_type("TB_castling")
        .allowlist_type("TB_compression_scheme")
        .allowlist_type("TB_pieces")
        .allowlist_type("TB_return_values")
        .allowlist_type("TB_sides")
        .allowlist_type("TB_squares")
        .bitfield_enum("TB_return_values")
        .bitfield_enum("TB_castling")
        .rustified_enum("TB_sides")
        .rustified_enum("TB_squares")
        .rustified_enum("TB_pieces")
        .rustified_enum("TB_compression_scheme")
        .prepend_enum_name(false)
        .generate()
        .unwrap()
        .write_to_file(out_dir.join("bindings.rs"))
        .unwrap();

    cc::Build::new()
        .flag_if_supported("-Wno-expansion-to-defined")
        .flag_if_supported("-Wno-misleading-indentation")
        .include("Gaviota-Tablebases")
        .include("Gaviota-Tablebases/sysport")
        .include("Gaviota-Tablebases/compression")
        .include("Gaviota-Tablebases/compression/liblzf")
        .include(env::var_os("DEP_Z_INCLUDE").expect("provided by libz-sys"))
        .include("Gaviota-Tablebases/compression/lzma")
        .include("Gaviota-Tablebases/compression/huffman")
        .define("z_uLong", "uLong") // Not using Z_PREFIX
        .file("Gaviota-Tablebases/gtb-probe.c")
        .file("Gaviota-Tablebases/gtb-dec.c")
        .file("Gaviota-Tablebases/gtb-att.c")
        .file("Gaviota-Tablebases/sysport/sysport.c")
        .file("Gaviota-Tablebases/compression/wrap.c")
        .file("Gaviota-Tablebases/compression/huffman/hzip.c")
        .file("Gaviota-Tablebases/compression/lzma/LzmaEnc.c")
        .file("Gaviota-Tablebases/compression/lzma/LzmaDec.c")
        .file("Gaviota-Tablebases/compression/lzma/Alloc.c")
        .file("Gaviota-Tablebases/compression/lzma/LzFind.c")
        .file("Gaviota-Tablebases/compression/lzma/Lzma86Enc.c")
        .file("Gaviota-Tablebases/compression/lzma/Lzma86Dec.c")
        .file("Gaviota-Tablebases/compression/lzma/Bra86.c")
        .file("Gaviota-Tablebases/compression/liblzf/lzf_c.c")
        .file("Gaviota-Tablebases/compression/liblzf/lzf_d.c")
        .compile("gtb");

    println!("cargo:root={}", out_dir.display());
    println!(
        "cargo:include={}",
        env::current_dir()
            .unwrap()
            .join("Gaviota-Tablebases")
            .display()
    );

    println!("cargo::rustc-link-lib=static=z");
}