65 lines
1.8 KiB
Rust
65 lines
1.8 KiB
Rust
//! Build script for coolprop-sys.
|
|
//!
|
|
//! This compiles the CoolProp C++ library statically.
|
|
|
|
use std::env;
|
|
use std::path::PathBuf;
|
|
|
|
fn coolprop_src_path() -> Option<PathBuf> {
|
|
// Try to find CoolProp source in common locations
|
|
let possible_paths = vec![
|
|
// Vendor directory (recommended)
|
|
PathBuf::from("vendor/coolprop"),
|
|
// External directory
|
|
PathBuf::from("external/coolprop"),
|
|
// System paths
|
|
PathBuf::from("/usr/local/src/CoolProp"),
|
|
PathBuf::from("/opt/CoolProp"),
|
|
];
|
|
|
|
for path in possible_paths {
|
|
if path.join("CMakeLists.txt").exists() {
|
|
return Some(path);
|
|
}
|
|
}
|
|
|
|
None
|
|
}
|
|
|
|
fn main() {
|
|
let static_linking = env::var("CARGO_FEATURE_STATIC").is_ok();
|
|
|
|
// Check if CoolProp source is available
|
|
if let Some(coolprop_path) = coolprop_src_path() {
|
|
println!("cargo:rerun-if-changed={}", coolprop_path.display());
|
|
|
|
// Configure build for CoolProp
|
|
println!(
|
|
"cargo:rustc-link-search=native={}/build",
|
|
coolprop_path.display()
|
|
);
|
|
}
|
|
|
|
// Link against CoolProp
|
|
if static_linking {
|
|
// Static linking - find libCoolProp.a
|
|
println!("cargo:rustc-link-lib=static=CoolProp");
|
|
} else {
|
|
// Dynamic linking
|
|
println!("cargo:rustc-link-lib=dylib=CoolProp");
|
|
}
|
|
|
|
// Link required system libraries
|
|
println!("cargo:rustc-link-lib=dylib=m");
|
|
println!("cargo:rustc-link-lib=dylib=stdc++");
|
|
|
|
// Tell Cargo to rerun if build.rs changes
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
|
|
println!(
|
|
"cargo:warning=CoolProp source not found in vendor/.
|
|
For full static build, run:
|
|
git clone https://github.com/CoolProp/CoolProp.git vendor/coolprop"
|
|
);
|
|
}
|