Mercurial > sdl-ios-xcode
annotate include/begin_code.h @ 5275:7aba0406c273
Frank Zago to sdl
The following patch fixes some of the bitrot for the Nintendo DS port.
The support is still basic at the moment, but it allows to run the "general"
test under the current head of tree (parent: 5269:11bd1585efb5 tip).
Most of the patch is mine, but I integrated a couple changes that John
Magnotti posted on Feb 1st.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 12 Feb 2011 11:36:56 -0800 |
parents | b530ef003506 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
5267 | 3 Copyright (C) 1997-2011 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
3697 | 6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
3697 | 8 version 2.1 of the License, or (at your option) any later version. |
0 | 9 |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
3697 | 13 Lesser General Public License for more details. |
0 | 14 |
3697 | 15 You should have received a copy of the GNU Lesser General Public |
16 License along with this library; if not, write to the Free Software | |
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
0 | 18 |
19 Sam Lantinga | |
251
b8688cfdc232
Updated the headers with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
195
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
22 | |
3407
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
23 /** |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
24 * \file begin_code.h |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
25 * |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
26 * This file sets things up for C dynamic library function definitions, |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
27 * static inlined functions, and structures aligned at 4-byte alignment. |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
28 * If you don't like ugly C preprocessor code, don't look at this file. :) |
d3baf5ac4e37
Partial fix for bug #859
Sam Lantinga <slouken@libsdl.org>
parents:
3292
diff
changeset
|
29 */ |
0 | 30 |
31 /* This shouldn't be nested -- included it around code only. */ | |
32 #ifdef _begin_code_h | |
33 #error Nested inclusion of begin_code.h | |
34 #endif | |
35 #define _begin_code_h | |
36 | |
37 /* Some compilers use a special export keyword */ | |
38 #ifndef DECLSPEC | |
3292 | 39 # if defined(__BEOS__) || defined(__HAIKU__) |
0 | 40 # if defined(__GNUC__) |
41 # define DECLSPEC __declspec(dllexport) | |
42 # else | |
43 # define DECLSPEC __declspec(export) | |
44 # endif | |
5088
c2539ff054c8
Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents:
5062
diff
changeset
|
45 # elif defined(__WIN32__) |
274
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
46 # ifdef __BORLANDC__ |
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
47 # ifdef BUILD_SDL |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1621
diff
changeset
|
48 # define DECLSPEC |
274
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
49 # else |
1574
0fd72308659e
Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents:
1573
diff
changeset
|
50 # define DECLSPEC __declspec(dllimport) |
274
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
51 # endif |
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
52 # else |
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
53 # define DECLSPEC __declspec(dllexport) |
051b991765ba
David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents:
251
diff
changeset
|
54 # endif |
1190 | 55 # else |
1595
4aa7df2476e7
Only use the visibility attribute in gcc 4.0 or newer
Sam Lantinga <slouken@libsdl.org>
parents:
1574
diff
changeset
|
56 # if defined(__GNUC__) && __GNUC__ >= 4 |
1574
0fd72308659e
Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents:
1573
diff
changeset
|
57 # define DECLSPEC __attribute__ ((visibility("default"))) |
0fd72308659e
Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents:
1573
diff
changeset
|
58 # else |
0fd72308659e
Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents:
1573
diff
changeset
|
59 # define DECLSPEC |
0fd72308659e
Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents:
1573
diff
changeset
|
60 # endif |
0 | 61 # endif |
62 #endif | |
63 | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
64 /* By default SDL uses the C calling convention */ |
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
65 #ifndef SDLCALL |
5088
c2539ff054c8
Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents:
5062
diff
changeset
|
66 #if defined(__WIN32__) && !defined(__GNUC__) |
3620
838fcbc09c68
The OS/2 support has been removed, so we don't need this now.
Sam Lantinga <slouken@libsdl.org>
parents:
3618
diff
changeset
|
67 #define SDLCALL __cdecl |
838fcbc09c68
The OS/2 support has been removed, so we don't need this now.
Sam Lantinga <slouken@libsdl.org>
parents:
3618
diff
changeset
|
68 #else |
838fcbc09c68
The OS/2 support has been removed, so we don't need this now.
Sam Lantinga <slouken@libsdl.org>
parents:
3618
diff
changeset
|
69 #define SDLCALL |
838fcbc09c68
The OS/2 support has been removed, so we don't need this now.
Sam Lantinga <slouken@libsdl.org>
parents:
3618
diff
changeset
|
70 #endif |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
71 #endif /* SDLCALL */ |
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
72 |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
85
diff
changeset
|
73 /* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1621
diff
changeset
|
74 #ifdef __SYMBIAN32__ |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
85
diff
changeset
|
75 #undef DECLSPEC |
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
85
diff
changeset
|
76 #define DECLSPEC |
187
94645dc9479b
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
173
diff
changeset
|
77 #endif /* __SYMBIAN32__ */ |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
85
diff
changeset
|
78 |
0 | 79 /* Force structure packing at 4 byte alignment. |
80 This is necessary if the header is included in code which has structure | |
81 packing set to an alternate value, say for loading structures from disk. | |
82 The packing is reset to the previous value in close_code.h | |
83 */ | |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
84 #if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) |
0 | 85 #ifdef _MSC_VER |
86 #pragma warning(disable: 4103) | |
87 #endif | |
88 #ifdef __BORLANDC__ | |
89 #pragma nopackwarning | |
90 #endif | |
195
3669d47b07d3
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
189
diff
changeset
|
91 #pragma pack(push,4) |
0 | 92 #endif /* Compiler needs structure packing set */ |
93 | |
94 /* Set up compiler-specific options for inlining functions */ | |
95 #ifndef SDL_INLINE_OKAY | |
96 #ifdef __GNUC__ | |
97 #define SDL_INLINE_OKAY | |
98 #else | |
99 /* Add any special compiler-specific cases here */ | |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
100 #if defined(_MSC_VER) || defined(__BORLANDC__) || \ |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
101 defined(__DMC__) || defined(__SC__) || \ |
1019
e3b3130f3af8
Date: Fri, 31 Dec 2004 04:14:09 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
102 defined(__WATCOMC__) || defined(__LCC__) || \ |
e3b3130f3af8
Date: Fri, 31 Dec 2004 04:14:09 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
103 defined(__DECC) |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
104 #ifndef __inline__ |
85
60c7960354e0
Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
105 #define __inline__ __inline |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
106 #endif |
85
60c7960354e0
Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
107 #define SDL_INLINE_OKAY |
60c7960354e0
Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
108 #else |
60c7960354e0
Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
109 #if !defined(__MRC__) && !defined(_SGI_SOURCE) |
2123
9a48d1a6fbec
Merged r3075:3076 from branches/SDL-1.2: Careful with __inline__ #define.
Ryan C. Gordon <icculus@icculus.org>
parents:
1978
diff
changeset
|
110 #ifndef __inline__ |
0 | 111 #define __inline__ inline |
2123
9a48d1a6fbec
Merged r3075:3076 from branches/SDL-1.2: Careful with __inline__ #define.
Ryan C. Gordon <icculus@icculus.org>
parents:
1978
diff
changeset
|
112 #endif |
0 | 113 #define SDL_INLINE_OKAY |
114 #endif /* Not a funky compiler */ | |
85
60c7960354e0
Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
115 #endif /* Visual C++ */ |
0 | 116 #endif /* GNU C */ |
117 #endif /* SDL_INLINE_OKAY */ | |
118 | |
119 /* If inlining isn't supported, remove "__inline__", turning static | |
120 inlined functions into static functions (resulting in code bloat | |
121 in all files which include the offending header files) | |
122 */ | |
123 #ifndef SDL_INLINE_OKAY | |
124 #define __inline__ | |
125 #endif | |
126 | |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
127 /* Apparently this is needed by several Windows compilers */ |
346
a18ea34d9efe
Fixed precompiled headers on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents:
337
diff
changeset
|
128 #if !defined(__MACH__) |
288
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
129 #ifndef NULL |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
130 #ifdef __cplusplus |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
131 #define NULL 0 |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
132 #else |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
133 #define NULL ((void *)0) |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
134 #endif |
2f5a6062db86
Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents:
274
diff
changeset
|
135 #endif /* NULL */ |
1621 | 136 #endif /* ! Mac OS X - breaks precompiled headers */ |