summaryrefslogtreecommitdiff
path: root/cli/build.rs
diff options
context:
space:
mode:
authorsnek <snek@deno.com>2024-10-24 09:13:54 +0200
committerGitHub <noreply@github.com>2024-10-24 09:13:54 +0200
commit79a3ad2b950009f560641cea359d7deb6f7a61ac (patch)
treea775ff101d1513b24a8cc0afc80fdcbd4c6c9074 /cli/build.rs
parent27df42f659ae7b77968d31363ade89addb516ea1 (diff)
feat: support node-api in denort (#26389)
exposes node-api symbols in denort so that `deno compile` can run native addons.
Diffstat (limited to 'cli/build.rs')
-rw-r--r--cli/build.rs55
1 files changed, 3 insertions, 52 deletions
diff --git a/cli/build.rs b/cli/build.rs
index aa5d3d18c..2678a8dbb 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -365,6 +365,9 @@ fn main() {
return;
}
+ deno_napi::print_linker_flags("deno");
+ deno_napi::print_linker_flags("denort");
+
// Host snapshots won't work when cross compiling.
let target = env::var("TARGET").unwrap();
let host = env::var("HOST").unwrap();
@@ -374,58 +377,6 @@ fn main() {
panic!("Cross compiling with snapshot is not supported.");
}
- let symbols_file_name = match env::consts::OS {
- "android" | "freebsd" | "openbsd" => {
- "generated_symbol_exports_list_linux.def".to_string()
- }
- os => format!("generated_symbol_exports_list_{}.def", os),
- };
- let symbols_path = std::path::Path::new("napi")
- .join(symbols_file_name)
- .canonicalize()
- .expect(
- "Missing symbols list! Generate using tools/napi/generate_symbols_lists.js",
- );
-
- println!("cargo:rustc-rerun-if-changed={}", symbols_path.display());
-
- #[cfg(target_os = "windows")]
- println!(
- "cargo:rustc-link-arg-bin=deno=/DEF:{}",
- symbols_path.display()
- );
-
- #[cfg(target_os = "macos")]
- println!(
- "cargo:rustc-link-arg-bin=deno=-Wl,-exported_symbols_list,{}",
- symbols_path.display()
- );
-
- #[cfg(target_os = "linux")]
- {
- // If a custom compiler is set, the glibc version is not reliable.
- // Here, we assume that if a custom compiler is used, that it will be modern enough to support a dynamic symbol list.
- if env::var("CC").is_err()
- && glibc_version::get_version()
- .map(|ver| ver.major <= 2 && ver.minor < 35)
- .unwrap_or(false)
- {
- println!("cargo:warning=Compiling with all symbols exported, this will result in a larger binary. Please use glibc 2.35 or later for an optimised build.");
- println!("cargo:rustc-link-arg-bin=deno=-rdynamic");
- } else {
- println!(
- "cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
- symbols_path.display()
- );
- }
- }
-
- #[cfg(target_os = "android")]
- println!(
- "cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
- symbols_path.display()
- );
-
// To debug snapshot issues uncomment:
// op_fetch_asset::trace_serializer();