#[cfg(feature = "bindings")]
extern crate bindgen;
fn main() {
#[cfg(feature = "bindings")]
build_bindings();
#[cfg(feature = "static")]
statically_link_pdfium();
}
#[cfg(feature = "bindings")]
fn build_bindings() {
if std::env::var("DOCS_RS").is_err() {
println!("cargo:rerun-if-changed=include/rust-import-wrapper.h");
let bindings = bindgen::Builder::default()
.header("include/rust-import-wrapper.h")
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.clang_args(
[
"-fretain-comments-from-system-headers",
"-fparse-all-comments",
]
.iter(),
)
.generate_comments(true)
.generate()
.expect("Unable to generate bindings");
let out_path = std::path::PathBuf::from("src");
bindings
.write_to_file(out_path.join("bindgen.rs"))
.expect("Unable to write bindings");
}
}
#[cfg(feature = "static")]
fn statically_link_pdfium() {
if let Ok(path) = std::env::var("PDFIUM_STATIC_LIB_PATH") {
println!("cargo:rustc-link-lib=static=pdfium");
println!("cargo:rustc-link-search=native={}", path);
#[cfg(feature = "libstdc++")]
println!("cargo:rustc-link-lib=dylib=stdc++");
#[cfg(feature = "libc++")]
println!("cargo:rustc-link-lib=dylib=c++");
}
}