summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kamaev <andrey.kamaev@itseez.com>2012-12-09 18:01:40 +0400
committerAndrey Kamaev <andrey.kamaev@itseez.com>2012-12-09 18:01:40 +0400
commit863a1a95778f97f500243710cc505649a260a0dc (patch)
tree06308635ad7856e2fc8fdcf534d45661fc8c63e1
parent1f78d318131c93e0b9147535e9126d7a2a597c53 (diff)
downloadandroid-cmake-863a1a95778f97f500243710cc505649a260a0dc.tar.gz
Adjust API level to closest compatible as NDK does
-rw-r--r--android.toolchain.cmake16
1 files changed, 14 insertions, 2 deletions
diff --git a/android.toolchain.cmake b/android.toolchain.cmake
index 28ebbcd..6418b09 100644
--- a/android.toolchain.cmake
+++ b/android.toolchain.cmake
@@ -282,6 +282,7 @@
# [+] added support for clang compiler
# - December 2012
# [+] suppress warning about unused CMAKE_TOOLCHAIN_FILE variable
+# [+] adjust API level to closest compatible as NDK does
# ------------------------------------------------------------------------------
cmake_minimum_required( VERSION 2.6.3 )
@@ -763,11 +764,22 @@ unset( __availableToolchainCompilerVersions )
# choose native API level
__INIT_VARIABLE( ANDROID_NATIVE_API_LEVEL ENV_ANDROID_NATIVE_API_LEVEL ANDROID_API_LEVEL ENV_ANDROID_API_LEVEL ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME} ANDROID_DEFAULT_NDK_API_LEVEL )
string( REGEX MATCH "[0-9]+" ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" )
-# TODO: filter out unsupported levels
+# adjust API level
+set( __real_api_level ${ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME}} )
+foreach( __level ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
+ if( NOT __level GREATER ANDROID_NATIVE_API_LEVEL AND NOT __level LESS __real_api_level )
+ set( __real_api_level ${__level} )
+ endif()
+endforeach()
+if( __real_api_level AND NOT ANDROID_NATIVE_API_LEVEL EQUAL __real_api_level )
+ message( STATUS "Adjusting Android API level 'android-${ANDROID_NATIVE_API_LEVEL}' to 'android-${__real_api_level}'")
+ set( ANDROID_NATIVE_API_LEVEL ${__real_api_level} )
+endif()
+unset(__real_api_level)
# validate
list( FIND ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_NATIVE_API_LEVEL}" __levelIdx )
if( __levelIdx EQUAL -1 )
- message( SEND_ERROR "Specified Android native API level (${ANDROID_NATIVE_API_LEVEL}) is not supported by your NDK/toolchain." )
+ message( SEND_ERROR "Specified Android native API level 'android-${ANDROID_NATIVE_API_LEVEL}' is not supported by your NDK/toolchain." )
else()
if( BUILD_WITH_ANDROID_NDK )
__DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h" )