[Commits] SDL: Fixed building SDL applications with Visual Studio and the ...

libsdl.org revision control commits-owner at libsdl.org
Sat Aug 19 03:07:54 PDT 2017


details:   https://hg.libsdl.org/SDL/rev/6ae35c5f7f7b
changeset: 11330:6ae35c5f7f7b
user:      Sam Lantinga <slouken at libsdl.org>
date:      Sat Aug 19 03:07:44 2017 -0700
description:
Fixed building SDL applications with Visual Studio and the clang toolset
Also fixed building 64-bit SDL with clang. 32-bit doesn't build because of the inline assembly for C runtime support.

diffstat:

 include/SDL_atomic.h                 |  2 +-
 include/SDL_config_windows.h         |  2 +-
 include/SDL_cpuinfo.h                |  7 +++++++
 src/render/direct3d/SDL_render_d3d.c |  3 ++-
 4 files changed, 11 insertions(+), 3 deletions(-)

diffs (68 lines):

diff -r 3ed56acc90ca -r 6ae35c5f7f7b include/SDL_atomic.h
--- a/include/SDL_atomic.h	Sat Aug 19 02:23:50 2017 -0700
+++ b/include/SDL_atomic.h	Sat Aug 19 03:07:44 2017 -0700
@@ -118,7 +118,7 @@
  * The compiler barrier prevents the compiler from reordering
  * reads and writes to globally visible variables across the call.
  */
-#if defined(_MSC_VER) && (_MSC_VER > 1200)
+#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
 void _ReadWriteBarrier(void);
 #pragma intrinsic(_ReadWriteBarrier)
 #define SDL_CompilerBarrier()   _ReadWriteBarrier()
diff -r 3ed56acc90ca -r 6ae35c5f7f7b include/SDL_config_windows.h
--- a/include/SDL_config_windows.h	Sat Aug 19 02:23:50 2017 -0700
+++ b/include/SDL_config_windows.h	Sat Aug 19 03:07:44 2017 -0700
@@ -157,7 +157,7 @@
 /* Enable various audio drivers */
 #define SDL_AUDIO_DRIVER_WASAPI 1
 #define SDL_AUDIO_DRIVER_DSOUND 1
-#define SDL_AUDIO_DRIVER_XAUDIO2    1
+#define SDL_AUDIO_DRIVER_XAUDIO2    0
 #define SDL_AUDIO_DRIVER_WINMM  1
 #define SDL_AUDIO_DRIVER_DISK   1
 #define SDL_AUDIO_DRIVER_DUMMY  1
diff -r 3ed56acc90ca -r 6ae35c5f7f7b include/SDL_cpuinfo.h
--- a/include/SDL_cpuinfo.h	Sat Aug 19 02:23:50 2017 -0700
+++ b/include/SDL_cpuinfo.h	Sat Aug 19 03:07:44 2017 -0700
@@ -33,6 +33,12 @@
 /* Need to do this here because intrin.h has C++ code in it */
 /* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
 #if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
+#ifdef __clang__
+/* Many of the intrinsics SDL uses are not implemented by clang with Visual Studio */
+#undef __MMX__
+#undef __SSE__
+#undef __SSE2__
+#else
 #include <intrin.h>
 #ifndef _WIN64
 #define __MMX__
@@ -40,6 +46,7 @@
 #endif
 #define __SSE__
 #define __SSE2__
+#endif /* __clang__ */
 #elif defined(__MINGW64_VERSION_MAJOR)
 #include <intrin.h>
 #else
diff -r 3ed56acc90ca -r 6ae35c5f7f7b src/render/direct3d/SDL_render_d3d.c
--- a/src/render/direct3d/SDL_render_d3d.c	Sat Aug 19 02:23:50 2017 -0700
+++ b/src/render/direct3d/SDL_render_d3d.c	Sat Aug 19 03:07:44 2017 -0700
@@ -761,6 +761,7 @@
             const char *error = (const char *)pErrorMsgs->lpVtbl->GetBufferPointer(pErrorMsgs);
             SDL_SetError("Couldn't assemble shader: %s", error);
         }
+        if (shader_data != NULL)
 #else
         const DWORD shader_data[] = {
             0xffff0200, 0x05000051, 0xa00f0000, 0xbd808081, 0xbf008081, 0xbf008081,
@@ -780,7 +781,7 @@
             0x80e40000, 0x0000ffff
         };
 #endif
-        if (shader_data != NULL) {
+        {
             result = IDirect3DDevice9_CreatePixelShader(data->device, shader_data, &data->ps_yuv);
             if (!FAILED(result)) {
                 renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;


More information about the commits mailing list