mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-31 16:26:03 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| #[=======================================================================[
 | |
| 
 | |
| 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
 | |
| )
 | 
