Commit 74e1dd4c6f8def7534381325584057802af0439a

Sam Lantinga 2016-11-11T13:14:00

Define _GNU_SOURCE when building SDL

diff --git a/src/SDL_internal.h b/src/SDL_internal.h
index 7e92850..e3083fe 100644
--- a/src/SDL_internal.h
+++ b/src/SDL_internal.h
@@ -21,6 +21,15 @@
 #ifndef _SDL_internal_h
 #define _SDL_internal_h
 
+/* Many of SDL's features require _GNU_SOURCE on various platforms
+   You can turn this off if necessary by using -D_GNU_SOURCE=0
+ */
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#elif !_GNU_SOURCE
+#undef _GNU_SOURCE
+#endif
+
 #include "dynapi/SDL_dynapi.h"
 
 #if SDL_DYNAMIC_API
@@ -33,6 +42,6 @@
 
 #include "SDL_config.h"
 
-#endif
+#endif /* _SDL_internal_h */
 
 /* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c
index debbeba..3e856b5 100644
--- a/src/stdlib/SDL_string.c
+++ b/src/stdlib/SDL_string.c
@@ -18,15 +18,10 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-
-#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
+#if defined(__clang_analyzer__)
 #define SDL_DISABLE_ANALYZE_MACROS 1
 #endif
 
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
-
 #include "../SDL_internal.h"
 
 /* This file contains portable string manipulation functions for SDL */
diff --git a/src/test/SDL_test_fuzzer.c b/src/test/SDL_test_fuzzer.c
index 1bd8dfa..9ae6536 100644
--- a/src/test/SDL_test_fuzzer.c
+++ b/src/test/SDL_test_fuzzer.c
@@ -34,7 +34,6 @@
 #define UINT32_MAX  ~(Uint32)0
 #define UINT64_MAX  ~(Uint64)0
 #else
-#define _GNU_SOURCE
 #include <stdint.h>
 #endif
 #include <stdio.h>
diff --git a/src/thread/pthread/SDL_sysmutex.c b/src/thread/pthread/SDL_sysmutex.c
index f24cfda..ee7f583 100644
--- a/src/thread/pthread/SDL_sysmutex.c
+++ b/src/thread/pthread/SDL_sysmutex.c
@@ -20,9 +20,6 @@
 */
 #include "../../SDL_internal.h"
 
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
 #include <errno.h>
 #include <pthread.h>
 
diff --git a/src/thread/pthread/SDL_syssem.c b/src/thread/pthread/SDL_syssem.c
index b7547e6..caadf4e 100644
--- a/src/thread/pthread/SDL_syssem.c
+++ b/src/thread/pthread/SDL_syssem.c
@@ -20,9 +20,6 @@
 */
 #include "../../SDL_internal.h"
 
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
 #include <errno.h>
 #include <pthread.h>
 #include <semaphore.h>
diff --git a/src/video/wayland/SDL_waylanddatamanager.c b/src/video/wayland/SDL_waylanddatamanager.c
index afcec1a..323eff7 100644
--- a/src/video/wayland/SDL_waylanddatamanager.c
+++ b/src/video/wayland/SDL_waylanddatamanager.c
@@ -23,8 +23,6 @@
 
 #if SDL_VIDEO_DRIVER_WAYLAND
 
-/* _GNU_SOURCE for pipe2 declaration. */
-#define _GNU_SOURCE
 #include <fcntl.h>
 #include <unistd.h>
 #include <limits.h>
diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c
index 8dfc9ee..73b2b58 100644
--- a/src/video/wayland/SDL_waylandmouse.c
+++ b/src/video/wayland/SDL_waylandmouse.c
@@ -23,10 +23,6 @@
 
 #if SDL_VIDEO_DRIVER_WAYLAND
 
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
 #include <sys/types.h>
 #include <sys/mman.h>
 #include <fcntl.h>
diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c
index b1e3ff4..29307b3 100644
--- a/src/video/x11/SDL_x11modes.c
+++ b/src/video/x11/SDL_x11modes.c
@@ -18,10 +18,6 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
 #include "../../SDL_internal.h"
 
 #if SDL_VIDEO_DRIVER_X11