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()); }