fn main() {
if std::env::var_os("DOCS_RS").is_some() {
return;
}
println!("cargo:rerun-if-changed=cpp/bindings.cpp");
let mut cfg = cc::Build::new();
cfg.cpp(true).include("cpp").file("cpp/bindings.cpp");
cfg.define("UNICODE", None);
cfg.define("_UNICODE", None);
cfg.compile("pbx");
build_def();
}
fn build_def() {
use std::{fs::OpenOptions, io::Write, path::PathBuf};
let mut file_path = std::env::var_os("OUT_DIR").map(PathBuf::from).unwrap();
file_path.push("export.def");
let mut file = OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open(&file_path)
.expect("fail to create export.def");
file.write_all(b"LIBRARY\r\n").unwrap();
file.write_all(b"EXPORTS\r\n").unwrap();
file.write_all(b"\t_PBX_GetVersion@0\r\n").unwrap();
#[cfg(feature = "global_function")]
file.write_all(b"\t_PBX_InvokeGlobalFunction@12\r\n").unwrap();
#[cfg(feature = "nonvisualobject")]
file.write_all(b"\t_PBX_CreateNonVisualObject@16\r\n").unwrap();
#[cfg(feature = "visualobject")]
file.write_all(b"\t_PBX_CreateVisualObject@16\r\n").unwrap();
println!("cargo:rustc-cdylib-link-arg=/DEF:{}", file_path.display());
println!("cargo:rustc-cdylib-link-arg=/MAP:symbol.map");
println!("cargo:rustc-cdylib-link-arg=/MAPINFO:EXPORTS");
}