123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/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 = ""
- out_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_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["generate_android_binaries"]:
- env_android.AlwaysBuild(
- env_android.CommandNoCache(
- "generate_android_binaries", lib, env.Run(platform_android_builders.generate_android_binaries)
- )
- )
|