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()