From 86dbd5fa0d6f581666e0626fe99bc2f2b00b5e49 Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Wed, 1 Nov 2023 09:09:05 -0700 Subject: [PATCH] Update the environment variables used to access the Android NDK toolchain --- tools/android.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/tools/android.py b/tools/android.py index 0e688551..479ee15c 100644 --- a/tools/android.py +++ b/tools/android.py @@ -11,20 +11,32 @@ def options(opts): "18" if "32" in ARGUMENTS.get("arch", "arm64") else "21", ) opts.Add( - "ANDROID_NDK_ROOT", - "Path to your Android NDK installation. By default, uses ANDROID_NDK_ROOT from your defined environment variables.", - os.environ.get("ANDROID_NDK_ROOT", None), + "ANDROID_HOME", + "Path to your Android SDK installation. By default, uses ANDROID_HOME from your defined environment variables.", + os.environ.get("ANDROID_HOME", os.environ.get("ANDROID_SDK_ROOT")), ) def exists(env): - return "ANDROID_NDK_ROOT" in os.environ or "ANDROID_NDK_ROOT" in ARGUMENTS + return get_android_ndk_root(env) is not None + + +# This must be kept in sync with the value in https://github.com/godotengine/godot/blob/master/platform/android/detect.py#L58. +def get_ndk_version(): + return "23.2.8568313" + + +def get_android_ndk_root(env): + if env["ANDROID_HOME"]: + return env["ANDROID_HOME"] + "/ndk/" + get_ndk_version() + else: + return os.environ.get("ANDROID_NDK_ROOT") def generate(env): - if "ANDROID_NDK_ROOT" not in env: + if get_android_ndk_root(env) is None: raise ValueError( - "To build for Android, ANDROID_NDK_ROOT must be defined. Please set ANDROID_NDK_ROOT to the root folder of your Android NDK installation." + "To build for Android, the path to the NDK must be defined. Please set ANDROID_HOME to the root folder of your Android SDK installation." ) if env["arch"] not in ("arm64", "x86_64", "arm32", "x86_32"): @@ -42,7 +54,7 @@ def generate(env): api_level = 21 # Setup toolchain - toolchain = env["ANDROID_NDK_ROOT"] + "/toolchains/llvm/prebuilt/" + toolchain = get_android_ndk_root(env) + "/toolchains/llvm/prebuilt/" if sys.platform == "win32" or sys.platform == "msys": toolchain += "windows" import platform as pltfm