Browse Source

Android: Link c++abi and android_support when necessary

For older NDKs we used `__android_stl_lib` to link these libraries, but
the `CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED` code path does not use that.
Link the libraries the way the NDK toolchain file does:

  https://android.googlesource.com/platform/ndk/+/43b2de34ef9e3a70573fe51a9e069f985a4be5b9/build/cmake/android.toolchain.cmake#368
Haibo Huang 5 years ago
parent
commit
4dca078829
1 changed files with 6 additions and 0 deletions
  1. 6 0
      Modules/Platform/Android-Common.cmake

+ 6 - 0
Modules/Platform/Android-Common.cmake

@@ -53,6 +53,12 @@ if(CMAKE_ANDROID_STL_TYPE)
       set(_ANDROID_STL_RTTI 0)
       macro(__android_stl lang)
         string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libstdc++")
+        if(_ANDROID_STL_EXCEPTIONS OR _ANDROID_STL_RTTI)
+          string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -lc++abi")
+          if(CMAKE_SYSTEM_VERSION LESS 21)
+            list(APPEND CMAKE_${lang}_STANDARD_LIBRARIES "-landroid_support")
+          endif()
+        endif()
       endmacro()
     elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_static")
       set(_ANDROID_STL_EXCEPTIONS 1)