diff options
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..593ef3f --- /dev/null +++ b/build.rs @@ -0,0 +1,43 @@ +use std::env; +use std::fs; +use std::path::Path; +use std::process::Command; + +fn main() { + match process_all() { + Err(error) => println!("cargo-error={}", error), + _ => { }, + } +} + +fn process_all () -> std::io::Result<()> { + let out_dir = env::var_os("OUT_DIR").unwrap(); + + for input in fs::read_dir("shaders")? { + let input_path = input?.path(); + if !input_path.is_file() { + continue; + } + + let output_path + = Path::new(&out_dir) + .join(format!("{}.spv", + input_path.file_name().unwrap().to_str().unwrap())); + + if !Command::new("glslang") + .arg("-V") + .arg(&input_path) + .arg("-o") + .arg(output_path) + .status()?.success() + { + println!("cargo::error=Failed to compile shader {}", + input_path.display()); + } + + println!("cargo::rerun-if-changed={}", input_path.display()); + } + + Ok(()) +} + |