fn main() { println!("cargo:rerun-if-changed=build.rs"); struct TargetConfig { target: &'static str, lds: &'static str, } const TARGET_LDS: &[TargetConfig] = &[ TargetConfig { target: "riscv64", lds: "src/arch/riscv/linker.ld", }, TargetConfig { target: "riscv32", lds: "src/arch/riscv/linker.ld", }, ]; let target = std::env::var("TARGET").unwrap(); for cfg in TARGET_LDS { if target.starts_with(cfg.target) { println!("cargo:rerun-if-changed={}", cfg.lds); println!("cargo:rustc-link-arg=-T{}", cfg.lds); return; } } panic!("Unsupported target: {}", target); }