gpu-mumu 0.1.2

GPU/Vulkan matrix and tensor operations for the mumu/lava language
Documentation
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");

    // We'll compile these .glsl => .spv:
    let shaders = [
        "comp.glsl",
        "add.comp.glsl",
        "hadamard.comp.glsl",
        "subtract.comp.glsl",
        "transpose.comp.glsl",
        // The new reduce_sum shader:
        "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
            );
        }
    }
}