fn main() { // println!("cargo:rustc-link-arg-bins=--nmagic"); println!("cargo:rustc-link-arg-bins=-Tlink.x"); // println!("cargo:rustc-link-arg-bins=-Tdefmt.x"); let out_dir = std::env::var("OUT_DIR").unwrap(); let out_dir = std::path::PathBuf::from(out_dir); std::fs::write(out_dir.join("memory.x"), include_bytes!("memory.x")).unwrap(); println!("cargo:rustc-link-search={}", out_dir.display()); println!("cargo:rerun-if-changed=memory.x"); // Embed firmware build timestamp as minutes since Unix epoch (4 bytes, big-endian). // Dropping sub-minute precision keeps it in 4 bytes for many years. let build_seconds = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) .expect("System time before UNIX_EPOCH") .as_secs(); let build_minutes = (build_seconds / 60) as u32; let bytes = build_minutes.to_be_bytes(); std::fs::write(out_dir.join("build_minutes.bin"), bytes).unwrap(); println!("cargo:rerun-if-changed=build.rs"); }