Merge pull request #1207 from napi-rs/fix-android-build
fix: android builds broken by actions default ndk version bump
This commit is contained in:
commit
357e6bf0d5
4 changed files with 25 additions and 8 deletions
2
.github/workflows/android-armv7.yml
vendored
2
.github/workflows/android-armv7.yml
vendored
|
@ -60,5 +60,5 @@ jobs:
|
||||||
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
|
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
|
||||||
yarn build:test:android:armv7
|
yarn build:test:android:armv7
|
||||||
du -sh examples/napi/index.node
|
du -sh examples/napi/index.node
|
||||||
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip examples/napi/index.node
|
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip examples/napi/index.node
|
||||||
du -sh examples/napi/index.node
|
du -sh examples/napi/index.node
|
||||||
|
|
|
@ -40,11 +40,7 @@ pub struct NapiFnArg {
|
||||||
impl NapiFnArg {
|
impl NapiFnArg {
|
||||||
/// if type was overridden with `#[napi(ts_arg_type = "...")]` use that instead
|
/// if type was overridden with `#[napi(ts_arg_type = "...")]` use that instead
|
||||||
pub fn use_overridden_type_or(&self, default: impl FnOnce() -> String) -> String {
|
pub fn use_overridden_type_or(&self, default: impl FnOnce() -> String) -> String {
|
||||||
self
|
self.ts_arg_type.as_ref().cloned().unwrap_or_else(default)
|
||||||
.ts_arg_type
|
|
||||||
.as_ref()
|
|
||||||
.map(|ts| ts.clone())
|
|
||||||
.unwrap_or_else(default)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
crates/build/src/android.rs
Normal file
16
crates/build/src/android.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
use std::io::{Error, Write};
|
||||||
|
use std::path;
|
||||||
|
|
||||||
|
// Workaround from https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946
|
||||||
|
pub fn setup() -> Result<(), Error> {
|
||||||
|
let out_dir = env::var("OUT_DIR").expect("OUT_DIR not set");
|
||||||
|
let mut dist = path::PathBuf::from(&out_dir);
|
||||||
|
dist.push("libgcc.a");
|
||||||
|
let mut libgcc = fs::File::create(&dist)?;
|
||||||
|
let _ = libgcc.write(b"INPUT(-lunwind)")?;
|
||||||
|
drop(libgcc);
|
||||||
|
println!("cargo:rustc-link-search={}", &out_dir);
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -1,8 +1,13 @@
|
||||||
|
mod android;
|
||||||
mod macos;
|
mod macos;
|
||||||
|
|
||||||
pub fn setup() {
|
pub fn setup() {
|
||||||
println!("cargo:rerun-if-env-changed=DEBUG_GENERATED_CODE");
|
println!("cargo:rerun-if-env-changed=DEBUG_GENERATED_CODE");
|
||||||
if let Ok("macos") = std::env::var("CARGO_CFG_TARGET_OS").as_deref() {
|
match std::env::var("CARGO_CFG_TARGET_OS").as_deref() {
|
||||||
macos::setup();
|
Ok("macos") => {
|
||||||
|
macos::setup();
|
||||||
|
}
|
||||||
|
Ok("android") => if android::setup().is_ok() {},
|
||||||
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue