use std::path::Path;
fn watch_headers(dir: &Path) {
let Ok(entries) = std::fs::read_dir(dir) else { return };
for entry in entries.flatten() {
let path = entry.path();
if path.is_dir() {
watch_headers(&path);
} else if path.extension().is_some_and(|e| e == "hpp" || e == "h") {
println!("cargo:rerun-if-changed={}", path.display());
}
}
}
fn main() {
let (include, capi) = if Path::new("../../include/real").exists() {
("../../include", "../c") } else {
("vendor/include", "vendor/c") };
println!("cargo:rerun-if-changed={capi}/real_capi.cpp");
println!("cargo:rerun-if-changed={capi}/real_capi.h");
watch_headers(Path::new(&format!("{include}/real")));
cc::Build::new()
.cpp(true)
.std("c++20")
.include(include)
.include(capi)
.file(format!("{capi}/real_capi.cpp"))
.compile("real_capi");
}