napi_build/
lib.rs

1use std::env;
2
3mod android;
4mod macos;
5mod wasi;
6mod windows;
7
8pub fn setup() {
9  // compatible with the v2 versions, will remove in the future
10  {
11    println!("cargo:rerun-if-env-changed=DEBUG_GENERATED_CODE");
12    println!("cargo:rerun-if-env-changed=TYPE_DEF_TMP_PATH");
13    println!("cargo:rerun-if-env-changed=CARGO_CFG_NAPI_RS_CLI_VERSION");
14  }
15
16  println!("cargo::rerun-if-env-changed=NAPI_DEBUG_GENERATED_CODE");
17  println!("cargo::rerun-if-env-changed=NAPI_TYPE_DEF_TMP_FOLDER");
18  println!(
19    "cargo::rerun-if-env-changed=NAPI_FORCE_BUILD_{}",
20    env::var("CARGO_PKG_NAME")
21      .expect("CARGO_PKG_NAME is not set")
22      .to_uppercase()
23      .replace("-", "_")
24  );
25
26  match env::var("CARGO_CFG_TARGET_OS").as_deref() {
27    Ok("macos") => {
28      macos::setup();
29    }
30    Ok("android") => if android::setup().is_ok() {},
31    Ok("wasi") => {
32      wasi::setup();
33    }
34    Ok("windows") => {
35      if let Ok("gnu") = env::var("CARGO_CFG_TARGET_ENV").as_deref() {
36        windows::setup_gnu();
37      }
38    }
39    _ => {}
40  }
41}