26 lines
1020 B
Rust
26 lines
1020 B
Rust
use std::path::{Path, PathBuf};
|
|
|
|
fn resolve_stub(env_var: &str, out_name: &str, out_dir: &Path) -> PathBuf {
|
|
println!("cargo:rerun-if-env-changed={env_var}");
|
|
let dest = out_dir.join(out_name);
|
|
if let Ok(src) = std::env::var(env_var) {
|
|
let src = PathBuf::from(&src);
|
|
if src.exists() {
|
|
println!("cargo:rerun-if-changed={}", src.display());
|
|
std::fs::copy(&src, &dest).expect("copy stub");
|
|
return dest;
|
|
}
|
|
println!("cargo:warning={env_var} set to {src:?} but file not found; serving 503 for this arch");
|
|
}
|
|
std::fs::write(&dest, []).expect("write placeholder");
|
|
dest
|
|
}
|
|
|
|
fn main() {
|
|
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
|
let x86 = resolve_stub("RSH_STUB_X86_64", "rsh-x86_64", &out_dir);
|
|
let arm = resolve_stub("RSH_STUB_AARCH64", "rsh-aarch64", &out_dir);
|
|
println!("cargo:rustc-env=STUB_X86_64_PATH={}", x86.display());
|
|
println!("cargo:rustc-env=STUB_AARCH64_PATH={}", arm.display());
|
|
}
|