mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-23 12:26:59 +01:00
Relintai
9d76074b58
This was done by refactoring directory and file access handling for the Android platform so that any general filesystem access type go through the Android layer.
This allows us to validate whether the access is unrestricted, or whether it falls under scoped storage and thus act appropriately.
- m4gr3d
24e3b3b88d
73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
#!/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",
|
|
"thread_jandroid.cpp",
|
|
"net_socket_android.cpp",
|
|
"java_pandemonium_lib_jni.cpp",
|
|
"java_class_wrapper.cpp",
|
|
"java_pandemonium_wrapper.cpp",
|
|
"java_pandemonium_io_wrapper.cpp",
|
|
"jni_utils.cpp",
|
|
"android_keys_utils.cpp",
|
|
"plugin/pandemonium_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/libpandemonium", [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"
|
|
|
|
lib_tools_dir = ""
|
|
|
|
if env["tools"]:
|
|
lib_tools_dir = "tools/"
|
|
|
|
out_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_dir + "/" + lib_arch_dir
|
|
env_android.Command(
|
|
out_dir + "/libpandemonium_android.so", "#bin/libpandemonium" + 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"))
|