glslang-sys 0.7.0+1062752

Raw C bindings to glslang
Documentation
use glob::glob;
use std::env;

pub fn add_subdirectory(build: &mut cc::Build, directory: &str) {
    for entry in
        glob(&*format!("native/glslang/{directory}/**/*.cpp")).expect("failed to read glob")
    {
        if let Ok(path) = entry {
            build.file(path);
        }
    }

    for entry in glob(&*format!("native/glslang/{directory}/**/*.c")).expect("failed to read glob")
    {
        if let Ok(path) = entry {
            build.file(path);
        }
    }
}

pub fn main() {
    if env::var("DOCS_RS").is_ok() {
        println!("cargo:warning=Skipping glslang native build for docs.rs.");
        return;
    }

    println!("cargo:rerun-if-changed=native/glslang");
    println!("cargo:rerun-if-changed=native/build_info");

    let mut glslang_build = cc::Build::new();
    glslang_build
        .cpp(true)
        .std("c++17")
        .define("ENABLE_SPIRV", "ON")
        .define("ENABLE_HLSL", "ON")
        .define("ENABLE_OPT", "OFF")
        .define("ENABLE_GLSLANG_BINARIES", "OFF")
        .includes(&["native/glslang", "native/build_info"]);

    add_subdirectory(&mut glslang_build, "glslang/CInterface");
    add_subdirectory(&mut glslang_build, "glslang/GenericCodeGen");
    add_subdirectory(&mut glslang_build, "glslang/HLSL");
    add_subdirectory(&mut glslang_build, "glslang/MachineIndependent");

    add_subdirectory(&mut glslang_build, "SPIRV");

    glslang_build.compile("glslang");
    println!("cargo:rustc-link-lib=static=glslang");
}