mirror of
https://github.com/godotengine/build-containers.git
synced 2026-01-04 18:10:06 +03:00
Adds support for building Mono templates for Android in 3.2/master. We use the script from https://github.com/godotengine/godot-mono-builds to build Mono for all arches with the right options, and a patch included from https://github.com/godotengine/godot/blob/master/modules/mono/build_scripts/patches/fix-mono-android-tkill.diff which is also necessary. I also moved the SDK to a `sdk` folder to make the `$HOME` more tidy, especially since the Mono build scripts install the mono toolchains in `$HOME` too by default. Using a git clone for specific mono version tag, as the upstream tarballs are iffy (the 5.18.1.3 tarball lacks files needed to build on Android).
71 lines
2.5 KiB
Diff
71 lines
2.5 KiB
Diff
diff --git a/libgc/include/private/gcconfig.h b/libgc/include/private/gcconfig.h
|
|
index e2bdf13ac3e..f962200ba4e 100644
|
|
--- a/libgc/include/private/gcconfig.h
|
|
+++ b/libgc/include/private/gcconfig.h
|
|
@@ -2255,6 +2255,14 @@
|
|
# define GETPAGESIZE() getpagesize()
|
|
# endif
|
|
|
|
+#if defined(HOST_ANDROID) && !(__ANDROID_API__ >= 23) \
|
|
+ && ((defined(MIPS) && (CPP_WORDSZ == 32)) \
|
|
+ || defined(ARM32) || defined(I386) /* but not x32 */)
|
|
+ /* tkill() exists only on arm32/mips(32)/x86. */
|
|
+ /* NDK r11+ deprecates tkill() but keeps it for Mono clients. */
|
|
+# define USE_TKILL_ON_ANDROID
|
|
+#endif
|
|
+
|
|
# if defined(SUNOS5) || defined(DRSNX) || defined(UTS4)
|
|
/* OS has SVR4 generic features. Probably others also qualify. */
|
|
# define SVR4
|
|
diff --git a/libgc/pthread_stop_world.c b/libgc/pthread_stop_world.c
|
|
index f93ce26b562..4a49a6d578c 100644
|
|
--- a/libgc/pthread_stop_world.c
|
|
+++ b/libgc/pthread_stop_world.c
|
|
@@ -336,7 +336,7 @@ void GC_push_all_stacks()
|
|
pthread_t GC_stopping_thread;
|
|
int GC_stopping_pid;
|
|
|
|
-#ifdef HOST_ANDROID
|
|
+#ifdef USE_TKILL_ON_ANDROID
|
|
static
|
|
int android_thread_kill(pid_t tid, int sig)
|
|
{
|
|
diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c
|
|
index ad9b8823f8f..3542b32b540 100644
|
|
--- a/mono/metadata/threads.c
|
|
+++ b/mono/metadata/threads.c
|
|
@@ -77,8 +77,12 @@ mono_native_thread_join_handle (HANDLE thread_handle, gboolean close_handle);
|
|
#include <zircon/syscalls.h>
|
|
#endif
|
|
|
|
-#if defined(HOST_ANDROID) && !defined(TARGET_ARM64) && !defined(TARGET_AMD64)
|
|
-#define USE_TKILL_ON_ANDROID 1
|
|
+#if defined(HOST_ANDROID) && !(__ANDROID_API__ >= 23) \
|
|
+ && ((defined(MIPS) && (CPP_WORDSZ == 32)) \
|
|
+ || defined(ARM32) || defined(I386) /* but not x32 */)
|
|
+ /* tkill() exists only on arm32/mips(32)/x86. */
|
|
+ /* NDK r11+ deprecates tkill() but keeps it for Mono clients. */
|
|
+# define USE_TKILL_ON_ANDROID
|
|
#endif
|
|
|
|
#ifdef HOST_ANDROID
|
|
diff --git a/mono/utils/mono-threads-posix.c b/mono/utils/mono-threads-posix.c
|
|
index 3e4bf93de5f..79c9f731fe7 100644
|
|
--- a/mono/utils/mono-threads-posix.c
|
|
+++ b/mono/utils/mono-threads-posix.c
|
|
@@ -31,8 +31,12 @@
|
|
|
|
#include <errno.h>
|
|
|
|
-#if defined(HOST_ANDROID) && !defined(TARGET_ARM64) && !defined(TARGET_AMD64)
|
|
-#define USE_TKILL_ON_ANDROID 1
|
|
+#if defined(HOST_ANDROID) && !(__ANDROID_API__ >= 23) \
|
|
+ && ((defined(MIPS) && (CPP_WORDSZ == 32)) \
|
|
+ || defined(ARM32) || defined(I386) /* but not x32 */)
|
|
+ /* tkill() exists only on arm32/mips(32)/x86. */
|
|
+ /* NDK r11+ deprecates tkill() but keeps it for Mono clients. */
|
|
+# define USE_TKILL_ON_ANDROID
|
|
#endif
|
|
|
|
#ifdef USE_TKILL_ON_ANDROID
|