Auto merge of #85806 - ATiltedTree:android-ndk-beta, r=petrochenkov
Support Android ndk versions `r23-beta3` and up Since android ndk version `r23-beta3`, `libgcc` has been replaced with `libunwind`. This moves the linking of `libgcc`/`libunwind` into the `unwind` crate where we check if the system compiler can find `libunwind` and fall back to `libgcc` if needed.
This commit is contained in:
commit
efc4e377bf
4 changed files with 17 additions and 4 deletions
|
@ -652,9 +652,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "compiler_builtins"
|
||||
version = "0.1.43"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "65af2dcae4779003dfa91aedc6ade7bdc7ba685944e50a8b4f9380df376a4466"
|
||||
checksum = "787187ae221adfcda34b03006f1617099e4ae26b50e5a4db282496014ab75837"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"rustc-std-workspace-core",
|
||||
|
|
|
@ -17,7 +17,7 @@ panic_unwind = { path = "../panic_unwind", optional = true }
|
|||
panic_abort = { path = "../panic_abort" }
|
||||
core = { path = "../core" }
|
||||
libc = { version = "0.2.93", default-features = false, features = ['rustc-dep-of-std'] }
|
||||
compiler_builtins = { version = "0.1.43" }
|
||||
compiler_builtins = { version = "0.1.44" }
|
||||
profiler_builtins = { path = "../profiler_builtins", optional = true }
|
||||
unwind = { path = "../unwind" }
|
||||
hashbrown = { version = "0.11", default-features = false, features = ['rustc-dep-of-std'] }
|
||||
|
|
|
@ -210,7 +210,6 @@ cfg_if::cfg_if! {
|
|||
if #[cfg(target_os = "android")] {
|
||||
#[link(name = "dl")]
|
||||
#[link(name = "log")]
|
||||
#[link(name = "gcc")]
|
||||
extern "C" {}
|
||||
} else if #[cfg(target_os = "freebsd")] {
|
||||
#[link(name = "execinfo")]
|
||||
|
|
|
@ -20,6 +20,20 @@ fn main() {
|
|||
// linking for Linux is handled in lib.rs
|
||||
if target.contains("musl") {
|
||||
llvm_libunwind::compile();
|
||||
} else if target.contains("android") {
|
||||
let build = cc::Build::new();
|
||||
|
||||
// Since ndk r23 beta 3 `libgcc` was replaced with `libunwind` thus
|
||||
// check if we have `libunwind` available and if so use it. Otherwise
|
||||
// fall back to `libgcc` to support older ndk versions.
|
||||
let has_unwind =
|
||||
build.is_flag_supported("-lunwind").expect("Unable to invoke compiler");
|
||||
|
||||
if has_unwind {
|
||||
println!("cargo:rustc-link-lib=unwind");
|
||||
} else {
|
||||
println!("cargo:rustc-link-lib=gcc");
|
||||
}
|
||||
}
|
||||
} else if target.contains("freebsd") {
|
||||
println!("cargo:rustc-link-lib=gcc_s");
|
||||
|
|
Loading…
Add table
Reference in a new issue