Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem2/src/OrxonoxConfig.h.in @ 2633

Last change on this file since 2633 was 2619, checked in by rgrieder, 16 years ago

Removed src/util/OrxonoxPlatform.h and added src/OrxonoxConfig.h.in that gets configured by CMake.

  • Property svn:eol-style set to native
File size: 8.7 KB
RevLine 
[682]1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
[1505]3 *                    > www.orxonox.net <
[682]4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
[1293]23 *      ...
[682]24 *   Co-authors:
[1032]25 *      Reto Grieder
[682]26 *
[1755]27 *   Original code: OgrePlatform.h, licensed under the LGPL. The code
28 *   has changed quite a bit however.
29 *
[682]30 */
[1505]31
[682]32/**
[1032]33 @file
[1755]34 @brief
35    Various constants for compiler, architecture and platform.
[682]36 */
[1505]37
38#ifndef _OrxonoxPlatform_H__
39#define _OrxonoxPlatform_H__
40
[1755]41/* Initial platform/compiler-related stuff to set. */
42
[1505]43#define ORXONOX_PLATFORM_WIN32 1
44#define ORXONOX_PLATFORM_LINUX 2
45#define ORXONOX_PLATFORM_APPLE 3
46
47#define ORXONOX_COMPILER_MSVC 1
48#define ORXONOX_COMPILER_GNUC 2
49#define ORXONOX_COMPILER_BORL 3
50
51#define ORXONOX_ENDIAN_LITTLE 1
52#define ORXONOX_ENDIAN_BIG 2
53
54#define ORXONOX_ARCHITECTURE_32 1
55#define ORXONOX_ARCHITECTURE_64 2
56
[1755]57
58/* Finds the compiler type and version. */
59
[1505]60#if defined( _MSC_VER )
61#  define ORXONOX_COMPILER ORXONOX_COMPILER_MSVC
62#  define ORXONOX_COMP_VER _MSC_VER
63
64#elif defined( __GNUC__ )
65#  define ORXONOX_COMPILER ORXONOX_COMPILER_GNUC
66#  define ORXONOX_COMP_VER (((__GNUC__)*100) + \
67        (__GNUC_MINOR__*10) + \
68        __GNUC_PATCHLEVEL__)
69
70#elif defined( __BORLANDC__ )
71#  define ORXONOX_COMPILER ORXONOX_COMPILER_BORL
72#  define ORXONOX_COMP_VER __BCPLUSPLUS__
73
74#else
75#  pragma error "No known compiler. Abort! Abort!"
76
77#endif
78
[1755]79
[1505]80/* See if we can use __forceinline or if we need to use __inline instead */
81#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
82#  if ORXONOX_COMP_VER >= 1200
83#    define FORCEINLINE __forceinline
84#  endif
85#elif defined(__MINGW32__)
86#  if !defined(FORCEINLINE)
87#    define FORCEINLINE __inline
88#  endif
89#else
90#  define FORCEINLINE __inline
91#endif
92
93/* Finds the current platform */
94#if defined( __WIN32__ ) || defined( _WIN32 )
95#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_WIN32
96#elif defined( __APPLE_CC__)
97#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_APPLE
98#else
99#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_LINUX
100#endif
101
[1755]102/* Find the arch type */
[1505]103#if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__)
104#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_64
105#else
106#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_32
107#endif
108
[1755]109/* Try to define function information */
110#ifndef __FUNCTIONNAME__
111#  if ORXONOX_COMPILER == ORXONOX_COMPILER_BORL
112#    define __FUNCTIONNAME__ __FUNC__
113#  elif ORXONOX_COMPILER == ORXONOX_COMPILER_GNUC
114#    define __FUNCTIONNAME__ __PRETTY_FUNCTION__
115#  elif ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
116#    define __FUNCTIONNAME__ __FUNCTION__
[1505]117#  else
[1755]118#    define __FUNCTIONNAME__
[1505]119#  endif
[1755]120#endif
[1505]121
[1755]122/* Determine whether we're building in debug mode */
123#if defined(_DEBUG) || defined(DEBUG)
124#  define ORXONOX_DEBUG_MODE 1
125#else
126#  define ORXONOX_DEBUG_MODE 0
127#endif
128
129/* Define configurable floating point type */
130namespace orxonox
131{
132#ifdef ORXONOX_DOUBLE_PRECISION
133    typedef double Real;
134#else
135    typedef float  Real;
136#endif
137}
138
[2619]139/* Set whether we must suffix "ceguilua/" for the CEGUILua.h include */
140#cmakedefine CEGUILUA_USE_INTERNAL_LIBRARY
141
[1921]142//-----------------------------------------------------------------------
143// Version Information
144//-----------------------------------------------------------------------
[1755]145
[1921]146#define ORXONOX_VERSION_MAJOR 0
147#define ORXONOX_VERSION_MINOR 1
148#define ORXONOX_VERSION_PATCH 2
149#define ORXONOX_VERSION_SUFFIX ""
150#define ORXONOX_VERSION_NAME "Bellatrix"
[1755]151
[1921]152#define ORXONOX_VERSION ((ORXONOX_VERSION_MAJOR << 16) | (ORXONOX_VERSION_MINOR << 8) | ORXONOX_VERSION_PATCH)
153
154
[1755]155/*---------------------------------
156 * Windows Settings
157 *-------------------------------*/
158#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
159/* Disable unicode support on MingW at the moment, poorly supported in stdlibc++
160 * STLPORT fixes this though so allow if found
161 * MinGW C++ Toolkit supports unicode and sets the define __MINGW32_TOOLKIT_UNICODE__ in _mingw.h */
[1505]162#  if defined( __MINGW32__ ) && !defined(_STLPORT_VERSION)
163#    include<_mingw.h>
164#    if defined(__MINGW32_TOOLBOX_UNICODE__)
165#      define ORXONOX_UNICODE_SUPPORT 1
166#    else
167#      define ORXONOX_UNICODE_SUPPORT 0
168#    endif
169#  else
170#    define ORXONOX_UNICODE_SUPPORT 1
171#  endif
172#endif /* Platform Win32 */
173
[1755]174
175/*---------------------------------
176 * Linux/Apple Settings
177 *-------------------------------*/
[1505]178#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_LINUX || ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
179
[1755]180/* A quick define to overcome different names for the same function */
[1505]181#  define stricmp strcasecmp
182
[1755]183/* TODO: Check what this actually is and whether we need it or not */
184#if 0
[1505]185#  if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
186#    define ORXONOX_PLATFORM_LIB "OrxonoxPlatform.bundle"
187#  else
[1755]188/* ORXONOX_PLATFORM_LINUX */
[1505]189#    define ORXONOX_PLATFORM_LIB "libOrxonoxPlatform.so"
190#  endif
[1755]191#endif
[1505]192
[1755]193/* Always enable unicode support for the moment
194 * Perhaps disable in old versions of gcc if necessary */
[1505]195#  define ORXONOX_UNICODE_SUPPORT 1
196
197#endif /* Patform Linux/Apple */
198
[1755]199
200/*---------------------------------
201 * Apple Settings
202 *-------------------------------*/
203/* For apple, we always have a custom config.h file */
[1505]204#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
205#  include "config.h"
206#endif
207
208
[1755]209/*---------------------------------
210 * Visual Studio Settings
211 *-------------------------------*/
[1505]212#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
[1755]213/* Turn off warnings generated by long std templates
214 * This warns about truncation to 255 characters in debug/browse info */
215/*#   pragma warning (disable : 4786)*/
[1505]216
[1755]217/* Turn off warnings generated by long std templates
218 * This warns about truncation to 255 characters in debug/browse info */
219/*#   pragma warning (disable : 4503)*/
[1505]220
[1755]221/* disable: conversion from 'double' to 'float', possible loss of data
222 * disable: conversion from 'ogg_int64_t' to 'long', possible loss of data
223 * This has been dealt with in base_properties of the solution since the
224 * warning primarily occurs in library header files (which are mostly
225 * included before OrxonoxPlatform.h is) */
226/*#   pragma warning (disable : 4244)*/
[1505]227
[1755]228/* disable: "conversion from 'size_t' to 'unsigned int', possible loss of data */
229/*#   pragma warning (disable : 4267)*/
[1505]230
[1755]231/* disable: "truncation from 'double' to 'float' */
232/*#   pragma warning (disable : 4305)*/
[1505]233
[1755]234/* set to level 4: "<type> needs to have dll-interface to be used by clients'
235 * Happens on STL member variables which are not public therefore is ok */
[1505]236#   pragma warning (disable : 4251)
237
[1755]238/* disable: 'MultiTypeString' : multiple assignment operators specified
239 * Used in MultiType and works fine so far */
240/*#   pragma warning (disable : 4522)*/
[1505]241
[1755]242/* disable: "non dll-interface class used as base for dll-interface class"
243 * Happens when deriving from Singleton because bug in compiler ignores
244 * template export */
245/*#   pragma warning (disable : 4275)*/
[1505]246
[1755]247/* disable: "C++ Exception Specification ignored"
248 * This is because MSVC 6 did not implement all the C++ exception
249 * specifications in the ANSI C++ draft. */
250/*#   pragma warning( disable : 4290 )*/
[1505]251
[1755]252/* disable: "no suitable definition provided for explicit template
253 * instantiation request" Occurs in VC7 for no justifiable reason on all
254 * #includes of Singleton */
255/*#   pragma warning( disable: 4661)*/
[1505]256
[1755]257/* disable: deprecation warnings when using CRT calls in VC8
258 * These show up on all C runtime lib code in VC8, disable since they clutter
259 * the warnings with things we may not be able to do anything about (e.g.
260 * generated code from nvparse etc). I doubt very much that these calls
261 * will ever be actually removed from VC anyway, it would break too much code. */
262/*# pragma warning( disable: 4996)*/
[1505]263
[1755]264/* disable: "conditional expression constant", always occurs on
265 * ORXONOX_MUTEX_CONDITIONAL when no threading enabled */
266/*#   pragma warning (disable : 201)*/
[1505]267
268
[1755]269/* Define the english written operators like and, or, xor */
[1505]270#include <iso646.h>
271
[1755]272/* include visual leak detector to search for memory leaks */
273/* #include <vld.h> */
274
[1505]275#endif /* ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC */
276
277#endif /* _OrxonoxPlatform_H__ */
Note: See TracBrowser for help on using the repository browser.