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/5486e579872e / 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.
This commit is contained in:
Sam Lantinga 2013-10-20 21:56:15 -07:00
parent 4ca34ad4a4
commit 08fa8da77c
21 changed files with 63 additions and 76 deletions

View file

@ -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__
#endif
#define SDL_FORCE_INLINE static SDL_INLINE
#endif
#endif /* SDL_FORCE_INLINE not defined */
/* Apparently this is needed by several Windows compilers */
#if !defined(__MACH__)

View file

@ -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 @@ enterLock(void *a)
SDL_AtomicLock(&locks[index]);
}
static __inline__ void
static SDL_INLINE void
leaveLock(void *a)
{
uintptr_t index = ((((uintptr_t)a) >> 3) & 0x1f);

View file

@ -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)
{

View file

@ -241,25 +241,25 @@ ALSA_WaitDevice(_THIS)
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 @@ swizzle_alsa_channels_6_8bit(_THIS)
* 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) {

View file

@ -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 @@ static __inline__ int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
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 @@ PULSEAUDIO_CloseDevice(_THIS)
}
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);

View file

@ -83,7 +83,7 @@ uint32_t qsa_playback_devices;
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));

View file

@ -68,7 +68,7 @@ illegal_instruction(int sig)
}
#endif /* HAVE_SETJMP */
static __inline__ int
static SDL_INLINE int
CPU_haveCPUID(void)
{
int has_CPUID = 0;
@ -192,7 +192,7 @@ done:
a = b = c = d = 0
#endif
static __inline__ int
static SDL_INLINE int
CPU_getCPUIDFeatures(void)
{
int features = 0;
@ -206,7 +206,7 @@ CPU_getCPUIDFeatures(void)
return features;
}
static __inline__ int
static SDL_INLINE int
CPU_haveRDTSC(void)
{
if (CPU_haveCPUID()) {
@ -215,7 +215,7 @@ CPU_haveRDTSC(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveAltiVec(void)
{
volatile int altivec = 0;
@ -242,7 +242,7 @@ CPU_haveAltiVec(void)
return altivec;
}
static __inline__ int
static SDL_INLINE int
CPU_haveMMX(void)
{
if (CPU_haveCPUID()) {
@ -251,7 +251,7 @@ CPU_haveMMX(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_have3DNow(void)
{
if (CPU_haveCPUID()) {
@ -266,7 +266,7 @@ CPU_have3DNow(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveSSE(void)
{
if (CPU_haveCPUID()) {
@ -275,7 +275,7 @@ CPU_haveSSE(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveSSE2(void)
{
if (CPU_haveCPUID()) {
@ -284,7 +284,7 @@ CPU_haveSSE2(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveSSE3(void)
{
if (CPU_haveCPUID()) {
@ -299,7 +299,7 @@ CPU_haveSSE3(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveSSE41(void)
{
if (CPU_haveCPUID()) {
@ -314,7 +314,7 @@ CPU_haveSSE41(void)
return 0;
}
static __inline__ int
static SDL_INLINE int
CPU_haveSSE42(void)
{
if (CPU_haveCPUID()) {

View file

@ -83,7 +83,7 @@ static struct
} SDL_EventQ = { NULL, SDL_TRUE };
static __inline__ SDL_bool
static SDL_INLINE SDL_bool
SDL_ShouldPollJoystick()
{
#if !SDL_JOYSTICK_DISABLED

View file

@ -617,7 +617,7 @@ SDL_bool SDL_SYS_JoystickAttached(SDL_Joystick *joystick)
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 @@ HandleHat(SDL_Joystick * stick, Uint8 hat, int axis, int value)
}
}
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 @@ AxisCorrect(SDL_Joystick * joystick, int which, int value)
return value;
}
static __inline__ void
static SDL_INLINE void
PollAllValues(SDL_Joystick * joystick)
{
struct input_absinfo absinfo;
@ -717,7 +717,7 @@ PollAllValues(SDL_Joystick * joystick)
}
}
static __inline__ void
static SDL_INLINE void
HandleInputEvents(SDL_Joystick * joystick)
{
struct input_event events[32];

View file

@ -60,7 +60,7 @@ static point c = { 78, 32767 };
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;

View file

@ -414,7 +414,7 @@ GLES_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
}
}
static __inline__ int
static SDL_INLINE int
power_of_2(int input)
{
int value = 1;

View file

@ -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 @@ SDL_memcpySSE(Uint8 * dst, const Uint8 * src, int len)
#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);

View file

@ -951,7 +951,7 @@ SDL_ConvertSurfaceFormat(SDL_Surface * surface, Uint32 pixel_format,
/*
* 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)

View file

@ -2382,7 +2382,7 @@ SDL_GL_UnloadLibrary(void)
}
}
static __inline__ SDL_bool
static SDL_INLINE SDL_bool
isAtLeastGL3(const char *verstr)
{
return ( verstr && (SDL_atoi(verstr) >= 3) );

View file

@ -37,11 +37,11 @@ extern "C" {
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);
}

View file

@ -48,15 +48,15 @@ typedef struct SDL_DisplayModeData {
};
#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

View file

@ -37,11 +37,11 @@ extern "C" {
#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);
}

View file

@ -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);
}

View file

@ -167,7 +167,7 @@ typedef struct
#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 @@ SDLtoDFBRect(const SDL_Rect * sr, DFBRectangle * dr)
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 @@ TextureHasAlpha(DirectFB_TextureData * data)
#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 @@ static inline IDirectFBSurface *get_dfb_surface(SDL_Window *window)
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));

View file

@ -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) );

View file

@ -112,7 +112,7 @@ typedef struct SDL_MessageBoxDataX11
} SDL_MessageBoxDataX11;
/* Maximum helper for ints. */
static __inline__ int
static SDL_INLINE int
IntMax( int a, int b )
{
return ( a > b ) ? a : b;