use std::path::PathBuf;
use wolfram_app_discovery::WolframApp;
fn main() {
if std::env::var("DOCS_RS").is_ok() {
let bindings_path = make_bindings_path("13.0.0", "MacOSX-x86-64");
println!(
"cargo:rustc-env=CRATE_WOLFRAM_LIBRARYLINK_SYS_BINDINGS={}",
bindings_path.display()
);
return;
}
let app = WolframApp::try_default().expect("unable to locate WolframApp");
let wolfram_version = app
.wolfram_version()
.expect("unable to get Wolfram Language vesion number");
let system_id =
wolfram_app_discovery::system_id_from_target(&std::env::var("TARGET").unwrap())
.expect("unable to get System ID for target system");
let bindings_path = make_bindings_path(&wolfram_version.to_string(), system_id);
println!("cargo:rerun-if-changed={}", bindings_path.display());
let absolute_bindings_path =
PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()).join(&bindings_path);
if !absolute_bindings_path.is_file() {
println!(
"
==== ERROR: wolfram-library-link-sys =====
Rust bindings for Wolfram LibraryLink for target configuration:
WolframVersion: {}
SystemID: {}
have not been pre-generated.
See wolfram-library-link-sys/generated/ for a listing of currently available targets.
=========================================
",
wolfram_version, system_id
);
panic!("<See printed error>");
}
println!(
"cargo:rustc-env=CRATE_WOLFRAM_LIBRARYLINK_SYS_BINDINGS={}",
bindings_path.display()
);
}
fn make_bindings_path(wolfram_version: &str, system_id: &str) -> PathBuf {
let bindings_path = PathBuf::from("generated")
.join(wolfram_version)
.join(system_id)
.join("LibraryLink_bindings.rs");
bindings_path
}