123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #[=======================================================================[
- FindSdlAndroidPlatform
- ----------------------
- Locate the Android SDK platform.
- Imported targets
- ^^^^^^^^^^^^^^^^
- This module defines the following :prop_tgt:`IMPORTED` target(s):
- <none>
- Result variables
- ^^^^^^^^^^^^^^^^
- This find module will set the following variables in your project:
- `` SdlAndroidPlatform_FOUND
- if false, no Android platform has been found
- `` SDL_ANDROID_PLATFORM_ROOT
- path of the Android SDK platform root directory if found
- `` SDL_ANDROID_PLATFORM_ANDROID_JAR
- path of the Android SDK platform jar file if found
- `` SDL_ANDROID_PLATFORM_VERSION
- the human-readable string containing the android platform version if found
- Cache variables
- ^^^^^^^^^^^^^^^
- These variables may optionally be set to help this module find the correct files:
- ``SDL_ANDROID_PLATFORM_ROOT``
- path of the Android SDK platform root directory
- Variables for locating Android platform
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- This module responds to the flags:
- ``SDL_ANDROID_HOME
- First, this module will look for platforms in this CMake variable.
- ``ANDROID_HOME
- If no platform was found in `SDL_ANDROID_HOME`, then try `ANDROID_HOME`.
- ``$ENV{ANDROID_HOME}
- If no platform was found in neither `SDL_ANDROID_HOME` or `ANDROID_HOME`, then try `ANDROID_HOME}`
- #]=======================================================================]
- cmake_minimum_required(VERSION 3.7...3.28)
- if(NOT PROJECT_NAME MATCHES "^SDL.*")
- message(WARNING "This module is internal to SDL and is currently not supported.")
- endif()
- function(_sdl_is_valid_android_platform_root RESULT VERSION PLATFORM_ROOT)
- set(result FALSE)
- set(version -1)
- string(REGEX MATCH "/android-([0-9]+)$" root_match "${PLATFORM_ROOT}")
- if(root_match AND EXISTS "${PLATFORM_ROOT}/android.jar")
- set(result TRUE)
- set(version "${CMAKE_MATCH_1}")
- endif()
- set(${RESULT} ${result} PARENT_SCOPE)
- set(${VERSION} ${version} PARENT_SCOPE)
- endfunction()
- function(_sdl_find_android_platform_root ROOT)
- cmake_parse_arguments(sfapr "" "" "" ${ARGN})
- set(homes ${SDL_ANDROID_HOME} ${ANDROID_HOME} $ENV{ANDROID_HOME})
- set(root ${ROOT}-NOTFOUND)
- foreach(home IN LISTS homes)
- if(NOT IS_DIRECTORY "${home}")
- continue()
- endif()
- file(GLOB platform_roots LIST_DIRECTORIES true "${home}/platforms/*")
- set(max_platform_version -1)
- set(max_platform_root "")
- foreach(platform_root IN LISTS platform_roots)
- _sdl_is_valid_android_platform_root(is_valid platform_version "${platform_root}")
- if(is_valid AND platform_version GREATER max_platform_version)
- set(max_platform_version "${platform_version}")
- set(max_platform_root "${platform_root}")
- endif()
- endforeach()
- if(max_platform_version GREATER -1)
- set(root ${max_platform_root})
- break()
- endif()
- endforeach()
- set(${ROOT} ${root} PARENT_SCOPE)
- endfunction()
- set(SDL_ANDROID_PLATFORM_ANDROID_JAR "SDL_ANDROID_PLATFORM_ANDROID_JAR-NOTFOUND")
- if(NOT DEFINED SDL_ANDROID_PLATFORM_ROOT)
- _sdl_find_android_platform_root(_new_sdl_android_platform_root)
- set(SDL_ANDROID_PLATFORM_ROOT "${_new_sdl_android_platform_root}" CACHE PATH "Path of Android platform")
- unset(_new_sdl_android_platform_root)
- endif()
- if(SDL_ANDROID_PLATFORM_ROOT)
- _sdl_is_valid_android_platform_root(_valid SDL_ANDROID_PLATFORM_VERSION "${SDL_ANDROID_PLATFORM_ROOT}")
- if(_valid)
- set(SDL_ANDROID_PLATFORM_ANDROID_JAR "${SDL_ANDROID_PLATFORM_ROOT}/android.jar")
- endif()
- unset(_valid)
- endif()
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(SdlAndroidPlatform
- VERSION_VAR SDL_ANDROID_PLATFORM_VERSION
- REQUIRED_VARS SDL_ANDROID_PLATFORM_ROOT SDL_ANDROID_PLATFORM_ANDROID_JAR
- )
|