Fixed bug 2129 - fix for bug 2121 breaks linking for mingw and throws multiple warnings
authorSam Lantinga <slouken@libsdl.org>
Sun, 20 Oct 2013 21:56:15 -0700
changeset 7860 2b0bcdea3a79
parent 7859 af63b63e7aac
child 7861 29d012c8f2a9
Fixed bug 2129 - fix for bug 2121 breaks linking for mingw and throws multiple warnings Andreas Ertelt The problem in question is caused by changeset 7771 (http://hg.libsdl.org/SDL/rev/4434498bf4b9 / https://bugzilla.libsdl.org/show_bug.cgi?id=2121) The redefinition of __inline__ (introduced by the addition of begin_code.h:128's "|| __STRICT_ANSI__") results in mingw's gcc throwing multiple warning: always_inline function might not be inlinable [-Wattributes] as well as a whole bunch of redefinitions of mingw internals which break linking of projects including the SDL2 headers.
include/begin_code.h
src/atomic/SDL_atomic.c
src/audio/SDL_audiodev.c
src/audio/alsa/SDL_alsa_audio.c
src/audio/pulseaudio/SDL_pulseaudio.c
src/audio/qsa/SDL_qsa_audio.c
src/cpuinfo/SDL_cpuinfo.c
src/events/SDL_events.c
src/joystick/linux/SDL_sysjoystick.c
src/joystick/psp/SDL_sysjoystick.c
src/render/opengles/SDL_render_gles.c
src/video/SDL_blit_copy.c
src/video/SDL_surface.c
src/video/SDL_video.c
src/video/bwindow/SDL_bframebuffer.cc
src/video/bwindow/SDL_bmodes.cc
src/video/bwindow/SDL_bopengl.cc
src/video/bwindow/SDL_bwindow.cc
src/video/directfb/SDL_DirectFB_render.c
src/video/directfb/SDL_DirectFB_video.h
src/video/x11/SDL_x11messagebox.c
--- a/include/begin_code.h	Sun Oct 20 21:34:38 2013 -0700
+++ b/include/begin_code.h	Sun Oct 20 21:56:15 2013 -0700
@@ -99,49 +99,36 @@
 #endif
 #endif /* Compiler needs structure packing set */
 
-#ifndef __inline__
+#ifndef SDL_INLINE
 /* Set up compiler-specific options for inlining functions */
-#ifndef SDL_INLINE_OKAY
-/* Add any special compiler-specific cases here */
 #if defined(_MSC_VER) || defined(__BORLANDC__) || \
     defined(__DMC__) || defined(__SC__) || \
     defined(__WATCOMC__) || defined(__LCC__) || \
     defined(__DECC)
-#ifndef __inline__
-#define __inline__  __inline
-#endif
-#define SDL_INLINE_OKAY 1
+#define SDL_INLINE  __inline
 #else
-#if !defined(__MRC__) && !defined(_SGI_SOURCE)
-#ifndef __inline__
-#define __inline__ inline
-#endif
-#define SDL_INLINE_OKAY 1
-#endif /* Not a funky compiler */
+#define SDL_INLINE inline
 #endif /* Visual C++ */
-#endif /* SDL_INLINE_OKAY */
+#endif /* SDL_INLINE not defined */
 
-/* If inlining isn't supported, remove "__inline__", turning static
-   inlined functions into static functions (resulting in code bloat
-   in all files which include the offending header files)
+/* If inlining isn't supported, remove SDL_INLINE, turning static
+   inlined functions into static functions (potentially resulting in
+   code bloat in all files which include the offending header files)
 */
-#if !SDL_INLINE_OKAY || __STRICT_ANSI__
-#ifdef __inline__
-#undef __inline__
+#if __STRICT_ANSI__
+#undef SDL_INLINE
+#define SDL_INLINE
 #endif
-#define __inline__
-#endif
-#endif /* __inline__ not defined */
 
 #ifndef SDL_FORCE_INLINE
 #if defined(_MSC_VER)
 #define SDL_FORCE_INLINE __forceinline
 #elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
-#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
+#define SDL_FORCE_INLINE __attribute__((always_inline)) static SDL_INLINE
 #else
-#define SDL_FORCE_INLINE static __inline__
+#define SDL_FORCE_INLINE static SDL_INLINE
 #endif
-#endif
+#endif /* SDL_FORCE_INLINE not defined */
 
 /* Apparently this is needed by several Windows compilers */
 #if !defined(__MACH__)
--- a/src/atomic/SDL_atomic.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/atomic/SDL_atomic.c	Sun Oct 20 21:56:15 2013 -0700
@@ -55,7 +55,7 @@
 
 static SDL_SpinLock locks[32];
 
-static __inline__ void
+static SDL_INLINE void
 enterLock(void *a)
 {
     uintptr_t index = ((((uintptr_t)a) >> 3) & 0x1f);
@@ -63,7 +63,7 @@
     SDL_AtomicLock(&locks[index]);
 }
 
-static __inline__ void
+static SDL_INLINE void
 leaveLock(void *a)
 {
     uintptr_t index = ((((uintptr_t)a) >> 3) & 0x1f);
--- a/src/audio/SDL_audiodev.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/audio/SDL_audiodev.c	Sun Oct 20 21:56:15 2013 -0700
@@ -46,7 +46,7 @@
 #define _PATH_DEV_AUDIO "/dev/audio"
 #endif
 
-static inline void
+static SDL_INLINE void
 test_device(const char *fname, int flags, int (*test) (int fd),
             SDL_AddAudioDevice addfn)
 {
--- a/src/audio/alsa/SDL_alsa_audio.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/audio/alsa/SDL_alsa_audio.c	Sun Oct 20 21:56:15 2013 -0700
@@ -241,25 +241,25 @@
         tmp = ptr[3]; ptr[3] = ptr[5]; ptr[5] = tmp; \
     }
 
-static __inline__ void
+static SDL_INLINE void
 swizzle_alsa_channels_6_64bit(_THIS)
 {
     SWIZ6(Uint64);
 }
 
-static __inline__ void
+static SDL_INLINE void
 swizzle_alsa_channels_6_32bit(_THIS)
 {
     SWIZ6(Uint32);
 }
 
-static __inline__ void
+static SDL_INLINE void
 swizzle_alsa_channels_6_16bit(_THIS)
 {
     SWIZ6(Uint16);
 }
 
-static __inline__ void
+static SDL_INLINE void
 swizzle_alsa_channels_6_8bit(_THIS)
 {
     SWIZ6(Uint8);
@@ -272,7 +272,7 @@
  * Called right before feeding this->hidden->mixbuf to the hardware. Swizzle
  *  channels from Windows/Mac order to the format alsalib will want.
  */
-static __inline__ void
+static SDL_INLINE void
 swizzle_alsa_channels(_THIS)
 {
     if (this->spec.channels == 6) {
--- a/src/audio/pulseaudio/SDL_pulseaudio.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/audio/pulseaudio/SDL_pulseaudio.c	Sun Oct 20 21:56:15 2013 -0700
@@ -49,7 +49,7 @@
 
 #if (PA_API_VERSION < 12)
 /** Return non-zero if the passed state is one of the connected states */
-static __inline__ int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
+static SDL_INLINE int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
     return
         x == PA_CONTEXT_CONNECTING ||
         x == PA_CONTEXT_AUTHORIZING ||
@@ -57,7 +57,7 @@
         x == PA_CONTEXT_READY;
 }
 /** Return non-zero if the passed state is one of the connected states */
-static __inline__ int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
+static SDL_INLINE int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
     return
         x == PA_STREAM_CREATING ||
         x == PA_STREAM_READY;
@@ -322,7 +322,7 @@
 }
 
 
-static __inline__ int
+static SDL_INLINE int
 squashVersion(const int major, const int minor, const int patch)
 {
     return ((major & 0xFF) << 16) | ((minor & 0xFF) << 8) | (patch & 0xFF);
--- a/src/audio/qsa/SDL_qsa_audio.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/audio/qsa/SDL_qsa_audio.c	Sun Oct 20 21:56:15 2013 -0700
@@ -83,7 +83,7 @@
 QSA_Device qsa_capture_device[QSA_MAX_DEVICES];
 uint32_t qsa_capture_devices;
 
-static inline int
+static SDL_INLINE int
 QSA_SetError(const char *fn, int status)
 {
     return SDL_SetError("QSA: %s() failed: %s", fn, snd_strerror(status));
--- a/src/cpuinfo/SDL_cpuinfo.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/cpuinfo/SDL_cpuinfo.c	Sun Oct 20 21:56:15 2013 -0700
@@ -68,7 +68,7 @@
 }
 #endif /* HAVE_SETJMP */
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveCPUID(void)
 {
     int has_CPUID = 0;
@@ -192,7 +192,7 @@
     a = b = c = d = 0
 #endif
 
-static __inline__ int
+static SDL_INLINE int
 CPU_getCPUIDFeatures(void)
 {
     int features = 0;
@@ -206,7 +206,7 @@
     return features;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveRDTSC(void)
 {
     if (CPU_haveCPUID()) {
@@ -215,7 +215,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveAltiVec(void)
 {
     volatile int altivec = 0;
@@ -242,7 +242,7 @@
     return altivec;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveMMX(void)
 {
     if (CPU_haveCPUID()) {
@@ -251,7 +251,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_have3DNow(void)
 {
     if (CPU_haveCPUID()) {
@@ -266,7 +266,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveSSE(void)
 {
     if (CPU_haveCPUID()) {
@@ -275,7 +275,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveSSE2(void)
 {
     if (CPU_haveCPUID()) {
@@ -284,7 +284,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveSSE3(void)
 {
     if (CPU_haveCPUID()) {
@@ -299,7 +299,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveSSE41(void)
 {
     if (CPU_haveCPUID()) {
@@ -314,7 +314,7 @@
     return 0;
 }
 
-static __inline__ int
+static SDL_INLINE int
 CPU_haveSSE42(void)
 {
     if (CPU_haveCPUID()) {
--- a/src/events/SDL_events.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/events/SDL_events.c	Sun Oct 20 21:56:15 2013 -0700
@@ -83,7 +83,7 @@
 } SDL_EventQ = { NULL, SDL_TRUE };
 
 
-static __inline__ SDL_bool
+static SDL_INLINE SDL_bool
 SDL_ShouldPollJoystick()
 {
 #if !SDL_JOYSTICK_DISABLED
--- a/src/joystick/linux/SDL_sysjoystick.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/joystick/linux/SDL_sysjoystick.c	Sun Oct 20 21:56:15 2013 -0700
@@ -617,7 +617,7 @@
     return !joystick->closed && (joystick->hwdata->item != NULL);
 }
 
-static __inline__ void
+static SDL_INLINE void
 HandleHat(SDL_Joystick * stick, Uint8 hat, int axis, int value)
 {
     struct hwdata_hat *the_hat;
@@ -643,14 +643,14 @@
     }
 }
 
-static __inline__ void
+static SDL_INLINE void
 HandleBall(SDL_Joystick * stick, Uint8 ball, int axis, int value)
 {
     stick->hwdata->balls[ball].axis[axis] += value;
 }
 
 
-static __inline__ int
+static SDL_INLINE int
 AxisCorrect(SDL_Joystick * joystick, int which, int value)
 {
     struct axis_correct *correct;
@@ -679,7 +679,7 @@
     return value;
 }
 
-static __inline__ void
+static SDL_INLINE void
 PollAllValues(SDL_Joystick * joystick)
 {
     struct input_absinfo absinfo;
@@ -717,7 +717,7 @@
     }
 }
 
-static __inline__ void
+static SDL_INLINE void
 HandleInputEvents(SDL_Joystick * joystick)
 {
     struct input_event events[32];
--- a/src/joystick/psp/SDL_sysjoystick.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/joystick/psp/SDL_sysjoystick.c	Sun Oct 20 21:56:15 2013 -0700
@@ -60,7 +60,7 @@
 static point d = { 128, 32767 };
 
 /* simple linear interpolation between two points */
-static __inline__ void lerp (point *dest, point *a, point *b, float t)
+static SDL_INLINE void lerp (point *dest, point *a, point *b, float t)
 {
     dest->x = a->x + (b->x - a->x)*t;
     dest->y = a->y + (b->y - a->y)*t;
--- a/src/render/opengles/SDL_render_gles.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/render/opengles/SDL_render_gles.c	Sun Oct 20 21:56:15 2013 -0700
@@ -414,7 +414,7 @@
     }
 }
 
-static __inline__ int
+static SDL_INLINE int
 power_of_2(int input)
 {
     int value = 1;
--- a/src/video/SDL_blit_copy.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/SDL_blit_copy.c	Sun Oct 20 21:56:15 2013 -0700
@@ -27,7 +27,7 @@
 
 #ifdef __SSE__
 /* This assumes 16-byte aligned src and dst */
-static __inline__ void
+static SDL_INLINE void
 SDL_memcpySSE(Uint8 * dst, const Uint8 * src, int len)
 {
     int i;
@@ -56,7 +56,7 @@
 #ifdef _MSC_VER
 #pragma warning(disable:4799)
 #endif
-static __inline__ void
+static SDL_INLINE void
 SDL_memcpyMMX(Uint8 * dst, const Uint8 * src, int len)
 {
     const int remain = (len & 63);
--- a/src/video/SDL_surface.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/SDL_surface.c	Sun Oct 20 21:56:15 2013 -0700
@@ -951,7 +951,7 @@
 /*
  * Create a surface on the stack for quick blit operations
  */
-static __inline__ SDL_bool
+static SDL_INLINE SDL_bool
 SDL_CreateSurfaceOnStack(int width, int height, Uint32 pixel_format,
                          void * pixels, int pitch, SDL_Surface * surface,
                          SDL_PixelFormat * format, SDL_BlitMap * blitmap)
--- a/src/video/SDL_video.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/SDL_video.c	Sun Oct 20 21:56:15 2013 -0700
@@ -2382,7 +2382,7 @@
     }
 }
 
-static __inline__ SDL_bool
+static SDL_INLINE SDL_bool
 isAtLeastGL3(const char *verstr)
 {
     return ( verstr && (SDL_atoi(verstr) >= 3) );
--- a/src/video/bwindow/SDL_bframebuffer.cc	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/bwindow/SDL_bframebuffer.cc	Sun Oct 20 21:56:15 2013 -0700
@@ -37,11 +37,11 @@
 
 int32 BE_UpdateOnce(SDL_Window *window);
 
-static inline SDL_BWin *_ToBeWin(SDL_Window *window) {
+static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
 	return ((SDL_BWin*)(window->driverdata));
 }
 
-static inline SDL_BApp *_GetBeApp() {
+static SDL_INLINE SDL_BApp *_GetBeApp() {
 	return ((SDL_BApp*)be_app);
 }
 
--- a/src/video/bwindow/SDL_bmodes.cc	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/bwindow/SDL_bmodes.cc	Sun Oct 20 21:56:15 2013 -0700
@@ -48,15 +48,15 @@
 };
 #endif
 
-static inline SDL_BWin *_ToBeWin(SDL_Window *window) {
+static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
 	return ((SDL_BWin*)(window->driverdata));
 }
 
-static inline SDL_BApp *_GetBeApp() {
+static SDL_INLINE SDL_BApp *_GetBeApp() {
 	return ((SDL_BApp*)be_app);
 }
 
-static inline display_mode * _ExtractBMode(SDL_DisplayMode *mode) {
+static SDL_INLINE display_mode * _ExtractBMode(SDL_DisplayMode *mode) {
 #if WRAP_BMODE
 	return ((SDL_DisplayModeData*)mode->driverdata)->bmode;
 #else
--- a/src/video/bwindow/SDL_bopengl.cc	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/bwindow/SDL_bopengl.cc	Sun Oct 20 21:56:15 2013 -0700
@@ -37,11 +37,11 @@
 
 #define BGL_FLAGS BGL_RGB | BGL_DOUBLE
 
-static inline SDL_BWin *_ToBeWin(SDL_Window *window) {
+static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
 	return ((SDL_BWin*)(window->driverdata));
 }
 
-static inline SDL_BApp *_GetBeApp() {
+static SDL_INLINE SDL_BApp *_GetBeApp() {
 	return ((SDL_BApp*)be_app);
 }
 
--- a/src/video/bwindow/SDL_bwindow.cc	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/bwindow/SDL_bwindow.cc	Sun Oct 20 21:56:15 2013 -0700
@@ -31,11 +31,11 @@
 extern "C" {
 #endif
 
-static inline SDL_BWin *_ToBeWin(SDL_Window *window) {
+static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
 	return ((SDL_BWin*)(window->driverdata));
 }
 
-static inline SDL_BApp *_GetBeApp() {
+static SDL_INLINE SDL_BApp *_GetBeApp() {
 	return ((SDL_BApp*)be_app);
 }
 
--- a/src/video/directfb/SDL_DirectFB_render.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/directfb/SDL_DirectFB_render.c	Sun Oct 20 21:56:15 2013 -0700
@@ -167,7 +167,7 @@
 #endif
 } DirectFB_TextureData;
 
-static __inline__ void
+static SDL_INLINE void
 SDLtoDFBRect(const SDL_Rect * sr, DFBRectangle * dr)
 {
     dr->x = sr->x;
@@ -175,7 +175,7 @@
     dr->h = sr->h;
     dr->w = sr->w;
 }
-static __inline__ void
+static SDL_INLINE void
 SDLtoDFBRect_Float(const SDL_FRect * sr, DFBRectangle * dr)
 {
     dr->x = sr->x;
@@ -211,7 +211,7 @@
 #endif
 }
 
-static inline IDirectFBSurface *get_dfb_surface(SDL_Window *window)
+static SDL_INLINE IDirectFBSurface *get_dfb_surface(SDL_Window *window)
 {
     SDL_SysWMinfo wm_info;
     SDL_memset(&wm_info, 0, sizeof(SDL_SysWMinfo));
@@ -222,7 +222,7 @@
     return wm_info.info.dfb.surface;
 }
 
-static inline IDirectFBWindow *get_dfb_window(SDL_Window *window)
+static SDL_INLINE IDirectFBWindow *get_dfb_window(SDL_Window *window)
 {
     SDL_SysWMinfo wm_info;
     SDL_memset(&wm_info, 0, sizeof(SDL_SysWMinfo));
--- a/src/video/directfb/SDL_DirectFB_video.h	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/directfb/SDL_DirectFB_video.h	Sun Oct 20 21:56:15 2013 -0700
@@ -88,7 +88,7 @@
 
 #define SDL_DFB_DEBUG(x...) SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, x)
 
-static inline DFBResult sdl_dfb_check(DFBResult ret, const char *src_file, int src_line) {
+static SDL_INLINE DFBResult sdl_dfb_check(DFBResult ret, const char *src_file, int src_line) {
     if (ret != DFB_OK) {
         SDL_DFB_LOG("%s (%d):%s", src_file, src_line, DirectFBErrorString (ret) );
         SDL_SetError("%s:%s", SDL_DFB_CONTEXT, DirectFBErrorString (ret) );
--- a/src/video/x11/SDL_x11messagebox.c	Sun Oct 20 21:34:38 2013 -0700
+++ b/src/video/x11/SDL_x11messagebox.c	Sun Oct 20 21:56:15 2013 -0700
@@ -112,7 +112,7 @@
 } SDL_MessageBoxDataX11;
 
 /* Maximum helper for ints. */
-static __inline__ int
+static SDL_INLINE int
 IntMax( int a, int b )
 {
     return ( a > b  ) ? a : b;