use std::process::Command;
use std::env;
use std::path::PathBuf;
fn main() {
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
let shader_dir = PathBuf::from("shader");
let shaders = [
"comp.glsl",
"add.comp.glsl",
"hadamard.comp.glsl",
"subtract.comp.glsl",
"transpose.comp.glsl",
"reduce_sum.comp.glsl",
];
for sh in &shaders {
let input = shader_dir.join(sh);
let output_spv = out_dir.join(format!("{}.spv", sh));
println!("cargo:rerun-if-changed={}", input.display());
let status = Command::new("glslc")
.arg(input.to_string_lossy().to_string())
.arg("-o")
.arg(output_spv.to_string_lossy().to_string())
.status();
if let Ok(s) = status {
if !s.success() {
eprintln!(
"Warning: glslc failed to compile {} => no .spv created",
sh
);
}
} else {
eprintln!(
"Warning: glslc not found => skipping .spv for {}",
sh
);
}
}
}