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"); }