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/
slouken@0
     1
/*
slouken@0
     2
    SDL - Simple DirectMedia Layer
slouken@2859
     3
    Copyright (C) 1997-2009 Sam Lantinga
slouken@0
     4
slouken@0
     5
    This library is free software; you can redistribute it and/or
slouken@0
     6
    modify it under the terms of the GNU Library General Public
slouken@0
     7
    License as published by the Free Software Foundation; either
slouken@0
     8
    version 2 of the License, or (at your option) any later version.
slouken@0
     9
slouken@0
    10
    This library is distributed in the hope that it will be useful,
slouken@0
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
slouken@0
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slouken@0
    13
    Library General Public License for more details.
slouken@0
    14
slouken@0
    15
    You should have received a copy of the GNU Library General Public
slouken@0
    16
    License along with this library; if not, write to the Free
slouken@0
    17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
slouken@0
    18
slouken@0
    19
    Sam Lantinga
slouken@251
    20
    slouken@libsdl.org
slouken@0
    21
*/
slouken@0
    22
slouken@0
    23
/* This file sets things up for C dynamic library function definitions,
slouken@0
    24
   static inlined functions, and structures aligned at 4-byte alignment.
slouken@0
    25
   If you don't like ugly C preprocessor code, don't look at this file. :)
slouken@0
    26
*/
slouken@0
    27
slouken@0
    28
/* This shouldn't be nested -- included it around code only. */
slouken@0
    29
#ifdef _begin_code_h
slouken@0
    30
#error Nested inclusion of begin_code.h
slouken@0
    31
#endif
slouken@0
    32
#define _begin_code_h
slouken@0
    33
slouken@0
    34
/* Some compilers use a special export keyword */
slouken@0
    35
#ifndef DECLSPEC
slouken@3292
    36
# if defined(__BEOS__) || defined(__HAIKU__)
slouken@0
    37
#  if defined(__GNUC__)
slouken@0
    38
#   define DECLSPEC	__declspec(dllexport)
slouken@0
    39
#  else
slouken@0
    40
#   define DECLSPEC	__declspec(export)
slouken@0
    41
#  endif
slouken@1574
    42
# elif defined(__WIN32__)
slouken@274
    43
#  ifdef __BORLANDC__
slouken@274
    44
#   ifdef BUILD_SDL
slouken@1895
    45
#    define DECLSPEC
slouken@274
    46
#   else
slouken@1574
    47
#    define DECLSPEC	__declspec(dllimport)
slouken@274
    48
#   endif
slouken@274
    49
#  else
slouken@274
    50
#   define DECLSPEC	__declspec(dllexport)
slouken@274
    51
#  endif
icculus@1190
    52
# else
slouken@1595
    53
#  if defined(__GNUC__) && __GNUC__ >= 4
slouken@1574
    54
#   define DECLSPEC	__attribute__ ((visibility("default")))
slouken@1574
    55
#  else
slouken@1574
    56
#   define DECLSPEC
slouken@1574
    57
#  endif
slouken@0
    58
# endif
slouken@0
    59
#endif
slouken@0
    60
slouken@337
    61
/* By default SDL uses the C calling convention */
slouken@337
    62
#ifndef SDLCALL
slouken@1402
    63
#if defined(__WIN32__) && !defined(__GNUC__)
slouken@337
    64
#define SDLCALL __cdecl
slouken@337
    65
#else
slouken@337
    66
#define SDLCALL
slouken@337
    67
#endif
slouken@337
    68
#endif /* SDLCALL */
slouken@337
    69
slouken@173
    70
/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
slouken@1895
    71
#ifdef __SYMBIAN32__
slouken@173
    72
#undef DECLSPEC
slouken@173
    73
#define DECLSPEC
slouken@187
    74
#endif /* __SYMBIAN32__ */
slouken@173
    75
slouken@0
    76
/* Force structure packing at 4 byte alignment.
slouken@0
    77
   This is necessary if the header is included in code which has structure
slouken@0
    78
   packing set to an alternate value, say for loading structures from disk.
slouken@0
    79
   The packing is reset to the previous value in close_code.h
slouken@0
    80
 */
slouken@288
    81
#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
slouken@0
    82
#ifdef _MSC_VER
slouken@0
    83
#pragma warning(disable: 4103)
slouken@0
    84
#endif
slouken@0
    85
#ifdef __BORLANDC__
slouken@0
    86
#pragma nopackwarning
slouken@0
    87
#endif
slouken@195
    88
#pragma pack(push,4)
slouken@0
    89
#endif /* Compiler needs structure packing set */
slouken@0
    90
slouken@0
    91
/* Set up compiler-specific options for inlining functions */
slouken@0
    92
#ifndef SDL_INLINE_OKAY
slouken@0
    93
#ifdef __GNUC__
slouken@0
    94
#define SDL_INLINE_OKAY
slouken@0
    95
#else
slouken@0
    96
/* Add any special compiler-specific cases here */
slouken@288
    97
#if defined(_MSC_VER) || defined(__BORLANDC__) || \
slouken@288
    98
    defined(__DMC__) || defined(__SC__) || \
slouken@1019
    99
    defined(__WATCOMC__) || defined(__LCC__) || \
slouken@1019
   100
    defined(__DECC)
slouken@288
   101
#ifndef __inline__
slouken@85
   102
#define __inline__	__inline
slouken@288
   103
#endif
slouken@85
   104
#define SDL_INLINE_OKAY
slouken@85
   105
#else
slouken@85
   106
#if !defined(__MRC__) && !defined(_SGI_SOURCE)
icculus@2123
   107
#ifndef __inline__
slouken@0
   108
#define __inline__ inline
icculus@2123
   109
#endif
slouken@0
   110
#define SDL_INLINE_OKAY
slouken@0
   111
#endif /* Not a funky compiler */
slouken@85
   112
#endif /* Visual C++ */
slouken@0
   113
#endif /* GNU C */
slouken@0
   114
#endif /* SDL_INLINE_OKAY */
slouken@0
   115
slouken@0
   116
/* If inlining isn't supported, remove "__inline__", turning static
slouken@0
   117
   inlined functions into static functions (resulting in code bloat
slouken@0
   118
   in all files which include the offending header files)
slouken@0
   119
*/
slouken@0
   120
#ifndef SDL_INLINE_OKAY
slouken@0
   121
#define __inline__
slouken@0
   122
#endif
slouken@0
   123
slouken@288
   124
/* Apparently this is needed by several Windows compilers */
slouken@346
   125
#if !defined(__MACH__)
slouken@288
   126
#ifndef NULL
slouken@288
   127
#ifdef __cplusplus
slouken@288
   128
#define NULL 0
slouken@288
   129
#else
slouken@288
   130
#define NULL ((void *)0)
slouken@288
   131
#endif
slouken@288
   132
#endif /* NULL */
slouken@1621
   133
#endif /* ! Mac OS X - breaks precompiled headers */