use std::{env, path::PathBuf};
fn main() {
let bc_include_dir = env::var("DEP_TECTONIC_BRIDGE_CORE_INCLUDE").unwrap();
let out_dir = env::var("OUT_DIR").unwrap();
let mut manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
if env::var_os("DOCS_RS").is_some() {
env::set_var("CARGO_NET_OFFLINE", "true");
}
let mut gen_header_path: PathBuf = out_dir.clone().into();
gen_header_path.push("bibtex_bindings.h");
println!("cargo:rerun-if-changed=src/lib.rs");
let mut config = cbindgen::Config {
cpp_compat: true,
..Default::default()
};
config.enumeration.prefix_with_name = true;
cbindgen::Builder::new()
.with_config(config)
.with_crate(&manifest_dir)
.with_language(cbindgen::Language::C)
.with_include_guard("BIBTEX_BINDINGS_H")
.with_style(cbindgen::Style::Type)
.rename_item("CoreBridgeState", "ttbc_state_t") .generate()
.expect("Unable to generate bindings")
.write_to_file(&gen_header_path);
let mut build = cc::Build::new();
build
.warnings(true)
.file("bibtex/bibtex.c")
.include(&bc_include_dir)
.include(&out_dir)
.compile("libtectonic_engine_bibtex.a");
println!("cargo:rerun-if-changed=bibtex/bibtex.c");
manifest_dir.push("Cargo.lock");
let _ignored = std::fs::remove_file(&manifest_dir);
}