#![expect(missing_docs)]
use std::{
env::var_os,
path::{Path, PathBuf},
};
fn main() {
println!("cargo:rerun-if-changed=lib.rs");
println!("cargo:rerun-if-changed=wrapper.hpp");
println!("cargo:rerun-if-changed=wrapper.cc");
println!("cargo:rerun-if-changed=vendor");
println!("cargo::rerun-if-env-changed=SANDIA_DECAY_INCLUDE_DIR");
println!("cargo::rerun-if-env-changed=SANDIA_DECAY_LIB_DIR");
println!("cargo::rerun-if-env-changed=SANDIA_DECAY_STATIC");
if cfg!(feature = "git") || var_os("SANDIA_DECAY_GIT").is_some() {
let vendor = Path::new("vendor");
cc::Build::new()
.cpp(true)
.file("wrapper.cc")
.include(vendor)
.compile("wrapper");
cc::Build::new()
.cpp(true)
.cargo_warnings(false)
.include(vendor)
.include(vendor.join("3rdparty"))
.file(vendor.join("SandiaDecay.cpp"))
.compile("SandiaDecay");
} else {
let ignore_checks = var_os("SANDIA_DECAY_IGNORE_CHECKS").is_some();
let mut wrapper = cc::Build::new();
wrapper.cpp(true);
if let Some(include_path) = var_os("SANDIA_DECAY_INCLUDE_DIR") {
let include_path = PathBuf::from(include_path);
assert!(
ignore_checks || include_path.join("SandiaDecay.h").exists(),
"`SANDIA_DECAY_INCLUDE_DIR` variable is set, but pointed location ({}) does not appear to contain SandiaDecay headers. Please, point to the correct location, or rename headers `SandiaDecay.h`",
include_path.display(),
);
wrapper.include(include_path);
}
wrapper.file("wrapper.cc").compile("wrapper");
if let Some(library_path) = var_os("SANDIA_DECAY_LIB_DIR") {
let library_path = PathBuf::from(library_path);
assert!(
ignore_checks
|| library_path.join("SandiaDecay.lib").exists()
|| library_path.join("libSandiaDecay.a").exists(),
"`SANDIA_DECAY_LIB_DIR` variable is set, but pointed location ({}) does not appear to contain built SandiaDecay library. Please, point to the correct location, or rename the file to `SandiaDecay.lib` or `libSandiaDecay.a`",
library_path.display(),
);
println!("cargo:rustc-link-search=native={}", library_path.display());
} else {
println!(
"cargo:warning=`sdecay-sys` is built in dynamic mode without specified library path, i.e. relying on default system path to discover the library"
);
println!(
"cargo::warning=If your build fails, try enabling `sdecay-sys/static` feature, or setting `SANDIA_DECAY_STATIC` environment variable"
);
println!("cargo:rustc-link-lib=stdc++");
}
println!("cargo:rustc-link-lib=SandiaDecay");
}
}