diff options
author | Brad King <brad.king@kitware.com> | 2017-06-12 14:23:00 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-06-12 14:23:06 (GMT) |
commit | 637ff39d4554e581d87ade1bce39671c811ebd09 (patch) | |
tree | 6af817b2ca90746a88efbd79d087e3ef69ad6383 /Modules/Platform | |
parent | 00b91b153089cfec8d60fd58bfa135e55ddae1b9 (diff) | |
parent | 5f93bf787d0ccccf1aa6dc3f6f1d0df3855a55f6 (diff) | |
download | CMake-637ff39d4554e581d87ade1bce39671c811ebd09.zip CMake-637ff39d4554e581d87ade1bce39671c811ebd09.tar.gz CMake-637ff39d4554e581d87ade1bce39671c811ebd09.tar.bz2 |
Merge topic 'android-standalone-unified-api-level'
5f93bf78 Android: Detect API version of standalone toolchain with unified headers
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !950
Diffstat (limited to 'Modules/Platform')
-rw-r--r-- | Modules/Platform/Android-Determine.cmake | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/Modules/Platform/Android-Determine.cmake b/Modules/Platform/Android-Determine.cmake index 6d370ab..076be85 100644 --- a/Modules/Platform/Android-Determine.cmake +++ b/Modules/Platform/Android-Determine.cmake @@ -100,11 +100,34 @@ endif() set(_ANDROID_STANDALONE_TOOLCHAIN_API "") if(CMAKE_ANDROID_STANDALONE_TOOLCHAIN) - set(_ANDROID_API_LEVEL_H_REGEX "^[\t ]*#[\t ]*define[\t ]+__ANDROID_API__[\t ]+([0-9]+)") - file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h" - _ANDROID_API_LEVEL_H_CONTENT REGEX "${_ANDROID_API_LEVEL_H_REGEX}") - if(_ANDROID_API_LEVEL_H_CONTENT MATCHES "${_ANDROID_API_LEVEL_H_REGEX}") - set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}") + # Try to read the API level from the toolchain launcher. + if(EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang") + set(_ANDROID_API_LEVEL_CLANG_REGEX "__ANDROID_API__=([0-9]+)") + file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang" _ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG + REGEX "${_ANDROID_API_LEVEL_CLANG_REGEX}" LIMIT_COUNT 1 LIMIT_INPUT 65536) + if(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG MATCHES "${_ANDROID_API_LEVEL_CLANG_REGEX}") + set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}") + endif() + unset(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG) + unset(_ANDROID_API_LEVEL_CLANG_REGEX) + endif() + if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API) + # The compiler launcher does not know __ANDROID_API__. Assume this + # is not unified headers and look for it in the api-level.h header. + set(_ANDROID_API_LEVEL_H_REGEX "^[\t ]*#[\t ]*define[\t ]+__ANDROID_API__[\t ]+([0-9]+)") + file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h" + _ANDROID_API_LEVEL_H_CONTENT REGEX "${_ANDROID_API_LEVEL_H_REGEX}") + if(_ANDROID_API_LEVEL_H_CONTENT MATCHES "${_ANDROID_API_LEVEL_H_REGEX}") + set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}") + endif() + endif() + if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API) + message(WARNING + "Android: Did not detect API level from\n" + " ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang\n" + "or\n" + " ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h\n" + ) endif() endif() |