gradle_windows.cmd 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. @ECHO OFF
  2. REM
  3. REM Copyright (c) Contributors to the Open 3D Engine Project.
  4. REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. REM
  6. REM SPDX-License-Identifier: Apache-2.0 OR MIT
  7. REM
  8. REM
  9. SETLOCAL EnableDelayedExpansion
  10. SET CURRENT_DIR=%cd%
  11. REM Calculate the path of the engine based on the relative position of this script
  12. SET CMD_DIR=%~dp0
  13. SET CMD_DIR=%CMD_DIR:~0,-1%
  14. SET O3DE_PATH_REL=%CMD_DIR%\..\..\..\..\
  15. for %%i in ("%O3DE_PATH_REL%") do SET "O3DE_PATH=%%~fi"
  16. ECHO Using O3DE Engine at '%O3DE_PATH%'
  17. REM Validate the Android SDK is set
  18. IF "%ANDROID_SDK_ROOT%" == "" (
  19. ECHO Environment key ANDROID_SDK_ROOT not set
  20. GOTO :error
  21. )
  22. IF NOT EXIST "%ANDROID_SDK_ROOT%" (
  23. ECHO Environment key value for ANDROID_SDK_ROOT '%ANDROID_SDK_ROOT%' does not exist
  24. GOTO :error
  25. )
  26. ECHO Using Android SDK at '%ANDROID_SDK_ROOT%'
  27. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value sdk.root="%ANDROID_SDK_ROOT%" --global
  28. IF DEFINED USE_GRADLE_FROM_PATH (
  29. FOR /F delims^=^"^ tokens^=1 %%i in ('where /F gradle') do (
  30. set GRADLE_LOCATION=%%i
  31. goto :found_gradle_from_path
  32. )
  33. :found_gradle_from_path
  34. if "!GRADLE_LOCATION!" == "" (
  35. ECHO Environment key USE_GRADLE_FROM_PATH set but Gradle was not found on the path.
  36. GOTO :error
  37. )
  38. call :get_path_of_filename result "!GRADLE_LOCATION!"
  39. set GRADLE_HOME=!result!..
  40. set GRADLE_BUILD_HOME=!GRADLE_HOME!
  41. ) ELSE (
  42. REM Validate that gradle home path was set
  43. IF "%GRADLE_BUILD_HOME%" == "" (
  44. ECHO Environment key GRADLE_BUILD_HOME not set
  45. GOTO :error
  46. )
  47. IF NOT EXIST "%GRADLE_BUILD_HOME%" (
  48. ECHO Environment key value for ANDROID_SDK_ROOT '%GRADLE_BUILD_HOME%' does not exist
  49. GOTO :error
  50. )
  51. )
  52. ECHO Using Gradle Build at '%GRADLE_BUILD_HOME%'
  53. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value gradle.home="%GRADLE_BUILD_HOME%" --global
  54. REM Optionally override the gradle plugin version, otherwise default to 8.1.4
  55. IF "%ANDROID_GRADLE_PLUGIN%" == "" (
  56. ECHO Using [default] Android gradle plugin version 8.1.4
  57. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value android.gradle.plugin=8.1.4 --global
  58. ) else (
  59. ECHO Using [default] Android gradle plugin version
  60. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value android.gradle.plugin=%ANDROID_GRADLE_PLUGIN% --global
  61. )
  62. REM Optionally override the version of the android NDK to use, otherwise default to 25
  63. IF "%ANDROID_NDK_VERSION%" == "" (
  64. ECHO Using [default] Android NDK Version 25
  65. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value ndk.version=25.*
  66. ) else (
  67. ECHO Using [default] Android NDK Version %ANDROID_NDK_VERSION%
  68. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value ndk.version=%ANDROID_NDK_VERSION%
  69. )
  70. IF NOT EXIST %OUTPUT_DIRECTORY% (
  71. mkdir %OUTPUT_DIRECTORY%
  72. ) ELSE (
  73. ECHO Clearing and reseting existing build folder
  74. DEL /S /F /Q %OUTPUT_DIRECTORY%
  75. RMDIR /S /Q %OUTPUT_DIRECTORY%
  76. mkdir %OUTPUT_DIRECTORY%
  77. )
  78. REM Jenkins does not defined TMP
  79. IF "%TMP%"=="" (
  80. IF "%WORKSPACE%"=="" (
  81. SET TMP=%APPDATA%\Local\Temp
  82. SET TEMP=%APPDATA%\Local\Temp
  83. ) ELSE (
  84. SET TMP=%WORKSPACE%\Temp
  85. SET TEMP=%WORKSPACE%\Temp
  86. REM This folder may not be created in the workspace
  87. IF NOT EXIST "!TMP!" (
  88. MKDIR "!TMP!"
  89. )
  90. )
  91. )
  92. REM Create a minimal project for the native build process
  93. IF EXIST "%TMP%\o3de_gradle_ar" (
  94. DEL /S /F /Q "%TMP%\o3de_gradle_ar"
  95. RMDIR /S /Q "%TMP%\o3de_gradle_ar"
  96. )
  97. ECHO Creating a minimal project for the native build process
  98. ECHO %PYTHON% %O3DE_PATH%\scripts\o3de.bat create-project -pp "%TMP%\o3de_gradle_ar" -pn GradleTest -tn MinimalProject
  99. CALL %PYTHON% %O3DE_PATH%\scripts\o3de.bat create-project -pp "%TMP%\o3de_gradle_ar" -pn GradleTest -tn MinimalProject
  100. REM Optionally sign the APK if we are generating an APK
  101. SET GENERATE_SIGNED_APK=false
  102. IF "%SIGN_APK%"=="true" (
  103. IF "%GRADLE_BUILD_CMD%"=="assemble" (
  104. SET GENERATE_SIGNED_APK=true
  105. )
  106. )
  107. SET PYTHON=%O3DE_PATH%\python\python.cmd
  108. IF "%JDK_PATH%" == "" (
  109. IF "%JAVA_HOME%" == "" (
  110. REM First look in the windowsregistry
  111. FOR /F "skip=2 tokens=1,2*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8" /v "JavaHome" 2^>nul') DO (
  112. SET JDK_REG_VALUE=%%C
  113. )
  114. IF EXIST "%JDK_REG_VALUE%" (
  115. SET JAVA_HOME=!JDK_REG_VALUE!
  116. ECHO JAVA_HOME found in registry: !JAVA_HOME!
  117. GOTO JDK_FOUND
  118. ) ELSE (
  119. REM Next, look for the JDK HOME in the environment variable
  120. IF EXIST "%JAVA_HOME%" (
  121. ECHO JDK Home found in Environment: !JAVA_HOME!
  122. GOTO JDK_FOUND
  123. )
  124. )
  125. ) else (
  126. echo Using Java from JAVA_HOME at '%JAVA_HOME%'
  127. IF EXIST "%JAVA_HOME%" (
  128. GOTO :JDK_FOUND
  129. )
  130. echo JAVA_HOME set to an invalid path '%JAVA_HOME%'
  131. )
  132. ) else (
  133. echo Using Java from JDK_PATH at '%JDK_PATH%'
  134. IF EXIST "%JDK_PATH%" (
  135. SET JAVA_HOME=%JDK_PATH%
  136. GOTO :JDK_FOUND
  137. )
  138. echo JDK_PATH set to an invalid path '%JDK_PATH%'
  139. )
  140. ECHO Unable to locate JAVA_HOME
  141. GOTO error
  142. :JDK_FOUND
  143. SET JAVA_BIN=%JAVA_HOME%\bin
  144. IF NOT EXIST "%JAVA_BIN%" (
  145. ECHO The environment variable JAVA_HOME is not set to a valid JDK 1.8 folder %JAVA_BIN%
  146. ECHO Make sure the variable is set to your local JDK 1.8 installation
  147. GOTO error
  148. )
  149. SET KEYTOOL_PATH=%JAVA_BIN%\keytool.exe
  150. IF NOT EXIST "%KEYTOOL_PATH%" (
  151. ECHO The environment variable JAVA_HOME is not set to a valid JDK 1.8 folder. Cannot find keytool at %JAVA_BIN%\keytool.exe
  152. ECHO Make sure the variable is set to your local JDK 1.8 installation
  153. GOTO error
  154. )
  155. SET CI_ANDROID_KEYSTORE_FILE=ly-android-dev.keystore
  156. SET CI_ANDROID_KEYSTORE_ALIAS=ly-android
  157. SET CI_ANDROID_KEYSTORE_PASSWORD=lumberyard
  158. SET CI_ANDROID_KEYSTORE_DN=cn=LY Developer, ou=Lumberyard, o=Amazon, c=US
  159. SET CI_KEYSTORE_VALIDITY_DAYS=10000
  160. SET CI_KEYSTORE_CERT_DN=cn=LY Developer, ou=Lumberyard, o=Amazon, c=US
  161. REM Clear out any existing keystore file since the password/alias may have changed
  162. SET CI_ANDROID_KEYSTORE_FILE_ABS=%cd%\%OUTPUT_DIRECTORY%\%CI_ANDROID_KEYSTORE_FILE%
  163. IF "%GENERATE_SIGNED_APK%"=="true" (
  164. REM Prepare a temporary keystore just for this unit test session
  165. REM Generate the keystore file if needed
  166. IF NOT EXIST "%CI_ANDROID_KEYSTORE_FILE_ABS%" (
  167. ECHO [ci_build] Generating keystore file %CI_ANDROID_KEYSTORE_FILE%
  168. ECHO [ci_build] "%KEYTOOL_PATH%" -genkeypair -v -keystore %CI_ANDROID_KEYSTORE_FILE_ABS% -storepass %CI_ANDROID_KEYSTORE_PASSWORD% -alias %CI_ANDROID_KEYSTORE_ALIAS% -keypass %CI_ANDROID_KEYSTORE_PASSWORD% -keyalg RSA -keysize 2048 -validity %CI_KEYSTORE_VALIDITY_DAYS% -dname "%CI_KEYSTORE_CERT_DN%"
  169. CALL "%KEYTOOL_PATH%" -genkeypair -v -keystore %CI_ANDROID_KEYSTORE_FILE_ABS% -storepass %CI_ANDROID_KEYSTORE_PASSWORD% -alias %CI_ANDROID_KEYSTORE_ALIAS% -keypass %CI_ANDROID_KEYSTORE_PASSWORD% -keyalg RSA -keysize 2048 -validity %CI_KEYSTORE_VALIDITY_DAYS% -dname "%CI_KEYSTORE_CERT_DN%" 2> nul
  170. IF errorlevel 1 (
  171. ECHO Unable to generate keystore file "%CI_ANDROID_KEYSTORE_FILE_ABS%"
  172. GOTO error
  173. )
  174. ) ELSE (
  175. ECHO Using keystore file at %CI_ANDROID_KEYSTORE_FILE_ABS%
  176. )
  177. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.store.file=%CI_ANDROID_KEYSTORE_FILE_ABS%
  178. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.key.alias=%CI_ANDROID_KEYSTORE_ALIAS%
  179. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.key.password=%CI_ANDROID_KEYSTORE_PASSWORD%
  180. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.store.password=%CI_ANDROID_KEYSTORE_PASSWORD%
  181. )
  182. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value asset.mode=NONE
  183. cd "%TMP%\o3de_gradle_ar"
  184. ECHO %O3DE_PATH%\scripts\o3de.bat android-generate -p %TMP%\o3de_gradle_ar -B %OUTPUT_DIRECTORY%
  185. CALL %O3DE_PATH%\scripts\o3de.bat android-generate -p %TMP%\o3de_gradle_ar -B %OUTPUT_DIRECTORY%
  186. SET CMAKE_BUILD_PARALLEL_LEVEL=!NUMBER_OF_PROCESSORS!
  187. REM Validate the android project generation
  188. IF %ERRORLEVEL%==0 GOTO generate_project_success
  189. ECHO Error Generating Android Project
  190. goto error
  191. :generate_project_success
  192. REM Run the gradle build from the output directory
  193. PUSHD %OUTPUT_DIRECTORY%
  194. REM Stop any running or orphaned gradle daemon
  195. ECHO [ci_build] gradlew --stop
  196. CALL gradlew --stop
  197. ECHO [ci_build] gradlew --info --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  198. CALL gradlew --info --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  199. IF %ERRORLEVEL%==0 GOTO gradle_build_success
  200. REM Do another build with the debug flag to try to get the failure reasons
  201. GOTO error
  202. ECHO Error building gradle. Rebuilding with debug information
  203. ECHO [ci_build] gradlew --debug --full-stacktrace --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  204. CALL gradlew --debug --full-stacktrace --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  205. ECHO [ci_build] gradlew --stop
  206. CALL gradlew --stop
  207. POPD
  208. GOTO error
  209. :gradle_build_success
  210. ECHO [ci_build] gradlew --stop
  211. CALL gradlew --stop
  212. POPD
  213. cd %CURRENT_DIR%
  214. EXIT /b 0
  215. :popd_error
  216. POPD
  217. :error
  218. cd %CURRENT_DIR%
  219. EXIT /b 1
  220. :get_path_of_filename <resultVar> <pathVar>
  221. (
  222. set "%~1=%~dp2"
  223. exit /b
  224. )