include/begin_code.h
author Sam Lantinga <slouken@libsdl.org>
Mon, 21 Sep 2009 09:21:00 +0000
changeset 3292 245a7d79577c
parent 3269 a67a961e2171
child 3407 d3baf5ac4e37
permissions -rw-r--r--
Fixed bug #615 Scott McCreary 2008-08-21 10:48:14 PDT This patch adds support for Haiku. http://ports.haiku-files.org/browser/haikuports/trunk/media-libs/libsdl/SDL-1.2.13-haiku.diff Haiku is an open-source recreation of BeOS. It has better POSIX compliance than beOS did, and other improved features, which in some cases causes us to have to "undo" previous BeOS workarounds. Here's our port log entry for it, showing the steps to force the changes into configure and Makefile: http://ports.haiku-files.org/wiki/media-libs/libsdl/1.2.13/1 Note that this was only tried on 1.2.13 stable so far. Haiku is using a newer config.guess / config.sub that doesn't yet seem to be in the released libtool, so we are having to copy it in for now. http://haiku-files.org/files/optional-packages/
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     1
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2123
diff changeset
     3
    Copyright (C) 1997-2009 Sam Lantinga
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     4
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     6
    modify it under the terms of the GNU Library General Public
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     8
    version 2 of the License, or (at your option) any later version.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     9
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    13
    Library General Public License for more details.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    14
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    15
    You should have received a copy of the GNU Library General Public
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    16
    License along with this library; if not, write to the Free
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    18
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    21
*/
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    22
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    23
/* This file sets things up for C dynamic library function definitions,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    24
   static inlined functions, and structures aligned at 4-byte alignment.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    25
   If you don't like ugly C preprocessor code, don't look at this file. :)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    26
*/
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    27
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    28
/* This shouldn't be nested -- included it around code only. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    29
#ifdef _begin_code_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    30
#error Nested inclusion of begin_code.h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    31
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    32
#define _begin_code_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    33
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    34
/* Some compilers use a special export keyword */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    35
#ifndef DECLSPEC
3292
245a7d79577c Fixed bug #615
Sam Lantinga <slouken@libsdl.org>
parents: 3269
diff changeset
    36
# if defined(__BEOS__) || defined(__HAIKU__)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    37
#  if defined(__GNUC__)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    38
#   define DECLSPEC	__declspec(dllexport)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    39
#  else
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    40
#   define DECLSPEC	__declspec(export)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    41
#  endif
1574
0fd72308659e Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents: 1573
diff changeset
    42
# elif defined(__WIN32__)
274
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    43
#  ifdef __BORLANDC__
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    44
#   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
    45
#    define DECLSPEC
274
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    46
#   else
1574
0fd72308659e Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents: 1573
diff changeset
    47
#    define DECLSPEC	__declspec(dllimport)
274
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    48
#   endif
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    49
#  else
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    50
#   define DECLSPEC	__declspec(dllexport)
051b991765ba David Snopek added Borland compiler support
Sam Lantinga <slouken@libsdl.org>
parents: 251
diff changeset
    51
#  endif
1190
173c063d4f55 OS/2 port!
Ryan C. Gordon <icculus@icculus.org>
parents: 1025
diff changeset
    52
# else
1595
4aa7df2476e7 Only use the visibility attribute in gcc 4.0 or newer
Sam Lantinga <slouken@libsdl.org>
parents: 1574
diff changeset
    53
#  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
    54
#   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
    55
#  else
0fd72308659e Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents: 1573
diff changeset
    56
#   define DECLSPEC
0fd72308659e Default to use the visibility attribute, on gcc (is this okay?)
Sam Lantinga <slouken@libsdl.org>
parents: 1573
diff changeset
    57
#  endif
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    58
# endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    59
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    60
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    61
/* 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
    62
#ifndef SDLCALL
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1190
diff changeset
    63
#if defined(__WIN32__) && !defined(__GNUC__)
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    64
#define SDLCALL __cdecl
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    65
#else
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    66
#define SDLCALL
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    67
#endif
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    68
#endif /* SDLCALL */
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
    69
173
83018110dce8 Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents: 85
diff changeset
    70
/* 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
    71
#ifdef __SYMBIAN32__
173
83018110dce8 Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents: 85
diff changeset
    72
#undef DECLSPEC
83018110dce8 Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents: 85
diff changeset
    73
#define DECLSPEC
187
94645dc9479b *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 173
diff changeset
    74
#endif /* __SYMBIAN32__ */
173
83018110dce8 Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents: 85
diff changeset
    75
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    76
/* Force structure packing at 4 byte alignment.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    77
   This is necessary if the header is included in code which has structure
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    78
   packing set to an alternate value, say for loading structures from disk.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    79
   The packing is reset to the previous value in close_code.h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    80
 */
288
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
    81
#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    82
#ifdef _MSC_VER
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    83
#pragma warning(disable: 4103)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    84
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    85
#ifdef __BORLANDC__
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    86
#pragma nopackwarning
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    87
#endif
195
3669d47b07d3 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 189
diff changeset
    88
#pragma pack(push,4)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    89
#endif /* Compiler needs structure packing set */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    90
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    91
/* Set up compiler-specific options for inlining functions */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    92
#ifndef SDL_INLINE_OKAY
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    93
#ifdef __GNUC__
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    94
#define SDL_INLINE_OKAY
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    95
#else
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    96
/* 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
    97
#if defined(_MSC_VER) || defined(__BORLANDC__) || \
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
    98
    defined(__DMC__) || defined(__SC__) || \
1019
e3b3130f3af8 Date: Fri, 31 Dec 2004 04:14:09 +0900
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
    99
    defined(__WATCOMC__) || defined(__LCC__) || \
e3b3130f3af8 Date: Fri, 31 Dec 2004 04:14:09 +0900
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
   100
    defined(__DECC)
288
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   101
#ifndef __inline__
85
60c7960354e0 Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents: 0
diff changeset
   102
#define __inline__	__inline
288
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   103
#endif
85
60c7960354e0 Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents: 0
diff changeset
   104
#define SDL_INLINE_OKAY
60c7960354e0 Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents: 0
diff changeset
   105
#else
60c7960354e0 Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents: 0
diff changeset
   106
#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
   107
#ifndef __inline__
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   108
#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
   109
#endif
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   110
#define SDL_INLINE_OKAY
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   111
#endif /* Not a funky compiler */
85
60c7960354e0 Added support for Visual C++ inline keyword
Sam Lantinga <slouken@lokigames.com>
parents: 0
diff changeset
   112
#endif /* Visual C++ */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   113
#endif /* GNU C */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   114
#endif /* SDL_INLINE_OKAY */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   115
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   116
/* If inlining isn't supported, remove "__inline__", turning static
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   117
   inlined functions into static functions (resulting in code bloat
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   118
   in all files which include the offending header files)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   119
*/
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   120
#ifndef SDL_INLINE_OKAY
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   121
#define __inline__
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   122
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   123
288
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   124
/* 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
   125
#if !defined(__MACH__)
288
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   126
#ifndef NULL
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   127
#ifdef __cplusplus
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   128
#define NULL 0
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   129
#else
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   130
#define NULL ((void *)0)
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   131
#endif
2f5a6062db86 Updated for Watcom C++ and LCC compilers
Sam Lantinga <slouken@libsdl.org>
parents: 274
diff changeset
   132
#endif /* NULL */
1621
f12379c41042 Fixes bug #195:
Sam Lantinga <slouken@libsdl.org>
parents: 1595
diff changeset
   133
#endif /* ! Mac OS X - breaks precompiled headers */