Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/c-api/build.rs
1690 views
1
use std::env;
2
use std::process::Command;
3
4
// WASMTIME_FEATURE_LIST
5
const FEATURES: &[&str] = &[
6
"ASYNC",
7
"PROFILING",
8
"CACHE",
9
"PARALLEL_COMPILATION",
10
"WASI",
11
"LOGGING",
12
"DISABLE_LOGGING",
13
"COREDUMP",
14
"ADDR2LINE",
15
"DEMANGLE",
16
"THREADS",
17
"GC",
18
"GC_DRC",
19
"GC_NULL",
20
"CRANELIFT",
21
"WINCH",
22
"DEBUG_BUILTINS",
23
"WAT",
24
"POOLING_ALLOCATOR",
25
"COMPONENT_MODEL",
26
"PULLEY",
27
"ALL_ARCH",
28
];
29
// ... if you add a line above this be sure to change the other locations
30
// marked WASMTIME_FEATURE_LIST
31
32
fn main() {
33
println!("cargo:rerun-if-changed=cmake/features.cmake");
34
println!("cargo:rerun-if-changed=cmake/install-headers.cmake");
35
println!("cargo:rerun-if-changed=include");
36
37
let out_dir = std::env::var("OUT_DIR").unwrap();
38
let mut cmake = Command::new("cmake");
39
cmake.arg("-DWASMTIME_DISABLE_ALL_FEATURES=ON");
40
cmake.arg(format!("-DCMAKE_INSTALL_PREFIX={out_dir}"));
41
for f in FEATURES {
42
if env::var_os(format!("CARGO_FEATURE_{f}")).is_some() {
43
cmake.arg(format!("-DWASMTIME_FEATURE_{f}=ON"));
44
}
45
}
46
47
cmake.arg("-P").arg("cmake/install-headers.cmake");
48
49
let status = cmake.status().expect("failed to spawn `cmake`");
50
assert!(status.success());
51
52
println!("cargo:include={out_dir}/include");
53
}
54
55