xref: /wasmtime-44.0.1/crates/c-api/build.rs (revision e4305755)
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     "WASI_HTTP",
12     "LOGGING",
13     "DISABLE_LOGGING",
14     "COREDUMP",
15     "ADDR2LINE",
16     "DEMANGLE",
17     "THREADS",
18     "GC",
19     "GC_DRC",
20     "GC_NULL",
21     "CRANELIFT",
22     "WINCH",
23     "DEBUG_BUILTINS",
24     "WAT",
25     "POOLING_ALLOCATOR",
26     "COMPONENT_MODEL",
27     "PULLEY",
28     "ALL_ARCH",
29 ];
30 // ... if you add a line above this be sure to change the other locations
31 // marked WASMTIME_FEATURE_LIST
32 
main()33 fn main() {
34     println!("cargo:rerun-if-changed=cmake/features.cmake");
35     println!("cargo:rerun-if-changed=cmake/install-headers.cmake");
36     println!("cargo:rerun-if-changed=include");
37 
38     let out_dir = std::env::var("OUT_DIR").unwrap();
39     let mut cmake = Command::new("cmake");
40     cmake.arg("-DWASMTIME_DISABLE_ALL_FEATURES=ON");
41     cmake.arg(format!("-DCMAKE_INSTALL_PREFIX={out_dir}"));
42     for f in FEATURES {
43         if env::var_os(format!("CARGO_FEATURE_{f}")).is_some() {
44             cmake.arg(format!("-DWASMTIME_FEATURE_{f}=ON"));
45         }
46     }
47 
48     cmake.arg("-P").arg("cmake/install-headers.cmake");
49 
50     let status = cmake.status().expect("failed to spawn `cmake`");
51     assert!(status.success());
52 
53     println!("cargo:include={out_dir}/include");
54 }
55