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:
parent
971a3f15f0
commit
965997b369
@ -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…
x
Reference in New Issue
Block a user