From 12ca3ce3fadff1298c39a1ec5c4d0fcecc78af51 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 17 Oct 2013 23:02:29 -0700 Subject: [PATCH] Fixed building using MinGW Our SDL_windows.h needed to be included before anything else so UNICODE is defined. --- src/SDL.c | 5 ++++- src/SDL_assert.c | 6 ++++-- src/SDL_log.c | 8 +++++--- src/atomic/SDL_spinlock.c | 8 ++++---- src/core/windows/SDL_windows.c | 2 +- src/cpuinfo/SDL_cpuinfo.c | 7 ++++--- src/file/SDL_rwops.c | 7 +++++-- src/joystick/windows/SDL_mmjoystick.c | 11 ++++++++--- src/main/windows/SDL_windows_main.c | 6 +++--- src/render/direct3d/SDL_render_d3d.c | 1 - src/render/software/SDL_rotate.c | 4 ++-- src/stdlib/SDL_getenv.c | 5 ++++- src/test/SDL_test_common.c | 6 +++--- src/thread/windows/SDL_systhread.c | 4 ++-- src/thread/windows/SDL_systls.c | 4 ++-- src/video/windows/SDL_windowsmessagebox.c | 6 +++++- src/video/windows/SDL_windowsvideo.h | 4 ++-- src/video/windows/SDL_windowswindow.c | 2 ++ test/configure | 2 +- test/configure.in | 2 +- 20 files changed, 62 insertions(+), 38 deletions(-) diff --git a/src/SDL.c b/src/SDL.c index b1111159a..619a0c1f8 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -20,6 +20,10 @@ */ #include "SDL_config.h" +#if defined(__WIN32__) +#include "core/windows/SDL_windows.h" +#endif + /* Initialization code for SDL */ #include "SDL.h" @@ -443,7 +447,6 @@ SDL_GetPlatform() #if !defined(HAVE_LIBC) || (defined(__WATCOMC__) && defined(BUILD_DLL)) /* Need to include DllMain() on Watcom C for some reason.. */ -#include "core/windows/SDL_windows.h" BOOL APIENTRY _DllMainCRTStartup(HANDLE hModule, diff --git a/src/SDL_assert.c b/src/SDL_assert.c index a4cf6434f..41c6ad6c0 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -20,6 +20,10 @@ */ #include "SDL_config.h" +#if defined(__WIN32__) +#include "core/windows/SDL_windows.h" +#endif + #include "SDL.h" #include "SDL_atomic.h" #include "SDL_messagebox.h" @@ -29,8 +33,6 @@ #include "video/SDL_sysvideo.h" #ifdef __WIN32__ -#include "core/windows/SDL_windows.h" - #ifndef WS_OVERLAPPEDWINDOW #define WS_OVERLAPPEDWINDOW 0 #endif diff --git a/src/SDL_log.c b/src/SDL_log.c index 802a6f25c..18611ca9b 100644 --- a/src/SDL_log.c +++ b/src/SDL_log.c @@ -20,6 +20,10 @@ */ #include "SDL_config.h" +#if defined(__WIN32__) +#include "core/windows/SDL_windows.h" +#endif + /* Simple log messages in SDL */ #include "SDL_log.h" @@ -28,9 +32,7 @@ #include #endif -#if defined(__WIN32__) -#include "core/windows/SDL_windows.h" -#elif defined(__ANDROID__) +#if defined(__ANDROID__) #include #endif diff --git a/src/atomic/SDL_spinlock.c b/src/atomic/SDL_spinlock.c index f3aeea0e2..0826a3f92 100644 --- a/src/atomic/SDL_spinlock.c +++ b/src/atomic/SDL_spinlock.c @@ -20,14 +20,14 @@ */ #include "SDL_config.h" +#ifdef __WIN32__ +#include "../core/windows/SDL_windows.h" +#endif + #include "SDL_atomic.h" #include "SDL_mutex.h" #include "SDL_timer.h" -/* Don't do the check for Visual Studio 2005, it's safe here */ -#ifdef __WIN32__ -#include "../core/windows/SDL_windows.h" -#endif /* This function is where all the magic happens... */ SDL_bool diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c index e69d25793..6ac86a6e6 100644 --- a/src/core/windows/SDL_windows.c +++ b/src/core/windows/SDL_windows.c @@ -22,8 +22,8 @@ #ifdef __WIN32__ -#include "SDL_error.h" #include "SDL_windows.h" +#include "SDL_error.h" #include "SDL_assert.h" #include /* for CoInitialize/CoUninitialize */ diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 5e048f9c3..2b81f9117 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -20,6 +20,10 @@ */ #include "SDL_config.h" +#if defined(__WIN32__) +#include "../core/windows/SDL_windows.h" +#endif + /* CPU feature detection for SDL */ #include "SDL_cpuinfo.h" @@ -41,9 +45,6 @@ #include #include #endif -#ifdef __WIN32__ -#include "../core/windows/SDL_windows.h" -#endif #define CPU_HAS_RDTSC 0x00000001 #define CPU_HAS_ALTIVEC 0x00000002 diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index dc89e22fb..d71dbfdf3 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -22,6 +22,11 @@ #define _LARGEFILE64_SOURCE #include "SDL_config.h" +#if defined(__WIN32__) +#include "../core/windows/SDL_windows.h" +#endif + + /* This file provides a general interface for SDL to read and write data sources. It can easily be extended to files, memory, etc. */ @@ -42,8 +47,6 @@ /* Functions to read/write Win32 API file pointers */ -#include "../core/windows/SDL_windows.h" - #ifndef INVALID_SET_FILE_POINTER #define INVALID_SET_FILE_POINTER 0xFFFFFFFF #endif diff --git a/src/joystick/windows/SDL_mmjoystick.c b/src/joystick/windows/SDL_mmjoystick.c index f236dff96..e012d4466 100644 --- a/src/joystick/windows/SDL_mmjoystick.c +++ b/src/joystick/windows/SDL_mmjoystick.c @@ -33,6 +33,11 @@ #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" +#ifdef REGSTR_VAL_JOYOEMNAME +#undef REGSTR_VAL_JOYOEMNAME +#endif +#define REGSTR_VAL_JOYOEMNAME "OEMName" + #define MAX_JOYSTICKS 16 #define MAX_AXES 6 /* each joystick can have up to 6 axes */ #define MAX_BUTTONS 32 /* and 32 buttons */ @@ -45,7 +50,7 @@ /* array to hold joystick ID values */ static UINT SYS_JoystickID[MAX_JOYSTICKS]; -static JOYCAPS SYS_Joystick[MAX_JOYSTICKS]; +static JOYCAPSA SYS_Joystick[MAX_JOYSTICKS]; static char *SYS_JoystickName[MAX_JOYSTICKS]; /* The private structure used to keep track of a joystick */ @@ -148,7 +153,7 @@ SDL_SYS_JoystickInit(void) int i; int maxdevs; JOYINFOEX joyinfo; - JOYCAPS joycaps; + JOYCAPSA joycaps; MMRESULT result; /* Reset the joystick ID & name mapping tables */ @@ -166,7 +171,7 @@ SDL_SYS_JoystickInit(void) joyinfo.dwFlags = JOY_RETURNALL; result = joyGetPosEx(i, &joyinfo); if (result == JOYERR_NOERROR) { - result = joyGetDevCaps(i, &joycaps, sizeof(joycaps)); + result = joyGetDevCapsA(i, &joycaps, sizeof(joycaps)); if (result == JOYERR_NOERROR) { SYS_JoystickID[SDL_SYS_numjoysticks] = i; SYS_Joystick[SDL_SYS_numjoysticks] = joycaps; diff --git a/src/main/windows/SDL_windows_main.c b/src/main/windows/SDL_windows_main.c index 519ce14b8..4e8e3f2f4 100644 --- a/src/main/windows/SDL_windows_main.c +++ b/src/main/windows/SDL_windows_main.c @@ -7,12 +7,12 @@ #ifdef __WIN32__ +/* Include this so we define UNICODE properly */ +#include "../../core/windows/SDL_windows.h" + #include #include -#define WIN32_LEAN_AND_MEAN -#include - /* Include the SDL main definition header */ #include "SDL.h" #include "SDL_main.h" diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 33665e370..67cddb387 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -22,7 +22,6 @@ #if SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED - #include "../../core/windows/SDL_windows.h" #include "SDL_hints.h" diff --git a/src/render/software/SDL_rotate.c b/src/render/software/SDL_rotate.c index 628c8d534..44678cba5 100644 --- a/src/render/software/SDL_rotate.c +++ b/src/render/software/SDL_rotate.c @@ -30,8 +30,8 @@ Andreas Schiffler -- aschiffler at ferzkopp dot net */ #include "SDL_config.h" -#ifdef WIN32 -#include +#if defined(__WIN32__) +#include "../../core/windows/SDL_windows.h" #endif #include diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index 0cd440549..10fa7c5c1 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -20,10 +20,13 @@ */ #include "SDL_config.h" +#if defined(__WIN32__) +#include "../core/windows/SDL_windows.h" +#endif + #include "SDL_stdinc.h" #if !defined(SDL_setenv) && defined(__WIN32__) -#include "../core/windows/SDL_windows.h" /* Note this isn't thread-safe! */ static char *SDL_envmem = NULL; /* Ugh, memory leak */ static size_t SDL_envmemlen = 0; diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 981e3cdcb..3bb2f0a7c 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1107,10 +1107,10 @@ SDLTest_PrintEvent(SDL_Event * event) case SDL_FINGERDOWN: case SDL_FINGERUP: - fprintf(stderr, "Finger: %s touch=%lld, finger=%lld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f", + fprintf(stderr, "Finger: %s touch=%ld, finger=%ld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f", (event->type == SDL_FINGERDOWN) ? "down" : "up", - (long long) event->tfinger.touchId, - (long long) event->tfinger.fingerId, + (long) event->tfinger.touchId, + (long) event->tfinger.fingerId, event->tfinger.x, event->tfinger.y, event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure); break; diff --git a/src/thread/windows/SDL_systhread.c b/src/thread/windows/SDL_systhread.c index 8efcd5089..4386e841f 100644 --- a/src/thread/windows/SDL_systhread.c +++ b/src/thread/windows/SDL_systhread.c @@ -116,8 +116,8 @@ SDL_SYS_CreateThread(SDL_Thread * thread, void *args) int SDL_SYS_CreateThread(SDL_Thread * thread, void *args) { - pfnSDL_CurrentBeginThread pfnBeginThread = _beginthreadex; - pfnSDL_CurrentEndThread pfnEndThread = _endthreadex; + pfnSDL_CurrentBeginThread pfnBeginThread = (pfnSDL_CurrentBeginThread)_beginthreadex; + pfnSDL_CurrentEndThread pfnEndThread = (pfnSDL_CurrentEndThread)_endthreadex; #endif /* SDL_PASSED_BEGINTHREAD_ENDTHREAD */ pThreadStartParms pThreadParms = (pThreadStartParms) SDL_malloc(sizeof(tThreadStartParms)); diff --git a/src/thread/windows/SDL_systls.c b/src/thread/windows/SDL_systls.c index 0ece77dd0..90941ee62 100644 --- a/src/thread/windows/SDL_systls.c +++ b/src/thread/windows/SDL_systls.c @@ -20,13 +20,13 @@ */ #include "SDL_config.h" -#include "SDL_thread.h" -#include "../SDL_thread_c.h" #if SDL_THREAD_WINDOWS #include "../../core/windows/SDL_windows.h" +#include "SDL_thread.h" +#include "../SDL_thread_c.h" static DWORD thread_local_storage = TLS_OUT_OF_INDEXES; static SDL_bool generic_local_storage = SDL_FALSE; diff --git a/src/video/windows/SDL_windowsmessagebox.c b/src/video/windows/SDL_windowsmessagebox.c index f54425902..e50c542ed 100644 --- a/src/video/windows/SDL_windowsmessagebox.c +++ b/src/video/windows/SDL_windowsmessagebox.c @@ -22,7 +22,11 @@ #if SDL_VIDEO_DRIVER_WINDOWS -#include "SDL.h" +#if defined(__WIN32__) +#include "../../core/windows/SDL_windows.h" +#endif + +#include "SDL_assert.h" #include "SDL_windowsvideo.h" diff --git a/src/video/windows/SDL_windowsvideo.h b/src/video/windows/SDL_windowsvideo.h index b00d71375..ff2b4a2ac 100644 --- a/src/video/windows/SDL_windowsvideo.h +++ b/src/video/windows/SDL_windowsvideo.h @@ -23,10 +23,10 @@ #ifndef _SDL_windowsvideo_h #define _SDL_windowsvideo_h -#include "../SDL_sysvideo.h" - #include "../../core/windows/SDL_windows.h" +#include "../SDL_sysvideo.h" + #if defined(_MSC_VER) #include #else diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 0c5e5bbed..cd53975d1 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -22,6 +22,8 @@ #if SDL_VIDEO_DRIVER_WINDOWS +#include "../../core/windows/SDL_windows.h" + #include "SDL_assert.h" #include "../SDL_sysvideo.h" #include "../SDL_pixels_c.h" diff --git a/test/configure b/test/configure index 94a2f1394..136606c77 100755 --- a/test/configure +++ b/test/configure @@ -3452,7 +3452,7 @@ rm -f core conftest.err conftest.$ac_objext \ rm -f conf.sdltest CFLAGS="$CFLAGS $SDL_CFLAGS" -LIBS="$LIBS $SDL_LIBS -lSDL2_test" +LIBS="$LIBS -lSDL2_test $SDL_LIBS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' diff --git a/test/configure.in b/test/configure.in index a18609715..eb3028747 100644 --- a/test/configure.in +++ b/test/configure.in @@ -86,7 +86,7 @@ AM_PATH_SDL2($SDL_VERSION, AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) ) CFLAGS="$CFLAGS $SDL_CFLAGS" -LIBS="$LIBS $SDL_LIBS -lSDL2_test" +LIBS="$LIBS -lSDL2_test $SDL_LIBS" dnl Check for X11 path, needed for OpenGL on some systems AC_PATH_X