Skip to content

Commit

Permalink
Fixed building SDL applications with Visual Studio and the clang toolset
Browse files Browse the repository at this point in the history
Also fixed building 64-bit SDL with clang. 32-bit doesn't build because of the inline assembly for C runtime support.
  • Loading branch information
slouken committed Aug 19, 2017
1 parent 12d33b3 commit 30d554e
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion include/SDL_atomic.h
Expand Up @@ -118,7 +118,7 @@ extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
* 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()
Expand Down
2 changes: 1 addition & 1 deletion include/SDL_config_windows.h
Expand Up @@ -157,7 +157,7 @@ typedef unsigned int uintptr_t;
/* 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
Expand Down
7 changes: 7 additions & 0 deletions include/SDL_cpuinfo.h
Expand Up @@ -33,13 +33,20 @@
/* 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__
#define __3dNOW__
#endif
#define __SSE__
#define __SSE2__
#endif /* __clang__ */
#elif defined(__MINGW64_VERSION_MAJOR)
#include <intrin.h>
#else
Expand Down
3 changes: 2 additions & 1 deletion src/render/direct3d/SDL_render_d3d.c
Expand Up @@ -761,6 +761,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
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,
Expand All @@ -780,7 +781,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
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;
Expand Down

0 comments on commit 30d554e

Please sign in to comment.