#!/usr/bin/env python 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", "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 = "" if env["android_arch"] == "armv7": lib_arch_dir = "armeabi-v7a" elif env["android_arch"] == "arm64v8": lib_arch_dir = "arm64-v8a" elif env["android_arch"] == "x86": lib_arch_dir = "x86" elif env["android_arch"] == "x86_64": lib_arch_dir = "x86_64" else: print("WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin") if lib_arch_dir != "": if env["target"] == "release": lib_type_dir = "release" elif env["target"] == "release_debug": 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 = ( str(env["ANDROID_NDK_ROOT"]) + "/sources/cxx-stl/llvm-libc++/libs/" + lib_arch_dir + "/libc++_shared.so" ) env_android.Command(out_dir + "/libc++_shared.so", stl_lib_path, Copy("$TARGET", "$SOURCE"))