summaryrefslogtreecommitdiff
path: root/cli/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/build.rs')
-rw-r--r--cli/build.rs73
1 files changed, 21 insertions, 52 deletions
diff --git a/cli/build.rs b/cli/build.rs
index aa5d3d18c..3d9866128 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();
@@ -449,6 +400,24 @@ fn main() {
println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap());
println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap());
+ if cfg!(windows) {
+ // these dls load slowly, so delay loading them
+ let dlls = [
+ // webgpu
+ "d3dcompiler_47",
+ "OPENGL32",
+ // network related functions
+ "iphlpapi",
+ ];
+ for dll in dlls {
+ println!("cargo:rustc-link-arg-bin=deno=/delayload:{dll}.dll");
+ println!("cargo:rustc-link-arg-bin=denort=/delayload:{dll}.dll");
+ }
+ // enable delay loading
+ println!("cargo:rustc-link-arg-bin=deno=delayimp.lib");
+ println!("cargo:rustc-link-arg-bin=denort=delayimp.lib");
+ }
+
let c = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
let o = PathBuf::from(env::var_os("OUT_DIR").unwrap());