1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-27 15:57:02 +00:00
Files
godot/platform/android/SCsub
2025-08-07 21:49:41 +05:30

95 lines
2.9 KiB
Python

#!/usr/bin/env python
import platform
import sys
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_io_wrapper.cpp",
"java_godot_view_wrapper.cpp",
"jni_utils.cpp",
"android_keys_utils.cpp",
"plugin/godot_plugin_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)
lib = env_android.add_shared_library("#bin/libgodot", [android_objects], SHLIBSUFFIX=env["SHLIBSUFFIX"])
# 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["android_arch"] == "armv7":
lib_arch_dir = "armeabi-v7a"
triple_target_dir = "arm-linux-androideabi"
elif env["android_arch"] == "arm64v8":
lib_arch_dir = "arm64-v8a"
triple_target_dir = "aarch64-linux-android"
elif env["android_arch"] == "x86":
lib_arch_dir = "x86"
triple_target_dir = "i686-linux-android"
elif env["android_arch"] == "x86_64":
lib_arch_dir = "x86_64"
triple_target_dir = "x86_64-linux-android"
else:
print("WARN: 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["target"] == "release":
lib_type_dir = "release"
elif env["target"] == "release_debug":
if env["tools"] and env["store_release"]:
lib_type_dir = "release"
else:
lib_type_dir = "debug"
else: # debug
lib_type_dir = "dev"
if env["tools"]:
lib_tools_dir = "tools/"
else:
lib_tools_dir = ""
out_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_dir + "/" + lib_arch_dir
env_android.Command(
out_dir + "/libgodot_android.so", "#bin/libgodot" + env["SHLIBSUFFIX"], 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.Command(out_dir + "/libc++_shared.so", stl_lib_path, Copy("$TARGET", "$SOURCE"))