gradle_windows.cmd 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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. REM Validate that gradle home path was set
  29. IF "%GRADLE_BUILD_HOME%" == "" (
  30. ECHO Environment key GRADLE_BUILD_HOME not set
  31. GOTO :error
  32. )
  33. IF NOT EXIST "%GRADLE_BUILD_HOME%" (
  34. ECHO Environment key value for ANDROID_SDK_ROOT '%GRADLE_BUILD_HOME%' does not exist
  35. GOTO :error
  36. )
  37. ECHO Using Gradle Build at '%GRADLE_BUILD_HOME%'
  38. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value gradle.home="%GRADLE_BUILD_HOME%" --global
  39. REM Optionally override the gradle plugin version, otherwise default to 8.1.4
  40. IF "%ANDROID_GRADLE_PLUGIN%" == "" (
  41. ECHO Using [default] Android gradle plugin version 8.1.4
  42. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value android.gradle.plugin=8.1.4 --global
  43. ) else (
  44. ECHO Using [default] Android gradle plugin version
  45. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value android.gradle.plugin=%ANDROID_GRADLE_PLUGIN% --global
  46. )
  47. REM Optionally override the version of the android NDK to use, otherwise default to 25
  48. IF "%ANDROID_NDK_VERSION%" == "" (
  49. ECHO Using [default] Android NDK Version 25
  50. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value ndk.version=25.*
  51. ) else (
  52. ECHO Using [default] Android NDK Version %ANDROID_NDK_VERSION%
  53. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value ndk.version=%ANDROID_NDK_VERSION%
  54. )
  55. IF NOT EXIST %OUTPUT_DIRECTORY% (
  56. mkdir %OUTPUT_DIRECTORY%
  57. ) ELSE (
  58. ECHO Clearing and reseting existing build folder
  59. DEL /S /F /Q %OUTPUT_DIRECTORY%
  60. RMDIR /S /Q %OUTPUT_DIRECTORY%
  61. mkdir %OUTPUT_DIRECTORY%
  62. )
  63. REM Jenkins does not defined TMP
  64. IF "%TMP%"=="" (
  65. IF "%WORKSPACE%"=="" (
  66. SET TMP=%APPDATA%\Local\Temp
  67. SET TEMP=%APPDATA%\Local\Temp
  68. ) ELSE (
  69. SET TMP=%WORKSPACE%\Temp
  70. SET TEMP=%WORKSPACE%\Temp
  71. REM This folder may not be created in the workspace
  72. IF NOT EXIST "!TMP!" (
  73. MKDIR "!TMP!"
  74. )
  75. )
  76. )
  77. REM Create a minimal project for the native build process
  78. IF EXIST "%TMP%\o3de_gradle_ar" (
  79. DEL /S /F /Q "%TMP%\o3de_gradle_ar"
  80. RMDIR /S /Q "%TMP%\o3de_gradle_ar"
  81. )
  82. ECHO Creating a minimal project for the native build process
  83. ECHO %PYTHON% %O3DE_PATH%\scripts\o3de.bat create-project -pp "%TMP%\o3de_gradle_ar" -pn GradleTest -tn MinimalProject
  84. CALL %PYTHON% %O3DE_PATH%\scripts\o3de.bat create-project -pp "%TMP%\o3de_gradle_ar" -pn GradleTest -tn MinimalProject
  85. REM Optionally sign the APK if we are generating an APK
  86. SET GENERATE_SIGNED_APK=false
  87. IF "%SIGN_APK%"=="true" (
  88. IF "%GRADLE_BUILD_CMD%"=="assemble" (
  89. SET GENERATE_SIGNED_APK=true
  90. )
  91. )
  92. SET PYTHON=%O3DE_PATH%\python\python.cmd
  93. IF "%JDK_PATH%" == "" (
  94. IF "%JAVA_HOME%" == "" (
  95. REM First look in the windowsregistry
  96. 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 (
  97. SET JDK_REG_VALUE=%%C
  98. )
  99. IF EXIST "%JDK_REG_VALUE%" (
  100. SET JAVA_HOME=!JDK_REG_VALUE!
  101. ECHO JAVA_HOME found in registry: !JAVA_HOME!
  102. GOTO JDK_FOUND
  103. ) ELSE (
  104. REM Next, look for the JDK HOME in the environment variable
  105. IF EXIST "%JAVA_HOME%" (
  106. ECHO JDK Home found in Environment: !JAVA_HOME!
  107. GOTO JDK_FOUND
  108. )
  109. )
  110. ) else (
  111. echo Using Java from JAVA_HOME at '%JAVA_HOME%'
  112. IF EXIST "%JAVA_HOME%" (
  113. GOTO :JDK_FOUND
  114. )
  115. echo JAVA_HOME set to an invalid path '%JAVA_HOME%'
  116. )
  117. ) else (
  118. echo Using Java from JDK_PATH at '%JDK_PATH%'
  119. IF EXIST "%JDK_PATH%" (
  120. SET JAVA_HOME=%JDK_PATH%
  121. GOTO :JDK_FOUND
  122. )
  123. echo JDK_PATH set to an invalid path '%JDK_PATH%'
  124. )
  125. ECHO Unable to locate JAVA_HOME
  126. GOTO error
  127. :JDK_FOUND
  128. SET JAVA_BIN=%JAVA_HOME%\bin
  129. IF NOT EXIST "%JAVA_BIN%" (
  130. ECHO The environment variable JAVA_HOME is not set to a valid JDK 1.8 folder %JAVA_BIN%
  131. ECHO Make sure the variable is set to your local JDK 1.8 installation
  132. GOTO error
  133. )
  134. SET KEYTOOL_PATH=%JAVA_BIN%\keytool.exe
  135. IF NOT EXIST "%KEYTOOL_PATH%" (
  136. ECHO The environment variable JAVA_HOME is not set to a valid JDK 1.8 folder. Cannot find keytool at %JAVA_BIN%\keytool.exe
  137. ECHO Make sure the variable is set to your local JDK 1.8 installation
  138. GOTO error
  139. )
  140. SET CI_ANDROID_KEYSTORE_FILE=ly-android-dev.keystore
  141. SET CI_ANDROID_KEYSTORE_ALIAS=ly-android
  142. SET CI_ANDROID_KEYSTORE_PASSWORD=lumberyard
  143. SET CI_ANDROID_KEYSTORE_DN=cn=LY Developer, ou=Lumberyard, o=Amazon, c=US
  144. SET CI_KEYSTORE_VALIDITY_DAYS=10000
  145. SET CI_KEYSTORE_CERT_DN=cn=LY Developer, ou=Lumberyard, o=Amazon, c=US
  146. REM Clear out any existing keystore file since the password/alias may have changed
  147. SET CI_ANDROID_KEYSTORE_FILE_ABS=%cd%\%OUTPUT_DIRECTORY%\%CI_ANDROID_KEYSTORE_FILE%
  148. IF "%GENERATE_SIGNED_APK%"=="true" (
  149. REM Prepare a temporary keystore just for this unit test session
  150. REM Generate the keystore file if needed
  151. IF NOT EXIST "%CI_ANDROID_KEYSTORE_FILE_ABS%" (
  152. ECHO [ci_build] Generating keystore file %CI_ANDROID_KEYSTORE_FILE%
  153. 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%"
  154. 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
  155. IF errorlevel 1 (
  156. ECHO Unable to generate keystore file "%CI_ANDROID_KEYSTORE_FILE_ABS%"
  157. GOTO error
  158. )
  159. ) ELSE (
  160. ECHO Using keystore file at %CI_ANDROID_KEYSTORE_FILE_ABS%
  161. )
  162. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.store.file=%CI_ANDROID_KEYSTORE_FILE_ABS%
  163. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.key.alias=%CI_ANDROID_KEYSTORE_ALIAS%
  164. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.key.password=%CI_ANDROID_KEYSTORE_PASSWORD%
  165. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value signconfig.store.password=%CI_ANDROID_KEYSTORE_PASSWORD%
  166. )
  167. CALL %O3DE_PATH%\scripts\o3de.bat android-configure --set-value asset.mode=NONE
  168. cd "%TMP%\o3de_gradle_ar"
  169. ECHO %O3DE_PATH%\scripts\o3de.bat android-generate -p %TMP%\o3de_gradle_ar -B %OUTPUT_DIRECTORY%
  170. CALL %O3DE_PATH%\scripts\o3de.bat android-generate -p %TMP%\o3de_gradle_ar -B %OUTPUT_DIRECTORY%
  171. SET CMAKE_BUILD_PARALLEL_LEVEL=!NUMBER_OF_PROCESSORS!
  172. REM Validate the android project generation
  173. IF %ERRORLEVEL%==0 GOTO generate_project_success
  174. ECHO Error Generating Android Project
  175. goto error
  176. :generate_project_success
  177. REM Run the gradle build from the output directory
  178. PUSHD %OUTPUT_DIRECTORY%
  179. REM Stop any running or orphaned gradle daemon
  180. ECHO [ci_build] gradlew --stop
  181. CALL gradlew --stop
  182. ECHO [ci_build] gradlew --info --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  183. CALL gradlew --info --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  184. IF %ERRORLEVEL%==0 GOTO gradle_build_success
  185. REM Do another build with the debug flag to try to get the failure reasons
  186. GOTO error
  187. ECHO Error building gradle. Rebuilding with debug information
  188. ECHO [ci_build] gradlew --debug --full-stacktrace --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  189. CALL gradlew --debug --full-stacktrace --no-daemon %GRADLE_BUILD_CMD%%CONFIGURATION%
  190. ECHO [ci_build] gradlew --stop
  191. CALL gradlew --stop
  192. POPD
  193. GOTO error
  194. :gradle_build_success
  195. ECHO [ci_build] gradlew --stop
  196. CALL gradlew --stop
  197. POPD
  198. cd %CURRENT_DIR%
  199. EXIT /b 0
  200. :popd_error
  201. POPD
  202. :error
  203. cd %CURRENT_DIR%
  204. EXIT /b 1