-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbuild.rs
49 lines (41 loc) · 1.45 KB
/
build.rs
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
44
45
46
47
48
49
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");
}