include/SDL_config_windows.h
author Sam Lantinga <slouken@libsdl.org>
Sun, 13 Oct 2013 19:51:58 -0700
changeset 7812 c50a384be081
parent 7754 2f67f0616044
child 8021 f96e12e0ade9
permissions -rw-r--r--
Fixed function feature test for Visual Studio 2012

norfanin

Fixes the version check for some functions that are only present with the MSVC 2013 CRT libraries.

I did my testing wrong and failed to see that 2012 doesn't have these functions. Microsoft implemented them in their upcoming 2013 version, though. The attached patch changes it to the check for the next version.

I also removed the HAVE_ITOA because that would require linking with oldnames.lib and it's easier to just let the SDL implementation take over.
slouken@1422
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@6885
     3
  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
slouken@1422
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@1422
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@1422
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@1422
    20
*/
slouken@1422
    21
slouken@5086
    22
#ifndef _SDL_config_windows_h
slouken@5086
    23
#define _SDL_config_windows_h
slouken@1608
    24
slouken@1608
    25
#include "SDL_platform.h"
slouken@1422
    26
slouken@1422
    27
/* This is a set of defines to configure the SDL features */
slouken@1422
    28
slouken@3220
    29
#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
slouken@3569
    30
#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
slouken@7191
    31
#define HAVE_STDINT_H   1
slouken@1885
    32
#elif defined(_MSC_VER)
slouken@1895
    33
typedef signed __int8 int8_t;
slouken@1895
    34
typedef unsigned __int8 uint8_t;
slouken@1895
    35
typedef signed __int16 int16_t;
slouken@1895
    36
typedef unsigned __int16 uint16_t;
slouken@1895
    37
typedef signed __int32 int32_t;
slouken@1895
    38
typedef unsigned __int32 uint32_t;
slouken@1895
    39
typedef signed __int64 int64_t;
slouken@1895
    40
typedef unsigned __int64 uint64_t;
slouken@1465
    41
#ifndef _UINTPTR_T_DEFINED
slouken@1465
    42
#ifdef  _WIN64
slouken@1895
    43
typedef unsigned __int64 uintptr_t;
slouken@1465
    44
#else
slouken@1895
    45
typedef unsigned int uintptr_t;
slouken@1465
    46
#endif
slouken@1465
    47
#define _UINTPTR_T_DEFINED
icculus@2137
    48
#endif
icculus@2132
    49
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
icculus@2132
    50
#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
icculus@2132
    51
#define DWORD_PTR DWORD
icculus@2132
    52
#endif
icculus@2132
    53
#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
icculus@2132
    54
#define LONG_PTR LONG
icculus@2132
    55
#endif
slouken@1895
    56
#else /* !__GNUC__ && !_MSC_VER */
slouken@1465
    57
typedef signed char int8_t;
slouken@1465
    58
typedef unsigned char uint8_t;
slouken@1465
    59
typedef signed short int16_t;
slouken@1465
    60
typedef unsigned short uint16_t;
slouken@1465
    61
typedef signed int int32_t;
slouken@1465
    62
typedef unsigned int uint32_t;
slouken@1465
    63
typedef signed long long int64_t;
slouken@1465
    64
typedef unsigned long long uint64_t;
slouken@1471
    65
#ifndef _SIZE_T_DEFINED_
slouken@1471
    66
#define _SIZE_T_DEFINED_
slouken@1465
    67
typedef unsigned int size_t;
slouken@1471
    68
#endif
slouken@1470
    69
typedef unsigned int uintptr_t;
slouken@1885
    70
#endif /* __GNUC__ || _MSC_VER */
slouken@3220
    71
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
bob@3180
    72
bob@3180
    73
#ifdef _WIN64
bob@3180
    74
# define SIZEOF_VOIDP 8
bob@3180
    75
#else
bob@3180
    76
# define SIZEOF_VOIDP 4
bob@3180
    77
#endif
slouken@1422
    78
slouken@7233
    79
/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
slouken@1626
    80
#ifdef HAVE_LIBC
slouken@1422
    81
/* Useful headers */
slouken@1471
    82
#define HAVE_STDIO_H 1
slouken@1471
    83
#define STDC_HEADERS 1
slouken@1471
    84
#define HAVE_STRING_H 1
slouken@1471
    85
#define HAVE_CTYPE_H 1
slouken@1471
    86
#define HAVE_MATH_H 1
slouken@1471
    87
#define HAVE_SIGNAL_H 1
slouken@1471
    88
slouken@1471
    89
/* C library functions */
slouken@1471
    90
#define HAVE_MALLOC 1
slouken@1471
    91
#define HAVE_CALLOC 1
slouken@1471
    92
#define HAVE_REALLOC 1
slouken@1471
    93
#define HAVE_FREE 1
slouken@1471
    94
#define HAVE_ALLOCA 1
slouken@1471
    95
#define HAVE_QSORT 1
slouken@1471
    96
#define HAVE_ABS 1
slouken@1471
    97
#define HAVE_MEMSET 1
slouken@1471
    98
#define HAVE_MEMCPY 1
slouken@1471
    99
#define HAVE_MEMMOVE 1
slouken@1471
   100
#define HAVE_MEMCMP 1
slouken@1471
   101
#define HAVE_STRLEN 1
slouken@1471
   102
#define HAVE__STRREV 1
slouken@1471
   103
#define HAVE__STRUPR 1
slouken@1471
   104
#define HAVE__STRLWR 1
slouken@1471
   105
#define HAVE_STRCHR 1
slouken@1471
   106
#define HAVE_STRRCHR 1
slouken@1471
   107
#define HAVE_STRSTR 1
slouken@1471
   108
#define HAVE__LTOA 1
slouken@1471
   109
#define HAVE__ULTOA 1
slouken@1471
   110
#define HAVE_STRTOL 1
slouken@1471
   111
#define HAVE_STRTOUL 1
slouken@1471
   112
#define HAVE_STRTOD 1
slouken@1471
   113
#define HAVE_ATOI 1
slouken@1471
   114
#define HAVE_ATOF 1
slouken@1471
   115
#define HAVE_STRCMP 1
slouken@1471
   116
#define HAVE_STRNCMP 1
slouken@1510
   117
#define HAVE__STRICMP 1
slouken@1512
   118
#define HAVE__STRNICMP 1
slouken@4874
   119
#define HAVE_ATAN 1
slouken@4874
   120
#define HAVE_ATAN2 1
slouken@3032
   121
#define HAVE_CEIL 1
slouken@3012
   122
#define HAVE_COS 1
slouken@3012
   123
#define HAVE_COSF 1
slouken@3012
   124
#define HAVE_FABS 1
slouken@3012
   125
#define HAVE_FLOOR 1
slouken@3012
   126
#define HAVE_LOG 1
slouken@3012
   127
#define HAVE_POW 1
slouken@3012
   128
#define HAVE_SIN 1
slouken@3012
   129
#define HAVE_SINF 1
slouken@3012
   130
#define HAVE_SQRT 1
slouken@7812
   131
#if _MSC_VER >= 1800
slouken@7754
   132
#define HAVE_STRTOLL 1
slouken@7754
   133
#define HAVE_SSCANF 1
slouken@7754
   134
#define HAVE_COPYSIGN 1
slouken@7754
   135
#define HAVE_SCALBN 1
slouken@7754
   136
#endif
slouken@7754
   137
#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
slouken@7754
   138
#define HAVE_M_PI 1
slouken@7754
   139
#endif
slouken@1471
   140
#else
slouken@7191
   141
#define HAVE_STDARG_H   1
slouken@7191
   142
#define HAVE_STDDEF_H   1
slouken@1471
   143
#endif
slouken@1422
   144
slouken@1422
   145
/* Enable various audio drivers */
slouken@7191
   146
#define SDL_AUDIO_DRIVER_DSOUND 1
slouken@7191
   147
#define SDL_AUDIO_DRIVER_XAUDIO2    1
slouken@7191
   148
#define SDL_AUDIO_DRIVER_WINMM  1
slouken@7191
   149
#define SDL_AUDIO_DRIVER_DISK   1
slouken@7191
   150
#define SDL_AUDIO_DRIVER_DUMMY  1
slouken@1422
   151
slouken@1422
   152
/* Enable various input drivers */
slouken@7191
   153
#define SDL_JOYSTICK_DINPUT 1
slouken@7191
   154
#define SDL_HAPTIC_DINPUT   1
slouken@1422
   155
slouken@1422
   156
/* Enable various shared object loading systems */
slouken@7191
   157
#define SDL_LOADSO_WINDOWS  1
slouken@1422
   158
slouken@1422
   159
/* Enable various threading systems */
slouken@7191
   160
#define SDL_THREAD_WINDOWS  1
slouken@1422
   161
slouken@1422
   162
/* Enable various timer systems */
slouken@7191
   163
#define SDL_TIMER_WINDOWS   1
slouken@1422
   164
slouken@1422
   165
/* Enable various video drivers */
slouken@7191
   166
#define SDL_VIDEO_DRIVER_DUMMY  1
slouken@7191
   167
#define SDL_VIDEO_DRIVER_WINDOWS    1
slouken@1895
   168
slouken@5088
   169
#ifndef SDL_VIDEO_RENDER_D3D
slouken@7191
   170
#define SDL_VIDEO_RENDER_D3D    1
slouken@5086
   171
#endif
slouken@1422
   172
slouken@1422
   173
/* Enable OpenGL support */
slouken@5088
   174
#ifndef SDL_VIDEO_OPENGL
slouken@7191
   175
#define SDL_VIDEO_OPENGL    1
slouken@5088
   176
#endif
slouken@5088
   177
#ifndef SDL_VIDEO_OPENGL_WGL
slouken@7191
   178
#define SDL_VIDEO_OPENGL_WGL    1
slouken@5088
   179
#endif
slouken@5088
   180
#ifndef SDL_VIDEO_RENDER_OGL
slouken@7191
   181
#define SDL_VIDEO_RENDER_OGL    1
slouken@1465
   182
#endif
slouken@1422
   183
icculus@3170
   184
/* Enable system power support */
icculus@3170
   185
#define SDL_POWER_WINDOWS 1
icculus@3170
   186
icculus@7667
   187
/* Enable filesystem support */
icculus@7667
   188
#define SDL_FILESYSTEM_WINDOWS  1
icculus@7667
   189
slouken@1480
   190
/* Enable assembly routines (Win64 doesn't have inline asm) */
slouken@1480
   191
#ifndef _WIN64
slouken@7191
   192
#define SDL_ASSEMBLY_ROUTINES   1
slouken@1480
   193
#endif
slouken@1422
   194
slouken@5086
   195
#endif /* _SDL_config_windows_h */