* Fixed CMake use with Android NDK 23
This was done by only setting the `ANDROID_ARM_MODE` if the ANDROID_ABI
starts with `armeabi`.
The Android arm mode setting can't be used using non-`armeabi` ABIs.
In O3DE we default to `arm64-v8a` `ANDROID_ABI`
So `ANDROID_ARM_MODE` must not be set.
The CMake [Android-Determine.cmake](https://gitlab.kitware.com/cmake/cmake/-/blob/master/Modules/Platform/Android-Determine.cmake#L573-585) which is used to detect platform-wide information when the CMAKE_SYSTEM_NAME is set to android, enforces that if the `CMAKE_ANDROID_ARCH_ABI` doesn't start with `armeabi`, then it will fatal error if the CMAKE_ANDROID_ARM_MODE option is set.
In Android NDK 21 the `ANDROID_ARM_MODE` variable is used to set the CMAKE_ANDROID_ARM_MODE variable if the [ANDROID_ABI](https://android.googlesource.com/platform/ndk/+/refs/tags/ndk-r21e/build/cmake/android.toolchain.cmake#700) starts with `armeabi`.
This meant when using Android NDK 21, the CMake Android-Determine.cmake module would succeed, due
to the CMAKE_ANDROID_ARM_MODE not being set.
In Android NDK 23 the `ANDROID_ARM_MODE` now will set the
`CMAKE_ANDROID_ARM_MODE` variable to `TRUE` if it isn't defined.
Added an `--extra-cmake-configure-args` option to the `generate_android_project.py` script which can be used to append user specified CMake arguments to the cmake configure step (`cmake -B <build-dir> -S <source-dir> -DCMAKE_TOOLCHAIN_FILE=<android-toolchain-file> <extra-args>`)
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updated the O3DE Android toolchain wrapper to fatal error if the 64-bit
arm ABI isn't used.
Also removed the unneccessary setting of the ANDROID_ARM_MODE and
ANDROID_ARM_NEON option option now that the armeabi cannot be specified
as an ABI.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* When copying the runtime dependency setreg files to the cache, the name of the registry directory should be all lower case
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Lower case the registry folder name when looking in the asset cache.
Signed-off-by: amzn-sj <srikkant@amazon.com>
Update gradle script generation to correct task dependencies (#3120)
- copyNativeArtifacts must run after syncLYLayoutMode
- syncLYLayoutMode must must after externalNativeBuild
Signed-off-by: Steve Pham <spham@amazon.com>
* Final update copyright headers to reference license files at the repo root
Signed-off-by: spham <spham@amazon.com>
* Fix copyright validator unit tests to support the stale O3DE header scenario
Signed-off-by: spham <spham@amazon.com>
* Add parameters to specify custom native build path and enable unity build in Android gradle builds
* Enable unity build for gradle to shorten the path to the generated object files which fixes build failures on Jenkins due to paths exceeding limit. This also speeds up builds.
* Update the minimum CMake version to 3.20
Sets the cmake_minimum_required calls to version 3.20 and updates the
README.md to point at the general CMake download page instead of a stale
link.
* Remove unnecessary cmake minimum version
It was using an old 3.0 version and can be removed.
* Additional updates to CMake 3.20, build scripts
Updates the version and remove logic to find a CMake in 3rdParty.
* Removing backup path to ninja path in the build_ninja_windows.cmd
The backup path for finding ninja was coming from the Perforce depot which isn't available for o3de builds.
* Removing reference to 3rdParty Android SDK 29 from the build and run unit test script
The Android SDK is not part of the new 3rdParty system and users are expected to install the Android SDK on their own in order to build the engine for Android.
* Update the get_python scripts and README
No longer try to append a CMake path to LY_3RDPARTY_PATH, but do still
support LY_CMAKE_PATH because there are still uses of it. Remove
mention of an LY_3RDPARTY_PATH-relative CMake path from the README.md.
* Removing LY_NINJA_PATH from the build_ninja_windows.cmd
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
- If gradle is installed, but JAVA_HOME is not set properly, no detail message is given. Bubble up the error message as part of the description
- When deploying a newer API Level APK (30) to an API Level 29 device, a python callstack is given without any detail of the error. Now it will report the actual error that is from the adb call so the user can act upon it
- build.gradle format updates for newer Android Gradle Plugin
- Remove hard coded Android Gradle Plugin version 3.6.4 to be passed in from command args
- Set Android Gradle Plugin min version 4.2.0 in order to support Min CMake version 3.20
- Add ability to use the android sdk to install missing components if needed rather than doing it externally
- Removed argument to pass in the NDK folder to use the android, use the android-sdk instead. Can request specific NDK versions if possible
- Android Gradle Plugin has dependencies by version and is being managed
- More defaults based on tools on path, agp version made possible so they are no longer needed in the command args