Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/testing/src/libraries/core/CorePrereqs.h @ 9268

Last change on this file since 9268 was 8351, checked in by rgrieder, 14 years ago

Merged kicklib2 branch back to trunk (includes former branches ois_update, mac_osx and kicklib).

Notes for updating

Linux:
You don't need an extra package for CEGUILua and Tolua, it's already shipped with CEGUI.
However you do need to make sure that the OgreRenderer is installed too with CEGUI 0.7 (may be a separate package).
Also, Orxonox now recognises if you install the CgProgramManager (a separate package available on newer Ubuntu on Debian systems).

Windows:
Download the new dependency packages versioned 6.0 and use these. If you have problems with that or if you don't like the in game console problem mentioned below, you can download the new 4.3 version of the packages (only available for Visual Studio 2005/2008).

Key new features:

  • *Support for Mac OS X*
  • Visual Studio 2010 support
  • Bullet library update to 2.77
  • OIS library update to 1.3
  • Support for CEGUI 0.7 —> Support for Arch Linux and even SuSE
  • Improved install target
  • Compiles now with GCC 4.6
  • Ogre Cg Shader plugin activated for Linux if available
  • And of course lots of bug fixes

There are also some regressions:

  • No support for CEGUI 0.5, Ogre 1.4 and boost 1.35 - 1.39 any more
  • In game console is not working in main menu for CEGUI 0.7
  • Tolua (just the C lib, not the application) and CEGUILua libraries are no longer in our repository. —> You will need to get these as well when compiling Orxonox
  • And of course lots of new bugs we don't yet know about
  • Property svn:eol-style set to native
File size: 8.5 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 */
28
29/**
30@file
31@brief
32    Shared library macros, enums, constants and forward declarations for the core library
33*/
34
35#ifndef _CorePrereqs_H__
36#define _CorePrereqs_H__
37
38#include "OrxonoxConfig.h"
39#include <boost/version.hpp>
40#include <CEGUIVersion.h>
41
42//-----------------------------------------------------------------------
43// Shared library settings
44//-----------------------------------------------------------------------
45
46#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined( CORE_STATIC_BUILD )
47#  ifdef CORE_SHARED_BUILD
48#    define _CoreExport __declspec(dllexport)
49#  else
50#    if defined( __MINGW32__ )
51#      define _CoreExport
52#    else
53#      define _CoreExport __declspec(dllimport)
54#    endif
55#  endif
56#  define _CorePrivate
57#elif defined (ORXONOX_GCC_VISIBILITY)
58#  define _CoreExport  __attribute__ ((visibility("default")))
59#  define _CorePrivate __attribute__ ((visibility("hidden")))
60#else
61#  define _CoreExport
62#  define _CorePrivate
63#endif
64
65//-----------------------------------------------------------------------
66// Constants
67//-----------------------------------------------------------------------
68
69namespace orxonox
70{
71    static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1);
72}
73
74//-----------------------------------------------------------------------
75// Enums
76//-----------------------------------------------------------------------
77
78namespace orxonox
79{
80    namespace XMLPort
81    {
82        enum Mode
83        {
84            NOP,
85            LoadObject,
86            SaveObject,
87            ExpandObject
88        };
89    }
90
91    namespace ConfigFileType
92    {
93        enum Value
94        {
95            Settings,
96            JoyStickCalibration,
97            CommandHistory
98            // Don't forget to adjust the array size in the ConfigFileManager when adding a new entry here!
99        };
100    }
101
102    namespace KeybindMode
103    {
104        enum Value
105        {
106            OnPress,
107            OnHold,
108            OnRelease,
109            None
110        };
111    };
112}
113
114//-----------------------------------------------------------------------
115// Forward declarations
116//-----------------------------------------------------------------------
117
118namespace orxonox
119{
120    typedef std::string LanguageEntryLabel;
121
122    template <class T, class U>
123    T orxonox_cast(U*);
124
125    class BaseObject;
126    template <class T>
127    class ClassFactory;
128    template <class T>
129    class ClassIdentifier;
130    class ClassTreeMask;
131    class ClassTreeMaskIterator;
132    class ClassTreeMaskNode;
133    class ClassTreeMaskObjectIterator;
134    class CommandLineParser;
135    class CommandLineArgument;
136    class ConfigFile;
137    class ConfigFileEntry;
138    class ConfigFileEntryComment;
139    class ConfigFileEntryValue;
140    class ConfigFileManager;
141    class ConfigFileSection;
142    class ConfigValueContainer;
143    class Core;
144    class DestructionListener;
145    class DynLib;
146    class DynLibManager;
147    struct Event;
148    class EventState;
149    class Factory;
150    class Game;
151    class GameState;
152    struct GameStateInfo;
153    struct GameStateTreeNode;
154    class GraphicsManager;
155    class GUIManager;
156    class Identifier;
157    template <class T>
158    class Iterator;
159    class Language;
160    class LuaFunctor;
161    class LuaState;
162    class MemoryArchive;
163    class MemoryArchiveFactory;
164    class MetaObjectList;
165    class MetaObjectListElement;
166    class Namespace;
167    class NamespaceNode;
168    template <class T>
169    class ObjectList;
170    class ObjectListBase;
171    class ObjectListBaseElement;
172    template <class T>
173    class ObjectListElement;
174    template <class T>
175    class ObjectListIterator;
176    class OgreWindowEventListener;
177    class OrxonoxClass;
178    class PathConfig;
179    struct ResourceInfo;
180    class SettingsConfigFile;
181    template <class T>
182    class SmartPtr;
183    template <class T>
184    class SubclassIdentifier;
185    class Template;
186    class Thread;
187    class ThreadPool;
188    class ViewportEventListener;
189    template <class T>
190    class WeakPtr;
191    class WindowEventListener;
192    class XMLFile;
193    class XMLNameListener;
194    template <class T, class O>
195    class XMLPortClassObjectContainer;
196    template <class T>
197    class XMLPortClassParamContainer;
198    class XMLPortObjectContainer;
199    class XMLPortParamContainer;
200
201    // Command
202    class ArgumentCompleter;
203    class ArgumentCompletionListElement;
204    class CommandEvaluation;
205    class ConsoleCommand;
206    class Executor;
207    template <class T>
208    class ExecutorMember;
209    class ExecutorStatic;
210    class Functor;
211    template <class O>
212    class FunctorMember;
213    typedef FunctorMember<void> FunctorStatic;
214    template <class F, class O>
215    class FunctorPointer;
216    class IOConsole;
217    class IRC;
218    class Shell;
219    class ShellListener;
220    class TclBind;
221    struct TclInterpreterBundle;
222    template <class T>
223    class TclThreadList;
224    class TclThreadManager;
225
226    // Input
227    class BaseCommand;
228    class BufferedParamCommand;
229    class Button;
230    class HalfAxis;
231    class InputBuffer;
232    class InputDevice;
233    template <class Traits>
234    class InputDeviceTemplated;
235    class InputHandler;
236    class InputManager;
237    class InputState;
238    struct InputStatePriority;
239    class JoyStickQuantityListener;
240    class JoyStick;
241    class KeyBinder;
242    class KeyBinderManager;
243    class Keyboard;
244    class KeyDetector;
245    class KeyEvent;
246    class Mouse;
247    class ParamCommand;
248    class SimpleCommand;
249}
250
251#include "command/FunctorPtr.h"
252#include "command/ExecutorPtr.h"
253
254// CppTcl
255namespace Tcl
256{
257    class interpreter;
258    class object;
259}
260
261// Boost
262namespace boost
263{
264#if (BOOST_VERSION < 104400)
265
266    namespace filesystem
267    {
268        struct path_traits;
269        template <class String, class Traits> class basic_path;
270        typedef basic_path<std::string, path_traits> path;
271    }
272
273#elif (BOOST_VERSION < 104800)
274
275# if BOOST_FILESYSTEM_VERSION == 2
276    namespace filesystem2
277    {
278        struct path_traits;
279        template <class String, class Traits> class basic_path;
280        typedef basic_path<std::string, path_traits> path;
281    }
282    namespace filesystem
283    {
284        using filesystem2::basic_path;
285        using filesystem2::path_traits;
286        using filesystem2::path;
287    }
288# elif BOOST_FILESYSTEM_VERSION == 3
289    namespace filesystem3
290    {
291        class path;
292    }
293    namespace filesystem
294    {
295        using filesystem3::path;
296    }
297# endif
298
299#else
300
301    // TODO: Check this once boost 1.48 is released
302    namespace filesystem
303    {
304        class path;
305    }
306
307#endif
308
309    class thread;
310    class mutex;
311    class shared_mutex;
312    class condition_variable;
313}
314
315// Ogre
316namespace Ogre
317{
318    class DataStream;
319    template <class T> class SharedPtr;
320    typedef SharedPtr<DataStream> DataStreamPtr;
321}
322namespace orxonox
323{
324    // Import the Ogre::DataStream
325    using Ogre::DataStream;
326    using Ogre::DataStreamPtr;
327}
328
329// CEGUI
330namespace CEGUI
331{
332    class DefaultLogger;
333    class Logger;
334    class LuaScriptModule;
335
336#if CEGUI_VERSION_MAJOR < 1 && CEGUI_VERSION_MINOR < 7
337    class OgreCEGUIRenderer;
338    class OgreCEGUIResourceProvider;
339    class OgreCEGUITexture;
340#else
341    class OgreRenderer;
342    class OgreResourceProvider;
343    class OgreImageCodec;
344#endif
345}
346
347// Lua
348struct lua_State;
349
350// TinyXML and TinyXML++
351class TiXmlString;
352class TiXmlOutStream;
353class TiXmlNode;
354class TiXmlHandle;
355class TiXmlDocument;
356class TiXmlElement;
357class TiXmlComment;
358class TiXmlUnknown;
359class TiXmlAttribute;
360class TiXmlText;
361class TiXmlDeclaration;
362class TiXmlParsingData;
363namespace ticpp
364{
365    class Document;
366    class Element;
367    class Declaration;
368    class StylesheetReference;
369    class Text;
370    class Comment;
371    class Attribute;
372}
373namespace orxonox
374{
375    using ticpp::Element;
376}
377
378#endif /* _CorePrereqs_H__ */
Note: See TracBrowser for help on using the repository browser.