Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/OrxonoxConfig.h.in @ 10328

Last change on this file since 10328 was 9675, checked in by landauf, 11 years ago

merged branch 'libs' back to trunk. orxonox now compiles and runs with ogre 1.8 and it compiles (but doesn't run) with cegui 0.8

  • Property svn:eol-style set to native
File size: 7.4 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
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:
23 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 *   Original code: OgrePlatform.h, licensed under the LGPL. The code
28 *   has changed almost completely though.
29 *
30 *   Caution: Do not configure this file CMake configuration (Debug, Release, etc.)
31 *            dependent! XCode and Visual Studio have the same file for all.
32 *
33 */
34
35/**
36@file
37@brief
38    Various constants for compiler, architecture and platform.
39@remarks
40    @GENERATED_FILE_COMMENT@
41*/
42
43#ifndef _OrxonoxConfig_H__
44#define _OrxonoxConfig_H__
45
46/*---------------------------------
47 * Platform and compiler related options
48 *-------------------------------*/
49#cmakedefine ORXONOX_PLATFORM_WINDOWS
50#cmakedefine ORXONOX_PLATFORM_LINUX
51#cmakedefine ORXONOX_PLATFORM_APPLE
52#cmakedefine ORXONOX_PLATFORM_UNIX /* Apple and Linux */
53
54// Determine compiler and set ORXONOX_COMP_VER
55#if defined( _MSC_VER )
56#  define ORXONOX_COMPILER_MSVC
57#  define ORXONOX_COMP_VER _MSC_VER
58
59#elif defined( __GNUC__ )
60#  define ORXONOX_COMPILER_GCC
61#  define ORXONOX_COMP_VER (((__GNUC__)*100) + \
62        (__GNUC_MINOR__*10) + \
63        __GNUC_PATCHLEVEL__)
64#  if defined(__MINGW32__)
65#    define ORXONOX_COMPILER_MINGW
66#  endif
67
68#elif defined( __BORLANDC__ )
69#  define ORXONOX_COMPILER_BORLAND
70#  define ORXONOX_COMP_VER __BCPLUSPLUS__
71
72#else
73#  pragma error "No known compiler. Abort!"
74
75#endif
76
77// Endianness
78#cmakedefine ORXONOX_BIG_ENDIAN
79#cmakedefine ORXONOX_LITTLE_ENDIAN
80
81// Architecture
82#if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__)
83#   define ORXONOX_ARCH_64
84#else
85#   define ORXONOX_ARCH_32
86#endif
87
88// See if we can use __forceinline or if we need to use __inline instead
89#cmakedefine HAVE_FORCEINLINE
90#ifndef ORX_FORCEINLINE
91#  ifdef HAVE_FORCEINLINE
92#    define ORX_FORCEINLINE __forceinline
93#  else
94#    define ORX_FORCEINLINE __inline
95#  endif
96#endif
97
98// Try to define function information
99#ifndef __FUNCTIONNAME__
100#  ifdef ORXONOX_COMPILER_BORLAND
101#    define __FUNCTIONNAME__ __FUNC__
102#  elif defined(ORXONOX_COMPILER_GCC)
103#    define __FUNCTIONNAME__ __PRETTY_FUNCTION__
104#  elif defined(ORXONOX_COMPILER_MSVC)
105#    define __FUNCTIONNAME__ __FUNCTION__
106#  else
107#    define __FUNCTIONNAME__
108#  endif
109#endif
110
111// Declare a function deprecated
112#ifndef __DEPRECATED__
113#  if defined(ORXONOX_COMPILER_GCC)
114#    define __DEPRECATED__(function) function __attribute__ ((deprecated))
115#  elif defined(ORXONOX_COMPILER_MSVC)
116#    define __DEPRECATED__(function) __declspec(deprecated) function
117#  else
118#    define __DEPRECATED__(function) function
119#  endif
120#endif
121
122#ifndef __UNIQUE_NUMBER__
123#  if defined(ORXONOX_COMPILER_GCC) && ORXONOX_COMP_VER >= 430
124#    define __UNIQUE_NUMBER__ __COUNTER__
125#  elif defined(ORXONOX_COMPILER_MSVC)
126#    define __UNIQUE_NUMBER__ __COUNTER__
127#  else
128#    define __UNIQUE_NUMBER__ __LINE__
129#  endif
130#endif
131
132/*---------------------------------
133 * Version information
134 *-------------------------------*/
135#define ORXONOX_VERSION_MAJOR @ORXONOX_VERSION_MAJOR@
136#define ORXONOX_VERSION_MINOR @ORXONOX_VERSION_MINOR@
137#define ORXONOX_VERSION_PATCH @ORXONOX_VERSION_PATCH@
138#define ORXONOX_VERSION_NAME "@ORXONOX_VERSION_NAME@"
139
140//! Defines version info encoded as 0xMMIIPP (M: Major version, I: Minor version, P: Patch version, all as hex)
141#define ORXONOX_VERSION \
142    ((ORXONOX_VERSION_MAJOR << 16) | (ORXONOX_VERSION_MINOR << 8) | ORXONOX_VERSION_PATCH)
143
144
145/*---------------------------------
146 * Unix settings
147 *-------------------------------*/
148#ifdef ORXONOX_PLATFORM_UNIX
149
150// TODO: Check what this actually is and whether we need it or not
151#if 0
152#  ifdef ORXONOX_PLATFORM_APPLE
153#    define ORXONOX_PLATFORM_LIB "OrxonoxPlatform.bundle"
154#  else // ORXONOX_PLATFORM_LINUX
155#    define ORXONOX_PLATFORM_LIB "libOrxonoxPlatform.so"
156#  endif
157#endif
158
159#endif /* Patform Unix */
160
161
162/*---------------------------------
163 * Apple Settings
164 *-------------------------------*/
165
166
167/*---------------------------------
168 * Includes and Declarations
169 *-------------------------------*/
170// Define the english written operators like and, or, xor
171// This is C++ standard, but the Microsoft compiler doesn't define them.
172#cmakedefine HAVE_ISO646_H
173#ifdef HAVE_ISO646_H
174#  include <iso646.h>
175#endif
176
177// On OS X some headers already define HAVE_STDINT_H and that spits out
178// some warnings. Therefore we use this macro.
179// Note: This requires some extra code in OrxonoxConfig.cmake
180#cmakedefine ORX_HAVE_STDINT_H
181#ifdef ORX_HAVE_STDINT_H
182#  include <stdint.h>
183#elif defined(ORXONOX_COMPILER_MSVC)
184typedef __int8            int8_t;
185typedef __int16           int16_t;
186typedef __int32           int32_t;
187typedef __int64           int64_t;
188typedef unsigned __int8   uint8_t;
189typedef unsigned __int16  uint16_t;
190typedef unsigned __int32  uint32_t;
191typedef unsigned __int64  uint64_t;
192#endif
193
194#cmakedefine HAVE_STDDEF_H
195/* Quite large, do not include unless necessary
196#ifdef HAVE_STDDEF_H
197#  include <stddef.h>
198#endif
199*/
200
201// Configurations Release, RelWithDebInfo and MinSizeRel are designed for
202// redistribution while RelForDevs is for development purposes
203// ORXONOX_RELEASE simplifies this a little bit
204#if defined(CMAKE_Release_BUILD) || defined(CMAKE_MinSizeRel_BUILD) \
205    || defined(CMAKE_RelWithDebInfo_BUILD)
206#  define ORXONOX_RELEASE
207#endif
208
209// Forward declare the everywhere used std::string
210namespace std
211{
212    template<class _Elem> struct char_traits;
213    template<class _Ty>   class  allocator;
214    template<class _Elem, class _Traits, class _Ax> class basic_string;
215    typedef basic_string<char, char_traits<char>, allocator<char> > string;
216}
217
218// Import general purpose smart pointers
219namespace boost
220{
221    template<class T> class scoped_ptr;
222    template<class T> class shared_ptr;
223    template<class T> class weak_ptr;
224    template<class T> class intrusive_ptr;
225    template<class T> class shared_array;
226    template<class T> class scoped_array;
227}
228namespace orxonox
229{
230    using boost::scoped_ptr;
231    using boost::shared_ptr;
232    using boost::weak_ptr;
233    using boost::intrusive_ptr;
234    using boost::shared_array;
235    using boost::scoped_array;
236}
237
238// Define Boost Filesystem version
239#include <boost/version.hpp>
240#ifndef BOOST_FILESYSTEM_VERSION
241#  if (BOOST_VERSION < 104600)
242#    define BOOST_FILESYSTEM_VERSION 2
243#  else
244#    define BOOST_FILESYSTEM_VERSION 3
245#  endif
246#endif
247
248// CEGUI changed its file naming convention in version 0.8 thus we cannot even include CEGUI's Version.h file before knowing its version
249#include <@CEGUI_VERSION_FILE@>
250#define CEGUI_VERSION ((CEGUI_VERSION_MAJOR << 16) | (CEGUI_VERSION_MINOR << 8) | CEGUI_VERSION_PATCH)
251
252#endif /* _OrxonoxConfig_H__ */
Note: See TracBrowser for help on using the repository browser.