|
|
1.1 root 1: /*
2: SDL - Simple DirectMedia Layer
3: Copyright (C) 1997-2004 Sam Lantinga
4:
5: This library is free software; you can redistribute it and/or
6: modify it under the terms of the GNU Library General Public
7: License as published by the Free Software Foundation; either
8: version 2 of the License, or (at your option) any later version.
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
13: Library General Public License for more details.
14:
15: You should have received a copy of the GNU Library General Public
16: License along with this library; if not, write to the Free
17: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18:
19: Sam Lantinga
20: [email protected]
21: */
22:
23: /* This file sets things up for C dynamic library function definitions,
24: static inlined functions, and structures aligned at 4-byte alignment.
25: If you don't like ugly C preprocessor code, don't look at this file. :)
26: */
27:
28: /* This shouldn't be nested -- included it around code only. */
29: #ifdef _begin_code_h
30: #error Nested inclusion of begin_code.h
31: #endif
32: #define _begin_code_h
33:
34: /* Some compilers use a special export keyword */
35: #ifndef DECLSPEC
1.1.1.2 ! root 36: # if defined(__BEOS__)
1.1 root 37: # if defined(__GNUC__)
38: # define DECLSPEC __declspec(dllexport)
39: # else
40: # define DECLSPEC __declspec(export)
41: # endif
1.1.1.2 ! root 42: # elif defined(__WIN32__)
1.1 root 43: # ifdef __BORLANDC__
44: # ifdef BUILD_SDL
45: # define DECLSPEC
46: # else
1.1.1.2 ! root 47: # define DECLSPEC __declspec(dllimport)
1.1 root 48: # endif
49: # else
50: # define DECLSPEC __declspec(dllexport)
51: # endif
1.1.1.2 ! root 52: # elif defined(__OS2__)
! 53: # ifdef __WATCOMC__
! 54: # ifdef BUILD_SDL
! 55: # define DECLSPEC __declspec(dllexport)
! 56: # else
! 57: # define DECLSPEC
! 58: # endif
! 59: # else
! 60: # define DECLSPEC
! 61: # endif
1.1 root 62: # else
1.1.1.2 ! root 63: # if defined(__GNUC__) && __GNUC__ >= 4
! 64: # define DECLSPEC __attribute__ ((visibility("default")))
! 65: # else
! 66: # define DECLSPEC
! 67: # endif
1.1 root 68: # endif
69: #endif
70:
71: /* By default SDL uses the C calling convention */
72: #ifndef SDLCALL
1.1.1.2 ! root 73: #if defined(__WIN32__) && !defined(__GNUC__)
1.1 root 74: #define SDLCALL __cdecl
75: #else
1.1.1.2 ! root 76: #ifdef __OS2__
! 77: /* But on OS/2, we use the _System calling convention */
! 78: /* to be compatible with every compiler */
! 79: #define SDLCALL _System
! 80: #else
1.1 root 81: #define SDLCALL
82: #endif
1.1.1.2 ! root 83: #endif
1.1 root 84: #endif /* SDLCALL */
85:
86: #ifdef __SYMBIAN32__
1.1.1.2 ! root 87: #ifndef EKA2
1.1 root 88: #undef DECLSPEC
89: #define DECLSPEC
1.1.1.2 ! root 90: #elif !defined(__WINS__)
! 91: #undef DECLSPEC
! 92: #define DECLSPEC __declspec(dllexport)
! 93: #endif //EKA2
! 94: #endif //__SYMBIAN32__
1.1 root 95:
96: /* Force structure packing at 4 byte alignment.
97: This is necessary if the header is included in code which has structure
98: packing set to an alternate value, say for loading structures from disk.
99: The packing is reset to the previous value in close_code.h
100: */
101: #if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
102: #ifdef _MSC_VER
103: #pragma warning(disable: 4103)
104: #endif
105: #ifdef __BORLANDC__
106: #pragma nopackwarning
107: #endif
108: #pragma pack(push,4)
1.1.1.2 ! root 109: #elif (defined(__MWERKS__) && defined(__MACOS__))
1.1 root 110: #pragma options align=mac68k4byte
111: #pragma enumsalwaysint on
112: #endif /* Compiler needs structure packing set */
113:
114: /* Set up compiler-specific options for inlining functions */
115: #ifndef SDL_INLINE_OKAY
116: #ifdef __GNUC__
117: #define SDL_INLINE_OKAY
118: #else
119: /* Add any special compiler-specific cases here */
120: #if defined(_MSC_VER) || defined(__BORLANDC__) || \
121: defined(__DMC__) || defined(__SC__) || \
122: defined(__WATCOMC__) || defined(__LCC__) || \
1.1.1.2 ! root 123: defined(__DECC) || defined(__EABI__)
1.1 root 124: #ifndef __inline__
125: #define __inline__ __inline
126: #endif
127: #define SDL_INLINE_OKAY
128: #else
129: #if !defined(__MRC__) && !defined(_SGI_SOURCE)
1.1.1.2 ! root 130: #ifndef __inline__
1.1 root 131: #define __inline__ inline
1.1.1.2 ! root 132: #endif
1.1 root 133: #define SDL_INLINE_OKAY
134: #endif /* Not a funky compiler */
135: #endif /* Visual C++ */
136: #endif /* GNU C */
137: #endif /* SDL_INLINE_OKAY */
138:
139: /* If inlining isn't supported, remove "__inline__", turning static
140: inlined functions into static functions (resulting in code bloat
141: in all files which include the offending header files)
142: */
143: #ifndef SDL_INLINE_OKAY
144: #define __inline__
145: #endif
146:
147: /* Apparently this is needed by several Windows compilers */
148: #if !defined(__MACH__)
149: #ifndef NULL
150: #ifdef __cplusplus
151: #define NULL 0
152: #else
153: #define NULL ((void *)0)
154: #endif
155: #endif /* NULL */
1.1.1.2 ! root 156: #endif /* ! Mac OS X - breaks precompiled headers */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.