diff options
author | Brad King <brad.king@kitware.com> | 2020-11-05 12:55:39 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-11-05 12:55:46 (GMT) |
commit | a9e2b18bf38a1c1d427b40ff12cf9f5bc517650a (patch) | |
tree | deb68cae886734bbe6b6879dcc510b88efd6ced7 | |
parent | d720cd847e332f1fe700eb77ad597bfc5e9f0223 (diff) | |
parent | 4dca07882944ec5c1d87edf1b7df9f3c7294e0d0 (diff) | |
download | CMake-a9e2b18bf38a1c1d427b40ff12cf9f5bc517650a.zip CMake-a9e2b18bf38a1c1d427b40ff12cf9f5bc517650a.tar.gz CMake-a9e2b18bf38a1c1d427b40ff12cf9f5bc517650a.tar.bz2 |
Merge topic 'android-stl'
4dca078829 Android: Link c++abi and android_support when necessary
738caa4d48 Android: Add options to control exceptions/rtti
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5444
-rw-r--r-- | Help/manual/cmake-variables.7.rst | 2 | ||||
-rw-r--r-- | Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst | 7 | ||||
-rw-r--r-- | Help/variable/CMAKE_ANDROID_RTTI.rst | 7 | ||||
-rw-r--r-- | Modules/Platform/Android-Common.cmake | 12 |
4 files changed, 28 insertions, 0 deletions
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 230fd3d..f0c9d99 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -336,6 +336,7 @@ Variables that Control the Build /variable/CMAKE_ANDROID_ARM_MODE /variable/CMAKE_ANDROID_ARM_NEON /variable/CMAKE_ANDROID_ASSETS_DIRECTORIES + /variable/CMAKE_ANDROID_EXCEPTIONS /variable/CMAKE_ANDROID_GUI /variable/CMAKE_ANDROID_JAR_DEPENDENCIES /variable/CMAKE_ANDROID_JAR_DIRECTORIES @@ -349,6 +350,7 @@ Variables that Control the Build /variable/CMAKE_ANDROID_PROCESS_MAX /variable/CMAKE_ANDROID_PROGUARD /variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH + /variable/CMAKE_ANDROID_RTTI /variable/CMAKE_ANDROID_SECURE_PROPS_PATH /variable/CMAKE_ANDROID_SKIP_ANT_STEP /variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN diff --git a/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst b/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst new file mode 100644 index 0000000..6dd44f8 --- /dev/null +++ b/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst @@ -0,0 +1,7 @@ +CMAKE_ANDROID_EXCEPTIONS +------------------------ + +.. versionadded:: 3.20 + +When :ref:`Cross Compiling for Android with the NDK`, this variable may be set +to specify whether exceptions are enabled. diff --git a/Help/variable/CMAKE_ANDROID_RTTI.rst b/Help/variable/CMAKE_ANDROID_RTTI.rst new file mode 100644 index 0000000..0e98206 --- /dev/null +++ b/Help/variable/CMAKE_ANDROID_RTTI.rst @@ -0,0 +1,7 @@ +CMAKE_ANDROID_RTTI +------------------ + +.. versionadded:: 3.20 + +When :ref:`Cross Compiling for Android with the NDK`, this variable may be set +to specify whether RTTI is enabled. diff --git a/Modules/Platform/Android-Common.cmake b/Modules/Platform/Android-Common.cmake index 581fde4..39da933 100644 --- a/Modules/Platform/Android-Common.cmake +++ b/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) @@ -81,6 +87,12 @@ if(CMAKE_ANDROID_STL_TYPE) "Android: STL '${CMAKE_ANDROID_STL_TYPE}' not supported by this NDK." ) endif() + if(DEFINED CMAKE_ANDROID_RTTI) + set(_ANDROID_STL_RTTI ${CMAKE_ANDROID_RTTI}) + endif() + if(DEFINED CMAKE_ANDROID_EXCEPTIONS) + set(_ANDROID_STL_EXCEPTIONS ${CMAKE_ANDROID_EXCEPTIONS}) + endif() elseif(CMAKE_ANDROID_NDK) macro(__android_stl_inc lang dir req) |