Mono/C#: Several android fixes
- Added correct config file for android dllmaps. - Fix __Internal DllImports with a dlopen fallback. - Add missing P/Invoke functions and internal calls expected by the monodroid BCL and our custom version of the 'Android.Runtime.AndroidEnvironment' class (this last one can be found in the godot-mono-builds repo). - Make sure to set 'btls' instead of 'legacy' as the default TLS provider on Android.
This commit is contained in:
parent
3797f19926
commit
066ae9d83b
13 changed files with 721 additions and 69 deletions
28
modules/mono/build_scripts/mono_android_config.xml
Normal file
28
modules/mono/build_scripts/mono_android_config.xml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<configuration>
|
||||
<dllmap wordsize="32" dll="i:cygwin1.dll" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="i:cygwin1.dll" target="/system/lib64/libc.so" />
|
||||
<dllmap wordsize="32" dll="libc" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="libc" target="/system/lib64/libc.so" />
|
||||
<dllmap wordsize="32" dll="intl" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="intl" target="/system/lib64/libc.so" />
|
||||
<dllmap wordsize="32" dll="libintl" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="libintl" target="/system/lib64/libc.so" />
|
||||
<dllmap dll="MonoPosixHelper" target="libMonoPosixHelper.so" />
|
||||
<dllmap dll="System.Native" target="libmono-native.so" />
|
||||
<dllmap wordsize="32" dll="i:msvcrt" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="i:msvcrt" target="/system/lib64/libc.so" />
|
||||
<dllmap wordsize="32" dll="i:msvcrt.dll" target="/system/lib/libc.so" />
|
||||
<dllmap wordsize="64" dll="i:msvcrt.dll" target="/system/lib64/libc.so" />
|
||||
<dllmap wordsize="32" dll="sqlite" target="/system/lib/libsqlite.so" />
|
||||
<dllmap wordsize="64" dll="sqlite" target="/system/lib64/libsqlite.so" />
|
||||
<dllmap wordsize="32" dll="sqlite3" target="/system/lib/libsqlite.so" />
|
||||
<dllmap wordsize="64" dll="sqlite3" target="/system/lib64/libsqlite.so" />
|
||||
<dllmap wordsize="32" dll="liblog" target="/system/lib/liblog.so" />
|
||||
<dllmap wordsize="64" dll="liblog" target="/system/lib64/liblog.so" />
|
||||
<dllmap dll="i:kernel32.dll">
|
||||
<dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/>
|
||||
<dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/>
|
||||
<dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/>
|
||||
<dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/>
|
||||
</dllmap>
|
||||
</configuration>
|
||||
|
|
@ -206,6 +206,8 @@ def configure(env, env_mono):
|
|||
env_mono.Append(CPPDEFINES=['_REENTRANT'])
|
||||
|
||||
if mono_static:
|
||||
env.Append(LINKFLAGS=['-rdynamic'])
|
||||
|
||||
mono_lib_file = os.path.join(mono_lib_path, 'lib' + mono_lib + '.a')
|
||||
|
||||
if is_apple:
|
||||
|
|
@ -281,8 +283,6 @@ def configure(env, env_mono):
|
|||
libs_output_dir = get_android_out_dir(env) if is_android else '#bin'
|
||||
copy_file(mono_lib_path, libs_output_dir, 'lib' + mono_so_name + sharedlib_ext)
|
||||
|
||||
env.Append(LINKFLAGS='-rdynamic')
|
||||
|
||||
if not tools_enabled:
|
||||
if is_desktop(env['platform']):
|
||||
if not mono_root:
|
||||
|
|
@ -292,7 +292,8 @@ def configure(env, env_mono):
|
|||
elif is_android:
|
||||
# Compress Android Mono Config
|
||||
from . import make_android_mono_config
|
||||
config_file_path = os.path.join(mono_root, 'etc', 'mono', 'config')
|
||||
module_dir = os.getcwd()
|
||||
config_file_path = os.path.join(module_dir, 'build_scripts', 'mono_android_config.xml')
|
||||
make_android_mono_config.generate_compressed_config(config_file_path, 'mono_gd/')
|
||||
|
||||
# Copy the required shared libraries
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue