CMake: Fix Android platform detection
...if an Android platform < 10 is installed. The existing platform detection code preferred android-9 over android-31, because the sorting did not use natural comparison. Natural comparison was added to CMake in version 3.18. We simulate this feature for older CMake versions. Pick-to: 6.2 Fixes: QTBUG-98726 Change-Id: Ib2eb87bd47220feb672275fa5203df4f2b6d7ca7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
793417ce75
commit
95ccdfa432
@ -35,6 +35,33 @@ endfunction()
|
||||
# Minimum recommend android SDK api version
|
||||
set(QT_ANDROID_API_VERSION "android-31")
|
||||
|
||||
function(qt_internal_sort_android_platforms out_var)
|
||||
if(CMAKE_VERSION GREATER_EQUAL 3.18)
|
||||
set(platforms ${ARGN})
|
||||
list(SORT platforms COMPARE NATURAL)
|
||||
else()
|
||||
# Simulate natural sorting:
|
||||
# - prepend every platform with its version as three digits, zero-padded
|
||||
# - regular sort
|
||||
# - remove the padded version prefix
|
||||
set(platforms)
|
||||
foreach(platform IN LISTS ARGN)
|
||||
set(version "000")
|
||||
if(platform MATCHES ".*-([0-9]+)$")
|
||||
set(version ${CMAKE_MATCH_1})
|
||||
string(LENGTH "${version}" version_length)
|
||||
math(EXPR padding_length "3 - ${version_length}")
|
||||
string(REPEAT "0" ${padding_length} padding)
|
||||
string(PREPEND version ${padding})
|
||||
endif()
|
||||
list(APPEND platforms "${version}~${platform}")
|
||||
endforeach()
|
||||
list(SORT platforms)
|
||||
list(TRANSFORM platforms REPLACE "^.*~" "")
|
||||
endif()
|
||||
set("${out_var}" "${platforms}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Locate android.jar
|
||||
set(QT_ANDROID_JAR "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_VERSION}/android.jar")
|
||||
if(NOT EXISTS "${QT_ANDROID_JAR}")
|
||||
@ -45,7 +72,7 @@ if(NOT EXISTS "${QT_ANDROID_JAR}")
|
||||
"${ANDROID_SDK_ROOT}/platforms/*")
|
||||
# If list is not empty
|
||||
if(android_platforms)
|
||||
list(SORT android_platforms)
|
||||
qt_internal_sort_android_platforms(android_platforms ${android_platforms})
|
||||
list(REVERSE android_platforms)
|
||||
list(GET android_platforms 0 android_platform_latest)
|
||||
set(QT_ANDROID_API_VERSION ${android_platform_latest})
|
||||
|
Loading…
x
Reference in New Issue
Block a user