65 lines
2.3 KiB
CMake
65 lines
2.3 KiB
CMake
include(${CMAKE_ANDROID_NDK}/build/cmake/abis.cmake)
|
|
include(${CMAKE_ANDROID_NDK}/build/cmake/platforms.cmake)
|
|
|
|
function(adjust_api_level api_level result_name)
|
|
# If no platform version was chosen by the user, default to the minimum
|
|
# version supported by this NDK.
|
|
if(NOT api_level)
|
|
message(STATUS
|
|
"ANDROID_PLATFORM not set. Defaulting to minimum supported version "
|
|
"${NDK_MIN_PLATFORM_LEVEL}.")
|
|
|
|
set(api_level "android-${NDK_MIN_PLATFORM_LEVEL}")
|
|
endif()
|
|
|
|
if(api_level STREQUAL "latest")
|
|
message(STATUS
|
|
"Using latest available ANDROID_PLATFORM: ${NDK_MAX_PLATFORM_LEVEL}.")
|
|
set(api_level "android-${NDK_MAX_PLATFORM_LEVEL}")
|
|
endif()
|
|
|
|
string(REPLACE "android-" "" result ${api_level})
|
|
|
|
# Aliases defined by meta/platforms.json include codename aliases for platform
|
|
# API levels as well as cover any gaps in platforms that may not have had NDK
|
|
# APIs.
|
|
if(NOT "${NDK_PLATFORM_ALIAS_${result}}" STREQUAL "")
|
|
message(STATUS
|
|
"${api_level} is an alias for ${NDK_PLATFORM_ALIAS_${result}}. Adjusting "
|
|
"ANDROID_PLATFORM to match.")
|
|
set(api_level "${NDK_PLATFORM_ALIAS_${result}}")
|
|
string(REPLACE "android-" "" result ${api_level})
|
|
endif()
|
|
|
|
# Pull up to the minimum supported version if an old API level was requested.
|
|
if(result LESS NDK_MIN_PLATFORM_LEVEL)
|
|
message(STATUS
|
|
"${api_level} is unsupported. Using minimum supported version "
|
|
"${NDK_MIN_PLATFORM_LEVEL}.")
|
|
set(api_level "android-${NDK_MIN_PLATFORM_LEVEL}")
|
|
string(REPLACE "android-" "" result ${api_level})
|
|
endif()
|
|
|
|
# Pull up any ABI-specific minimum API levels.
|
|
set(min_for_abi ${NDK_ABI_${ANDROID_ABI}_MIN_OS_VERSION})
|
|
|
|
if(result LESS min_for_abi)
|
|
message(STATUS
|
|
"android-${result} is not supported for ${ANDROID_ABI}. Using minimum "
|
|
"supported ${ANDROID_ABI} version ${min_for_abi}.")
|
|
set(api_level android-${min_for_abi})
|
|
set(result ${min_for_abi})
|
|
endif()
|
|
|
|
# ANDROID_PLATFORM beyond the maximum is an error. The correct way to specify
|
|
# the latest version is ANDROID_PLATFORM=latest.
|
|
if(result GREATER NDK_MAX_PLATFORM_LEVEL)
|
|
message(SEND_ERROR
|
|
"${api_level} is above the maximum supported version "
|
|
"${NDK_MAX_PLATFORM_LEVEL}. Choose a supported API level or set "
|
|
"ANDROID_PLATFORM to \"latest\".")
|
|
endif()
|
|
|
|
set(${result_name} ${result} PARENT_SCOPE)
|
|
endfunction()
|