src/dynapi/SDL_dynapi.h
author Philipp Wiesemann <philipp.wiesemann@arcor.de>
Sun, 17 Jul 2016 20:32:44 +0200
changeset 10197 623c40e8fd65
parent 10066 15b261fad7b9
permissions -rw-r--r--
Fixed compile warnings about evaluating undefined identifiers. Partially fixes Bugzilla #3351.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     1
/*
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     2
  Simple DirectMedia Layer
9998
f67cf37e9cd4 Updated copyright to 2016
Sam Lantinga <slouken@libsdl.org>
parents: 9619
diff changeset
     3
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     4
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     5
  This software is provided 'as-is', without any express or implied
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     6
  warranty.  In no event will the authors be held liable for any damages
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     7
  arising from the use of this software.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     8
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     9
  Permission is granted to anyone to use this software for any purpose,
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    10
  including commercial applications, and to alter it and redistribute it
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    11
  freely, subject to the following restrictions:
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    12
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    13
  1. The origin of this software must not be misrepresented; you must not
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    14
     claim that you wrote the original software. If you use this software
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    15
     in a product, an acknowledgment in the product documentation would be
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    16
     appreciated but is not required.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    17
  2. Altered source versions must be plainly marked as such, and must not be
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    18
     misrepresented as being the original software.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    19
  3. This notice may not be removed or altered from any source distribution.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    20
*/
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    21
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    22
#ifndef _SDL_dynapi_h
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    23
#define _SDL_dynapi_h
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    24
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    25
/* IMPORTANT:
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    26
   This is the master switch to disabling the dynamic API. We made it so you
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    27
   have to hand-edit an internal source file in SDL to turn it off; you
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    28
   can do it if you want it badly enough, but hopefully you won't want to.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    29
   You should understand the ramifications of turning this off: it makes it
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    30
   hard to update your SDL in the field, and impossible if you've statically
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    31
   linked SDL into your app. Understand that platforms change, and if we can't
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    32
   drop in an updated SDL, your application can definitely break some time
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    33
   in the future, even if it's fine today.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    34
   To be sure, as new system-level video and audio APIs are introduced, an
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    35
   updated SDL can transparently take advantage of them, but your program will
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    36
   not without this feature. Think hard before turning it off.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    37
*/
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    38
#ifdef SDL_DYNAMIC_API  /* Tried to force it on the command line? */
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    39
#error Nope, you have to edit this file to force this off.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    40
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    41
8121
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    42
#ifdef __APPLE__
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    43
#include "TargetConditionals.h"
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    44
#endif
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    45
10197
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    46
#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE  /* probably not useful on iOS. */
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    47
#define SDL_DYNAMIC_API 0
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    48
#elif defined(__native_client__) && __native_client__  /* probably not useful on NACL. */
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    49
#define SDL_DYNAMIC_API 0
10197
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    50
#elif defined(__EMSCRIPTEN__) && __EMSCRIPTEN__  /* probably not useful on Emscripten. */
8611
a762dfc67e1a Fixed various build and runtime errors when using WinRT with VS2012.
David Ludwig <dludwig@pobox.com>
parents: 8149
diff changeset
    51
#define SDL_DYNAMIC_API 0
10197
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    52
#elif defined(SDL_BUILDING_WINRT) && SDL_BUILDING_WINRT  /* probably not useful on WinRT, given current .dll loading restrictions */
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    53
#define SDL_DYNAMIC_API 0
623c40e8fd65 Fixed compile warnings about evaluating undefined identifiers.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 10066
diff changeset
    54
#elif defined(__PSP__) && __PSP__
10066
15b261fad7b9 PSP: Deactivated dynamic API.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 9998
diff changeset
    55
#define SDL_DYNAMIC_API 0
8640
89bab8249c74 Don't overwrite SDL_dynapi.h in checker-buildbot.sh.
Ryan C. Gordon <icculus@icculus.org>
parents: 8611
diff changeset
    56
#elif defined(__clang_analyzer__)
89bab8249c74 Don't overwrite SDL_dynapi.h in checker-buildbot.sh.
Ryan C. Gordon <icculus@icculus.org>
parents: 8611
diff changeset
    57
#define SDL_DYNAMIC_API 0  /* Turn off for static analysis, so reports are more clear. */
9442
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    58
#endif
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    59
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    60
/* everyone else. This is where we turn on the API if nothing forced it off. */
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    61
#ifndef SDL_DYNAMIC_API
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    62
#define SDL_DYNAMIC_API 1
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    63
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    64
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    65
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    66
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    67
/* vi: set ts=4 sw=4 expandtab: */