aboutsummaryrefslogtreecommitdiff
path: root/c
diff options
context:
space:
mode:
authorJack O'Connor <[email protected]>2025-03-09 14:31:12 -0700
committerJack O'Connor <[email protected]>2025-03-09 14:34:35 -0700
commitdaa66a6b261cedf9733778fa7a26fb4dea500ffd (patch)
tree5731898d7e7fd68be46deb255e8b4b83ab264932 /c
parent9edb473fa81c422acc2cb611f55c4df52d1cdbbb (diff)
use `ignore` to avoid overdoing rerun-if-changed in bindings
Diffstat (limited to 'c')
-rw-r--r--c/blake3_c_rust_bindings/Cargo.toml1
-rw-r--r--c/blake3_c_rust_bindings/build.rs14
2 files changed, 9 insertions, 6 deletions
diff --git a/c/blake3_c_rust_bindings/Cargo.toml b/c/blake3_c_rust_bindings/Cargo.toml
index 2576eaa..e70f16b 100644
--- a/c/blake3_c_rust_bindings/Cargo.toml
+++ b/c/blake3_c_rust_bindings/Cargo.toml
@@ -27,3 +27,4 @@ reference_impl = { path = "../../reference_impl" }
[build-dependencies]
cc = "1.0.48"
+ignore = "0.4.23"
diff --git a/c/blake3_c_rust_bindings/build.rs b/c/blake3_c_rust_bindings/build.rs
index 624dbb9..c5dc927 100644
--- a/c/blake3_c_rust_bindings/build.rs
+++ b/c/blake3_c_rust_bindings/build.rs
@@ -178,12 +178,14 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rerun-if-env-changed=CC");
println!("cargo:rerun-if-env-changed=CFLAGS");
- // Ditto for source files, though these shouldn't change as often.
- for file in std::fs::read_dir("..")? {
- println!(
- "cargo:rerun-if-changed={}",
- file?.path().to_str().expect("utf-8")
- );
+ // Ditto for source files, though these shouldn't change as often. `ignore::Walk` respects
+ // .gitignore, so this doesn't traverse target/.
+ for result in ignore::Walk::new("..") {
+ let result = result?;
+ let path = result.path();
+ if path.is_file() {
+ println!("cargo:rerun-if-changed={}", path.to_str().unwrap());
+ }
}
Ok(())