34 lines
959 B
Rust
34 lines
959 B
Rust
fn main() {
|
|
let lib = probe_libqalculate();
|
|
build_cxx_bridge(&lib);
|
|
emit_cargo_metadata();
|
|
}
|
|
|
|
fn probe_libqalculate() -> pkg_config::Library {
|
|
pkg_config::probe_library("libqalculate")
|
|
.expect("libqalculate not found — install it via your package manager")
|
|
}
|
|
|
|
fn build_cxx_bridge(lib: &pkg_config::Library) {
|
|
cxx_build::bridge("src/qalc/mod.rs")
|
|
.file("src/qalc/qalc_bridge.cc")
|
|
.includes(&lib.include_paths)
|
|
.include("src")
|
|
.flag_if_supported("-std=c++17")
|
|
.compiler("g++")
|
|
.compile("qalc-bridge");
|
|
}
|
|
|
|
fn emit_cargo_metadata() {
|
|
let out_dir = std::env::var("OUT_DIR").unwrap();
|
|
println!("cargo:rustc-link-search=native={out_dir}");
|
|
println!("cargo:rustc-link-lib=static=qalc-bridge");
|
|
|
|
for file in &[
|
|
"src/qalc/mod.rs",
|
|
"src/qalc/qalc_bridge.cc",
|
|
"src/qalc/qalc_bridge.h",
|
|
] {
|
|
println!("cargo:rerun-if-changed={file}");
|
|
}
|
|
}
|