SCsub 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/env python
  2. Import("env")
  3. android_files = [
  4. "os_android.cpp",
  5. "android_input_handler.cpp",
  6. "file_access_android.cpp",
  7. "file_access_filesystem_jandroid.cpp",
  8. "audio_driver_opensl.cpp",
  9. "dir_access_jandroid.cpp",
  10. "tts_android.cpp",
  11. "thread_jandroid.cpp",
  12. "net_socket_android.cpp",
  13. "java_godot_lib_jni.cpp",
  14. "java_class_wrapper.cpp",
  15. "java_godot_wrapper.cpp",
  16. "java_godot_view_wrapper.cpp",
  17. "java_godot_io_wrapper.cpp",
  18. "jni_utils.cpp",
  19. "android_keys_utils.cpp",
  20. "display_server_android.cpp",
  21. "plugin/godot_plugin_jni.cpp",
  22. "vulkan_context_android.cpp",
  23. ]
  24. env_android = env.Clone()
  25. android_objects = []
  26. for x in android_files:
  27. android_objects.append(env_android.SharedObject(x))
  28. env_thirdparty = env_android.Clone()
  29. env_thirdparty.disable_warnings()
  30. thirdparty_obj = env_thirdparty.SharedObject("#thirdparty/misc/ifaddrs-android.cc")
  31. android_objects.append(thirdparty_obj)
  32. lib = env_android.add_shared_library("#bin/libgodot", [android_objects], SHLIBSUFFIX=env["SHLIBSUFFIX"])
  33. # Needed to force rebuilding the platform files when the thirdparty code is updated.
  34. env.Depends(lib, thirdparty_obj)
  35. lib_arch_dir = ""
  36. if env["arch"] == "arm32":
  37. lib_arch_dir = "armeabi-v7a"
  38. elif env["arch"] == "arm64":
  39. lib_arch_dir = "arm64-v8a"
  40. elif env["arch"] == "x86_32":
  41. lib_arch_dir = "x86"
  42. elif env["arch"] == "x86_64":
  43. lib_arch_dir = "x86_64"
  44. else:
  45. print("WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin")
  46. if lib_arch_dir != "":
  47. if env.dev_build:
  48. lib_type_dir = "dev"
  49. elif env.debug_features:
  50. if env.editor_build and env["store_release"]:
  51. lib_type_dir = "release"
  52. else:
  53. lib_type_dir = "debug"
  54. else: # Release
  55. lib_type_dir = "release"
  56. if env.editor_build:
  57. lib_tools_dir = "tools/"
  58. else:
  59. lib_tools_dir = ""
  60. out_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_dir + "/" + lib_arch_dir
  61. env_android.Command(
  62. out_dir + "/libgodot_android.so", "#bin/libgodot" + env["SHLIBSUFFIX"], Move("$TARGET", "$SOURCE")
  63. )
  64. stl_lib_path = (
  65. str(env["ANDROID_NDK_ROOT"]) + "/sources/cxx-stl/llvm-libc++/libs/" + lib_arch_dir + "/libc++_shared.so"
  66. )
  67. env_android.Command(out_dir + "/libc++_shared.so", stl_lib_path, Copy("$TARGET", "$SOURCE"))