Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
121 lines
3.9 KiB
Python
121 lines
3.9 KiB
Python
#!/usr/bin/env python
|
|
from misc.utility.scons_hints import *
|
|
|
|
import platform
|
|
import sys
|
|
|
|
import platform_android_builders
|
|
|
|
from methods import print_warning
|
|
|
|
Import("env")
|
|
|
|
android_files = [
|
|
"os_android.cpp",
|
|
"android_input_handler.cpp",
|
|
"file_access_android.cpp",
|
|
"file_access_filesystem_jandroid.cpp",
|
|
"audio_driver_opensl.cpp",
|
|
"dir_access_jandroid.cpp",
|
|
"tts_android.cpp",
|
|
"thread_jandroid.cpp",
|
|
"net_socket_android.cpp",
|
|
"java_godot_lib_jni.cpp",
|
|
"java_class_wrapper.cpp",
|
|
"java_godot_wrapper.cpp",
|
|
"java_godot_view_wrapper.cpp",
|
|
"java_godot_io_wrapper.cpp",
|
|
"jni_utils.cpp",
|
|
"android_keys_utils.cpp",
|
|
"display_server_android.cpp",
|
|
"plugin/godot_plugin_jni.cpp",
|
|
"rendering_context_driver_vulkan_android.cpp",
|
|
"variant/callable_jni.cpp",
|
|
"dialog_utils_jni.cpp",
|
|
"editor/game_menu_utils_jni.cpp",
|
|
"editor/editor_utils_jni.cpp",
|
|
]
|
|
|
|
env_android = env.Clone()
|
|
|
|
android_objects = []
|
|
for x in android_files:
|
|
android_objects.append(env_android.SharedObject(x))
|
|
|
|
env_thirdparty = env_android.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
thirdparty_obj = env_thirdparty.SharedObject("#thirdparty/misc/ifaddrs-android.cc")
|
|
android_objects.append(thirdparty_obj)
|
|
|
|
# FIXME: Hardcoded to bin to ensure the directory exists if not redirecting build objects.
|
|
lib = env_android.add_shared_library("#bin/libgodot", android_objects, redirect_build_objects=False)
|
|
|
|
# Needed to force rebuilding the platform files when the thirdparty code is updated.
|
|
env.Depends(lib, thirdparty_obj)
|
|
|
|
lib_arch_dir = ""
|
|
triple_target_dir = ""
|
|
if env["arch"] == "arm32":
|
|
lib_arch_dir = "armeabi-v7a"
|
|
triple_target_dir = "arm-linux-androideabi"
|
|
elif env["arch"] == "arm64":
|
|
lib_arch_dir = "arm64-v8a"
|
|
triple_target_dir = "aarch64-linux-android"
|
|
elif env["arch"] == "x86_32":
|
|
lib_arch_dir = "x86"
|
|
triple_target_dir = "i686-linux-android"
|
|
elif env["arch"] == "x86_64":
|
|
lib_arch_dir = "x86_64"
|
|
triple_target_dir = "x86_64-linux-android"
|
|
else:
|
|
print_warning("Architecture not suitable for embedding into APK; keeping .so at \\bin")
|
|
|
|
host_subpath = ""
|
|
if sys.platform.startswith("linux"):
|
|
host_subpath = "linux-x86_64"
|
|
elif sys.platform.startswith("darwin"):
|
|
host_subpath = "darwin-x86_64"
|
|
elif sys.platform.startswith("win"):
|
|
if platform.machine().endswith("64"):
|
|
host_subpath = "windows-x86_64"
|
|
else:
|
|
host_subpath = "windows"
|
|
|
|
if lib_arch_dir != "" and host_subpath != "":
|
|
if env.dev_build:
|
|
lib_type_dir = "dev"
|
|
elif env.debug_features:
|
|
if env.editor_build and env["store_release"]:
|
|
lib_type_dir = "release"
|
|
else:
|
|
lib_type_dir = "debug"
|
|
else: # Release
|
|
lib_type_dir = "release"
|
|
|
|
if env.editor_build:
|
|
lib_tools_dir = "tools/"
|
|
else:
|
|
lib_tools_dir = ""
|
|
|
|
jni_libs_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_dir + "/"
|
|
out_dir = jni_libs_dir + lib_arch_dir
|
|
env_android.CommandNoCache(out_dir + "/libgodot_android.so", lib, Move("$TARGET", "$SOURCE"))
|
|
|
|
stl_lib_path = f"{env['ANDROID_NDK_ROOT']}/toolchains/llvm/prebuilt/{host_subpath}/sysroot/usr/lib/{triple_target_dir}/libc++_shared.so"
|
|
env_android.CommandNoCache(out_dir + "/libc++_shared.so", stl_lib_path, Copy("$TARGET", "$SOURCE"))
|
|
|
|
if env["debug_symbols"] and env["separate_debug_symbols"]:
|
|
debug_symbols_zip_file = (
|
|
("#bin/android-editor-" if env.editor_build else "#bin/android-template-")
|
|
+ lib_type_dir
|
|
+ "-native-symbols.zip"
|
|
)
|
|
env_android.NoCache(Zip(debug_symbols_zip_file, jni_libs_dir, ZIPROOT=Dir(jni_libs_dir)))
|
|
|
|
if env["generate_android_binaries"]:
|
|
env_android.AlwaysBuild(
|
|
env_android.CommandNoCache(
|
|
"generate_android_binaries", lib, env.Run(platform_android_builders.generate_android_binaries)
|
|
)
|
|
)
|