From 4598903548f1701282bf1fad656eb4be6c0d8495 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 17 Jun 2015 00:07:45 -0700 Subject: [PATCH] Partial fix for bug 2758 - Android issues with NDK r10c and API-21 Sylvain When using API 21 and running on an old device (android < 5.0 ?) some function are missing. functions are (at least) : signal, sigemptyset, atof, stpcpy (strcat and strcpy), srand, rand. Very few modifications on SDL to get this working : on SDL ====== Undefine android configuration : HAVE_SIGNAL HAVE_SIGACTION HAVE_ATOF In "SDL_systrhead.c", comment out the few block of lines with "sigemptyset". Android.mk: remove the compilation of "test" directory because it contains a few rand/srand calls Also, there are more discussions about this in internet : https://groups.google.com/forum/#!topic/android-ndk/RjO9WmG9pfE http://stackoverflow.com/questions/25475055/android-ndk-load-library-cannot-locate-srand --- include/SDL_config_android.h | 3 --- src/thread/pthread/SDL_systhread.c | 5 +++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index 932b196b6..1d2b1ae1f 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -43,7 +43,6 @@ #define HAVE_STDINT_H 1 #define HAVE_CTYPE_H 1 #define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 /* C library functions */ #define HAVE_MALLOC 1 @@ -76,7 +75,6 @@ #define HAVE_STRTOULL 1 #define HAVE_STRTOD 1 #define HAVE_ATOI 1 -#define HAVE_ATOF 1 #define HAVE_STRCMP 1 #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 @@ -103,7 +101,6 @@ #define HAVE_SQRTF 1 #define HAVE_TAN 1 #define HAVE_TANF 1 -#define HAVE_SIGACTION 1 #define HAVE_SETJMP 1 #define HAVE_NANOSLEEP 1 #define HAVE_SYSCONF 1 diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index 0288f5db4..a36e38421 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -159,14 +159,15 @@ SDL_SYS_SetupThread(const char *name) } /* NativeClient does not yet support signals.*/ -#ifndef __NACL__ +#if !defined(__ANDROID__) && !defined(__NACL__) /* Mask asynchronous signals for this thread */ sigemptyset(&mask); for (i = 0; sig_list[i]; ++i) { sigaddset(&mask, sig_list[i]); } pthread_sigmask(SIG_BLOCK, &mask, 0); -#endif +#endif /* !__ANDROID__ && !__NACL__ */ + #ifdef PTHREAD_CANCEL_ASYNCHRONOUS /* Allow ourselves to be asynchronously cancelled */