2024-05-29 00:25:05 +02:00
|
|
|
use std::{env, path::PathBuf};
|
|
|
|
|
|
|
|
pub const ENV_KEY_CSP_CONFIG_DIR: &str = "CSP_CONFIG_DIR";
|
2024-06-01 18:59:27 +02:00
|
|
|
pub const ENV_KEY_TEST: &str = "RUN_TESTS";
|
2024-05-29 00:25:05 +02:00
|
|
|
|
|
|
|
fn main() {
|
2024-06-01 18:59:27 +02:00
|
|
|
// libcsp is built in a separate project, so linking it for tests will fail.
|
|
|
|
// For tests, we do not want to have the link directive to csp.
|
|
|
|
let run_tests = if let Ok(val) = env::var(ENV_KEY_TEST) {
|
|
|
|
val == "1"
|
|
|
|
} else {
|
|
|
|
false
|
|
|
|
};
|
|
|
|
if !run_tests {
|
|
|
|
println!("cargo:rustc-link-lib=csp");
|
|
|
|
}
|
2024-05-29 00:25:05 +02:00
|
|
|
|
|
|
|
let out_path = env::var("OUT_DIR").unwrap();
|
|
|
|
let csp_conf_dir = match env::var(ENV_KEY_CSP_CONFIG_DIR) {
|
|
|
|
Ok(conf_path) => conf_path,
|
|
|
|
Err(_e) => {
|
|
|
|
println!(
|
|
|
|
"cargo:warning={} not set, using CARGO_MANIFEST_DIR to search for autoconfig.rs",
|
|
|
|
ENV_KEY_CSP_CONFIG_DIR
|
|
|
|
);
|
|
|
|
env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set")
|
|
|
|
}
|
|
|
|
};
|
|
|
|
let mut csp_conf_path = PathBuf::new();
|
|
|
|
csp_conf_path.push(csp_conf_dir);
|
|
|
|
csp_conf_path.push("autoconfig.rs");
|
|
|
|
if !csp_conf_path.exists() {
|
|
|
|
panic!(
|
|
|
|
"autoconfig.rs not found at {:?}, is required for library build",
|
|
|
|
csp_conf_path
|
|
|
|
);
|
|
|
|
}
|
|
|
|
let out_path_full = PathBuf::from(&out_path).join("autoconfig.rs");
|
|
|
|
std::fs::copy(&csp_conf_path, out_path_full).expect("failed to copy autoconfig.rs to OUT_DIR");
|
|
|
|
println!("cargo::rerun-if-changed={:?}", &csp_conf_path);
|
|
|
|
}
|