summary refs log tree commit diff
path: root/build.rs
blob: 593ef3f02ed15a3bd17293fc56f4186bfb1e8295 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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(())
}