use std::path::Path; fn main() { let dir = Path::new(env!("CARGO_MANIFEST_DIR")); let root = dir.parent().unwrap(); eprintln!("root: {}", root.display()); walk(&root.join("core_arch/src/x86")); walk(&root.join("core_arch/src/x86_64")); walk(&root.join("core_arch/src/arm")); walk(&root.join("core_arch/src/aarch64")); } fn walk(root: &Path) { for file in root.read_dir().unwrap() { eprintln!("root: {}", root.display()); let file = file.unwrap(); if file.file_type().unwrap().is_dir() { walk(&file.path()); continue; } let path = file.path(); if path.extension().and_then(|s| s.to_str()) != Some("rs") { continue; } println!("cargo:rerun-if-changed={}", path.display()); } }