Atlas - SDL_platform_defines.h
Home / ext / SDL / include / SDL3 Lines: 1 | Size: 12169 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 Simple DirectMedia Layer 3 Copyright (C) 1997-2025 Sam Lantinga <[email protected]> 4 5 This software is provided 'as-is', without any express or implied 6 warranty. In no event will the authors be held liable for any damages 7 arising from the use of this software. 8 9 Permission is granted to anyone to use this software for any purpose, 10 including commercial applications, and to alter it and redistribute it 11 freely, subject to the following restrictions: 12 13 1. The origin of this software must not be misrepresented; you must not 14 claim that you wrote the original software. If you use this software 15 in a product, an acknowledgment in the product documentation would be 16 appreciated but is not required. 17 2. Altered source versions must be plainly marked as such, and must not be 18 misrepresented as being the original software. 19 3. This notice may not be removed or altered from any source distribution. 20*/ 21 22/* WIKI CATEGORY: Platform */ 23 24/* 25 * SDL_platform_defines.h tries to get a standard set of platform defines. 26 */ 27 28#ifndef SDL_platform_defines_h_ 29#define SDL_platform_defines_h_ 30 31#ifdef _AIX 32 33/** 34 * A preprocessor macro that is only defined if compiling for AIX. 35 * 36 * \since This macro is available since SDL 3.2.0. 37 */ 38#define SDL_PLATFORM_AIX 1 39#endif 40 41#ifdef __HAIKU__ 42 43/** 44 * A preprocessor macro that is only defined if compiling for Haiku OS. 45 * 46 * \since This macro is available since SDL 3.2.0. 47 */ 48#define SDL_PLATFORM_HAIKU 1 49#endif 50 51#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) 52 53/** 54 * A preprocessor macro that is only defined if compiling for BSDi 55 * 56 * \since This macro is available since SDL 3.2.0. 57 */ 58#define SDL_PLATFORM_BSDI 1 59#endif 60 61#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) 62 63/** 64 * A preprocessor macro that is only defined if compiling for FreeBSD. 65 * 66 * \since This macro is available since SDL 3.2.0. 67 */ 68#define SDL_PLATFORM_FREEBSD 1 69#endif 70 71#if defined(hpux) || defined(__hpux) || defined(__hpux__) 72 73/** 74 * A preprocessor macro that is only defined if compiling for HP-UX. 75 * 76 * \since This macro is available since SDL 3.2.0. 77 */ 78#define SDL_PLATFORM_HPUX 1 79#endif 80 81#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) 82 83/** 84 * A preprocessor macro that is only defined if compiling for IRIX. 85 * 86 * \since This macro is available since SDL 3.2.0. 87 */ 88#define SDL_PLATFORM_IRIX 1 89#endif 90 91#if (defined(linux) || defined(__linux) || defined(__linux__)) 92 93/** 94 * A preprocessor macro that is only defined if compiling for Linux. 95 * 96 * Note that Android, although ostensibly a Linux-based system, will not 97 * define this. It defines SDL_PLATFORM_ANDROID instead. 98 * 99 * \since This macro is available since SDL 3.2.0. 100 */ 101#define SDL_PLATFORM_LINUX 1 102#endif 103 104#if defined(ANDROID) || defined(__ANDROID__) 105 106/** 107 * A preprocessor macro that is only defined if compiling for Android. 108 * 109 * \since This macro is available since SDL 3.2.0. 110 */ 111#define SDL_PLATFORM_ANDROID 1 112#undef SDL_PLATFORM_LINUX 113#endif 114 115#if defined(__unix__) || defined(__unix) || defined(unix) 116 117/** 118 * A preprocessor macro that is only defined if compiling for a Unix-like 119 * system. 120 * 121 * Other platforms, like Linux, might define this in addition to their primary 122 * define. 123 * 124 * \since This macro is available since SDL 3.2.0. 125 */ 126#define SDL_PLATFORM_UNIX 1 127#endif 128 129#ifdef __APPLE__ 130 131/** 132 * A preprocessor macro that is only defined if compiling for Apple platforms. 133 * 134 * iOS, macOS, etc will additionally define a more specific platform macro. 135 * 136 * \since This macro is available since SDL 3.2.0. 137 * 138 * \sa SDL_PLATFORM_MACOS 139 * \sa SDL_PLATFORM_IOS 140 * \sa SDL_PLATFORM_TVOS 141 * \sa SDL_PLATFORM_VISIONOS 142 */ 143#define SDL_PLATFORM_APPLE 1 144 145/* lets us know what version of macOS we're compiling on */ 146#include <AvailabilityMacros.h> 147#ifndef __has_extension /* Older compilers don't support this */ 148 #define __has_extension(x) 0 149 #include <TargetConditionals.h> 150 #undef __has_extension 151#else 152 #include <TargetConditionals.h> 153#endif 154 155/* Fix building with older SDKs that don't define these 156 See this for more information: 157 https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets 158*/ 159#ifndef TARGET_OS_MACCATALYST 160 #define TARGET_OS_MACCATALYST 0 161#endif 162#ifndef TARGET_OS_IOS 163 #define TARGET_OS_IOS 0 164#endif 165#ifndef TARGET_OS_IPHONE 166 #define TARGET_OS_IPHONE 0 167#endif 168#ifndef TARGET_OS_TV 169 #define TARGET_OS_TV 0 170#endif 171#ifndef TARGET_OS_SIMULATOR 172 #define TARGET_OS_SIMULATOR 0 173#endif 174#ifndef TARGET_OS_VISION 175 #define TARGET_OS_VISION 0 176#endif 177 178#if TARGET_OS_TV 179 180/** 181 * A preprocessor macro that is only defined if compiling for tvOS. 182 * 183 * \since This macro is available since SDL 3.2.0. 184 * 185 * \sa SDL_PLATFORM_APPLE 186 */ 187#define SDL_PLATFORM_TVOS 1 188#endif 189 190#if TARGET_OS_VISION 191 192/** 193 * A preprocessor macro that is only defined if compiling for visionOS. 194 * 195 * \since This macro is available since SDL 3.2.0. 196 * 197 * \sa SDL_PLATFORM_APPLE 198 */ 199#define SDL_PLATFORM_VISIONOS 1 200#endif 201 202#if TARGET_OS_IPHONE 203 204/** 205 * A preprocessor macro that is only defined if compiling for iOS or visionOS. 206 * 207 * \since This macro is available since SDL 3.2.0. 208 * 209 * \sa SDL_PLATFORM_APPLE 210 */ 211#define SDL_PLATFORM_IOS 1 212 213#else 214 215/** 216 * A preprocessor macro that is only defined if compiling for macOS. 217 * 218 * \since This macro is available since SDL 3.2.0. 219 * 220 * \sa SDL_PLATFORM_APPLE 221 */ 222#define SDL_PLATFORM_MACOS 1 223 224#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 225 #error SDL for macOS only supports deploying on 10.7 and above. 226#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ 227#endif /* TARGET_OS_IPHONE */ 228#endif /* defined(__APPLE__) */ 229 230#ifdef __EMSCRIPTEN__ 231 232/** 233 * A preprocessor macro that is only defined if compiling for Emscripten. 234 * 235 * \since This macro is available since SDL 3.2.0. 236 */ 237#define SDL_PLATFORM_EMSCRIPTEN 1 238#endif 239 240#ifdef __NetBSD__ 241 242/** 243 * A preprocessor macro that is only defined if compiling for NetBSD. 244 * 245 * \since This macro is available since SDL 3.2.0. 246 */ 247#define SDL_PLATFORM_NETBSD 1 248#endif 249 250#ifdef __OpenBSD__ 251 252/** 253 * A preprocessor macro that is only defined if compiling for OpenBSD. 254 * 255 * \since This macro is available since SDL 3.2.0. 256 */ 257#define SDL_PLATFORM_OPENBSD 1 258#endif 259 260#if defined(__OS2__) || defined(__EMX__) 261 262/** 263 * A preprocessor macro that is only defined if compiling for OS/2. 264 * 265 * \since This macro is available since SDL 3.2.0. 266 */ 267#define SDL_PLATFORM_OS2 1 268#endif 269 270#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) 271 272/** 273 * A preprocessor macro that is only defined if compiling for Tru64 (OSF/1). 274 * 275 * \since This macro is available since SDL 3.2.0. 276 */ 277#define SDL_PLATFORM_OSF 1 278#endif 279 280#ifdef __QNXNTO__ 281 282/** 283 * A preprocessor macro that is only defined if compiling for QNX Neutrino. 284 * 285 * \since This macro is available since SDL 3.2.0. 286 */ 287#define SDL_PLATFORM_QNXNTO 1 288#endif 289 290#if defined(riscos) || defined(__riscos) || defined(__riscos__) 291 292/** 293 * A preprocessor macro that is only defined if compiling for RISC OS. 294 * 295 * \since This macro is available since SDL 3.2.0. 296 */ 297#define SDL_PLATFORM_RISCOS 1 298#endif 299 300#if defined(__sun) && defined(__SVR4) 301 302/** 303 * A preprocessor macro that is only defined if compiling for SunOS/Solaris. 304 * 305 * \since This macro is available since SDL 3.2.0. 306 */ 307#define SDL_PLATFORM_SOLARIS 1 308#endif 309 310#if defined(__CYGWIN__) 311 312/** 313 * A preprocessor macro that is only defined if compiling for Cygwin. 314 * 315 * \since This macro is available since SDL 3.2.0. 316 */ 317#define SDL_PLATFORM_CYGWIN 1 318#endif 319 320#if (defined(_WIN32) || defined(SDL_PLATFORM_CYGWIN)) && !defined(__NGAGE__) 321 322/** 323 * A preprocessor macro that is only defined if compiling for Windows. 324 * 325 * This also covers several other platforms, like Microsoft GDK, Xbox, WinRT, 326 * etc. Each will have their own more-specific platform macros, too. 327 * 328 * \since This macro is available since SDL 3.2.0. 329 * 330 * \sa SDL_PLATFORM_WIN32 331 * \sa SDL_PLATFORM_XBOXONE 332 * \sa SDL_PLATFORM_XBOXSERIES 333 * \sa SDL_PLATFORM_WINGDK 334 * \sa SDL_PLATFORM_GDK 335 */ 336#define SDL_PLATFORM_WINDOWS 1 337 338/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ 339#if defined(_MSC_VER) && defined(__has_include) 340 #if __has_include(<winapifamily.h>) 341 #define HAVE_WINAPIFAMILY_H 1 342 #else 343 #define HAVE_WINAPIFAMILY_H 0 344 #endif 345 346 /* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ 347#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ 348 #define HAVE_WINAPIFAMILY_H 1 349#else 350 #define HAVE_WINAPIFAMILY_H 0 351#endif 352 353#if HAVE_WINAPIFAMILY_H 354 #include <winapifamily.h> 355 #define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) 356#else 357 #define WINAPI_FAMILY_WINRT 0 358#endif /* HAVE_WINAPIFAMILY_H */ 359 360#ifdef SDL_WIKI_DOCUMENTATION_SECTION 361 362/** 363 * A preprocessor macro that defined to 1 if compiling for Windows Phone. 364 * 365 * \since This macro is available since SDL 3.2.0. 366 */ 367#define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) 368 369#elif defined(HAVE_WINAPIFAMILY_H) && HAVE_WINAPIFAMILY_H 370 #define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) 371#else 372 #define SDL_WINAPI_FAMILY_PHONE 0 373#endif 374 375#if WINAPI_FAMILY_WINRT 376#error Windows RT/UWP is no longer supported in SDL 377 378#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ 379 380/** 381 * A preprocessor macro that is only defined if compiling for Microsoft GDK 382 * for Windows. 383 * 384 * \since This macro is available since SDL 3.2.0. 385 */ 386#define SDL_PLATFORM_WINGDK 1 387 388#elif defined(_GAMING_XBOX_XBOXONE) 389 390/** 391 * A preprocessor macro that is only defined if compiling for Xbox One. 392 * 393 * \since This macro is available since SDL 3.2.0. 394 */ 395#define SDL_PLATFORM_XBOXONE 1 396 397#elif defined(_GAMING_XBOX_SCARLETT) 398 399/** 400 * A preprocessor macro that is only defined if compiling for Xbox Series. 401 * 402 * \since This macro is available since SDL 3.2.0. 403 */ 404#define SDL_PLATFORM_XBOXSERIES 1 405 406#else 407 408/** 409 * A preprocessor macro that is only defined if compiling for desktop Windows. 410 * 411 * Despite the "32", this also covers 64-bit Windows; as an informal 412 * convention, its system layer tends to still be referred to as "the Win32 413 * API." 414 * 415 * \since This macro is available since SDL 3.2.0. 416 */ 417#define SDL_PLATFORM_WIN32 1 418 419#endif 420#endif /* defined(_WIN32) || defined(SDL_PLATFORM_CYGWIN) */ 421 422 423/* This is to support generic "any GDK" separate from a platform-specific GDK */ 424#if defined(SDL_PLATFORM_WINGDK) || defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES) 425 426/** 427 * A preprocessor macro that is only defined if compiling for Microsoft GDK on 428 * any platform. 429 * 430 * \since This macro is available since SDL 3.2.0. 431 */ 432#define SDL_PLATFORM_GDK 1 433#endif 434 435#if defined(__PSP__) || defined(__psp__) 436 437/** 438 * A preprocessor macro that is only defined if compiling for Sony PSP. 439 * 440 * \since This macro is available since SDL 3.2.0. 441 */ 442#define SDL_PLATFORM_PSP 1 443#endif 444 445#if defined(__PS2__) || defined(PS2) 446 447/** 448 * A preprocessor macro that is only defined if compiling for Sony PlayStation 449 * 2. 450 * 451 * \since This macro is available since SDL 3.2.0. 452 */ 453#define SDL_PLATFORM_PS2 1 454#endif 455 456#if defined(__vita__) || defined(__psp2__) 457 458/** 459 * A preprocessor macro that is only defined if compiling for Sony Vita. 460 * 461 * \since This macro is available since SDL 3.2.0. 462 */ 463#define SDL_PLATFORM_VITA 1 464#endif 465 466#ifdef __3DS__ 467 468/** 469 * A preprocessor macro that is only defined if compiling for Nintendo 3DS. 470 * 471 * \since This macro is available since SDL 3.2.0. 472 */ 473#define SDL_PLATFORM_3DS 1 474#endif 475 476#ifdef __NGAGE__ 477 478/** 479 * A preprocessor macro that is only defined if compiling for the Nokia 480 * N-Gage. 481 * 482 * \since This macro is available since SDL 3.4.0. 483 */ 484#define SDL_PLATFORM_NGAGE 1 485#endif 486 487#ifdef __GNU__ 488 489/** 490 * A preprocessor macro that is only defined if compiling for GNU/Hurd. 491 * 492 * \since This macro is available since SDL 3.4.0. 493 */ 494#define SDL_PLATFORM_HURD 1 495#endif 496 497#endif /* SDL_platform_defines_h_ */ 498[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.