diff options
author | Luke Channings <461449+LukeChannings@users.noreply.github.com> | 2022-10-10 03:29:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-10 07:59:31 +0530 |
commit | a2488ae79200abfcbad0f0f8b084a3ff8e183880 (patch) | |
tree | 23a0e5138e0de596834b71a65795a0ffb5ddcfa2 /cli | |
parent | 3b6b75bb46840a897a310dfd3fcbbd05618f3c5b (diff) |
fix(npm): support compiling on linux/aarch64 (#16208)
Changes introduced in #13633 have broken the ability to compile for
linux/aarch64 - specifically the use of a `i8` as a char type, which is
an `u8` on linux/aarch64.
This PR:
- Replaces instances of `i8` with the architecture-aware wrapper type
`c_char`
- Skips the use of `--export-dynamic-symbol` on linux-aarch64, because
the target environments often rely on older libc/binutils versions
Diffstat (limited to 'cli')
-rw-r--r-- | cli/bench/http.rs | 3 | ||||
-rw-r--r-- | cli/build.rs | 9 | ||||
-rw-r--r-- | cli/napi/env.rs | 3 |
3 files changed, 13 insertions, 2 deletions
diff --git a/cli/bench/http.rs b/cli/bench/http.rs index 0af2b5393..a656ee708 100644 --- a/cli/bench/http.rs +++ b/cli/bench/http.rs @@ -67,6 +67,9 @@ pub fn benchmark( #[cfg(target_vendor = "apple")] #[cfg(target_arch = "aarch64")] let bun_exe = test_util::prebuilt_tool_path("bun-aarch64"); + #[cfg(target_os = "linux")] + #[cfg(target_arch = "aarch64")] + let bun_exe = test_util::prebuilt_tool_path("bun-aarch64"); // bun <path> <port> res.insert( diff --git a/cli/build.rs b/cli/build.rs index 77c95fb17..0d683780f 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -343,7 +343,10 @@ fn main() { .display(), ); - #[cfg(not(target_os = "windows"))] + #[cfg(all( + not(target_os = "windows"), + not(all(target_os = "linux", target_arch = "aarch64")) + ))] { // Load the symbols file generated by the `napi_sym` macro. #[derive(serde::Deserialize)] @@ -375,6 +378,10 @@ fn main() { } } + // Linux + aarch64 does not support a glibc version that supports `--export-dynamic-symbol`. + #[cfg(all(target_os = "linux", target_arch = "aarch64"))] + println!("cargo:rustc-link-arg-bin=deno=-rdynamic"); + // To debug snapshot issues uncomment: // op_fetch_asset::trace_serializer(); diff --git a/cli/napi/env.rs b/cli/napi/env.rs index 24dc8af81..df9af522f 100644 --- a/cli/napi/env.rs +++ b/cli/napi/env.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_runtime::deno_napi::*; +use std::os::raw::c_char; /// # Safety /// @@ -125,7 +126,7 @@ const NODE_VERSION: napi_node_version = napi_node_version { major: 17, minor: 4, patch: 0, - release: "Deno\0".as_ptr() as *const i8, + release: "Deno\0".as_ptr() as *const c_char, }; #[napi_sym::napi_sym] |