mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-10-26 12:27:44 +00:00 
			
		
		
		
	cmake: create Android jars + apks for tests
This commit is contained in:
		 Anonymous Maarten
					Anonymous Maarten
				
			
				
					committed by
					
						 Anonymous Maarten
						Anonymous Maarten
					
				
			
			
				
	
			
			
			 Anonymous Maarten
						Anonymous Maarten
					
				
			
						parent
						
							58882425fc
						
					
				
				
					commit
					a4bb4eef73
				
			
							
								
								
									
										74
									
								
								cmake/android/SdlAndroidScript.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								cmake/android/SdlAndroidScript.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| #[=======================================================================[ | ||||
|  | ||||
| This CMake script is meant to be used in CMake script mode (cmake -P). | ||||
| It wraps commands that communicate with an actual Android device. | ||||
| Because | ||||
|  | ||||
| #]=======================================================================] | ||||
|  | ||||
| cmake_minimum_required(VERSION 3.16) | ||||
|  | ||||
| if(NOT CMAKE_SCRIPT_MODE_FILE) | ||||
|   message(FATAL_ERROR "This file can only be used in CMake script mode") | ||||
| endif() | ||||
| if(NOT ADB) | ||||
|   set(ADB "adb") | ||||
| endif() | ||||
|  | ||||
| if(NOT ACTION) | ||||
|   message(FATAL_ERROR "Missing ACTION argument") | ||||
| endif() | ||||
|  | ||||
| if(ACTION STREQUAL "uninstall") | ||||
|   # The uninstall action attempts to uninstall all packages. All failures are ignored. | ||||
|   foreach(package IN LISTS PACKAGES) | ||||
|     message("Uninstalling ${package} ...") | ||||
|     execute_process( | ||||
|         COMMAND ${ADB} uninstall ${package} | ||||
|         RESULT_VARIABLE res | ||||
|     ) | ||||
|     message("... result=${res}") | ||||
|   endforeach() | ||||
| elseif(ACTION STREQUAL "install") | ||||
|   # The install actions attempts to install APK's to an Android device using adb. Failures are ignored. | ||||
|   set(failed_apks "") | ||||
|   foreach(apk IN LISTS APKS) | ||||
|     message("Installing ${apk} ...") | ||||
|     execute_process( | ||||
|         COMMAND ${ADB} install -d -r --streaming ${apk} | ||||
|         RESULT_VARIABLE res | ||||
|     ) | ||||
|     message("... result=${res}") | ||||
|     if(NOT res EQUAL 0) | ||||
|       list(APPEND failed_apks ${apk}) | ||||
|     endif() | ||||
|   endforeach() | ||||
|   if(failed_apks) | ||||
|     message(FATAL_ERROR "Failed to install ${failed_apks}") | ||||
|   endif() | ||||
| elseif(ACTION STREQUAL "build-install-run") | ||||
|   if(NOT EXECUTABLES) | ||||
|     message(FATAL_ERROR "Missing EXECUTABLES (don't know what executables to build/install and start") | ||||
|   endif() | ||||
|   if(NOT BUILD_FOLDER) | ||||
|     message(FATAL_ERROR "Missing BUILD_FOLDER (don't know where to build the APK's") | ||||
|   endif() | ||||
|   set(install_targets "") | ||||
|   foreach(executable IN LISTS EXECUTABLES) | ||||
|     list(APPEND install_targets "install-${executable}") | ||||
|   endforeach() | ||||
|   execute_process( | ||||
|       COMMAND ${CMAKE_COMMAND} --build "${BUILD_FOLDER}" --target ${install_targets} | ||||
|       RESULT_VARIABLE res | ||||
|   ) | ||||
|   if(NOT res EQUAL 0) | ||||
|     message(FATAL_ERROR "Failed to install APK(s) for ${EXECUTABLES}") | ||||
|   endif() | ||||
|   list(GET EXECUTABLES 0 start_executable) | ||||
|   execute_process( | ||||
|       COMMAND ${CMAKE_COMMAND} --build "${BUILD_FOLDER}" --target start-${start_executable} | ||||
|       RESULT_VARIABLE res | ||||
|   ) | ||||
| else() | ||||
|   message(FATAL_ERROR "Unknown ACTION=${ACTION}") | ||||
| endif() | ||||
		Reference in New Issue
	
	Block a user