Index: code/branches/buildsystem3/src/util/CMakeLists.txt
===================================================================
--- code/branches/buildsystem3/src/util/CMakeLists.txt	(revision 2663)
+++ code/branches/buildsystem3/src/util/CMakeLists.txt	(revision 2664)
@@ -1,3 +1,41 @@
-SET(UTIL_SRC_FILES
+ #
+ #             ORXONOX - the hottest 3D action shooter ever to exist
+ #                             > www.orxonox.net <
+ #
+ #        This program is free software; you can redistribute it and/or
+ #         modify it under the terms of the GNU General Public License
+ #        as published by the Free Software Foundation; either version 2
+ #            of the License, or (at your option) any later version.
+ #
+ #       This program is distributed in the hope that it will be useful,
+ #        but WITHOUT ANY WARRANTY; without even the implied warranty of
+ #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ #                 GNU General Public License for more details.
+ #
+ #   You should have received a copy of the GNU General Public License along
+ #      with this program; if not, write to the Free Software Foundation,
+ #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ #
+
+SET_SOURCE_FILES(UTIL_FILES
+  CRC32.h
+  Clipboard.h
+  Convert.h
+  Debug.h
+  Exception.h
+  ExprParser.h
+  Math.h
+  MathConvert.h
+  MultiType.h
+  MultiTypeValue.h
+  OutputBuffer.h
+  OutputHandler.h
+  SignalHandler.h
+  Sleep.h
+  String.h
+  SubString.h
+  UtilPrereqs.h
+  mbool.h
+
   Clipboard.cc
   CRC32.cc
@@ -12,8 +50,25 @@
   SubString.cc
 )
+#GET_ALL_HEADER_FILES(UTIL_HDR_FILES)
+#SET(UTIL_FILES ${UTIL_SRC_FILES} ${UTIL_HDR_FILES})
+GENERATE_SOURCE_GROUPS(${UTIL_FILES})
+# Also add OrxonoxConfig to have it least somewhere in the IDE
+LIST(APPEND UTIL_FILES
+  ${CMAKE_BINARY_DIR}/src/OrxonoxConfig.h
+  ${CMAKE_SOURCE_DIR}/src/OrxonoxConfig.h.in
+)
+SOURCE_GROUP("" FILES
+  ${CMAKE_BINARY_DIR}/src/OrxonoxConfig.h
+  ${CMAKE_SOURCE_DIR}/src/OrxonoxConfig.h.in
+)
 
-ADD_LIBRARY(util SHARED ${UTIL_SRC_FILES})
+IF(GCC_NO_SYSTEM_HEADER_SUPPORT)
+  # Get around displaying a few hundred lines of warning code
+  SET_SOURCE_FILES_PROPERTIES(MultiType.cc PROPERTIES COMPILE_FLAGS "-w")
+ENDIF()
 
-TARGET_LINK_LIBRARIES(util
-  ${OGRE_LIBRARIES}
-)
+ADD_LIBRARY(util SHARED ${UTIL_FILES})
+SET_TARGET_PROPERTIES(util PROPERTIES DEFINE_SYMBOL "UTIL_SHARED_BUILD")
+TARGET_LINK_LIBRARIES(util ${OGRE_LIBRARY})
+
+ORXONOX_INSTALL(util)
Index: code/branches/buildsystem3/src/util/CRC32.h
===================================================================
--- code/branches/buildsystem3/src/util/CRC32.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/CRC32.h	(revision 2664)
@@ -32,5 +32,4 @@
 #include "UtilPrereqs.h"
 #include <iostream>
-#include "Integers.h"
 
 namespace orxonox
Index: code/branches/buildsystem3/src/util/Clipboard.cc
===================================================================
--- code/branches/buildsystem3/src/util/Clipboard.cc	(revision 2663)
+++ code/branches/buildsystem3/src/util/Clipboard.cc	(revision 2664)
@@ -36,5 +36,5 @@
 #include "Clipboard.h"
 
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
+#ifdef ORXONOX_PLATFORM_WINDOWS
 
 /////////////
@@ -104,5 +104,5 @@
 }
 
-#else /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
+#else /* ORXONOX_PLATFORM_WINDOWS */
 
 /////////////
@@ -135,3 +135,3 @@
 }
 
-#endif /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
+#endif /* ORXONOX_PLATFORM_WINDOWS */
Index: code/branches/buildsystem3/src/util/Convert.h
===================================================================
--- code/branches/buildsystem3/src/util/Convert.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/Convert.h	(revision 2664)
@@ -50,5 +50,5 @@
 // This is however exactly what convertValue does, so we need to suppress these warnings.
 // They only occur when using the ImplicitConversion template.
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_GNUC
+#ifdef ORXONOX_COMPILER_GCC
 #  pragma GCC system_header
 #endif
@@ -63,5 +63,5 @@
 
 // disable warnings about possible loss of data
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
+#ifdef ORXONOX_COMPILER_MSVC
 #  pragma warning(push)
 #  pragma warning(disable:4244)
@@ -88,5 +88,5 @@
 }
 
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
+#ifdef ORXONOX_COMPILER_MSVC
 #  pragma warning(pop)
 #endif
Index: code/branches/buildsystem3/src/util/Integers.h
===================================================================
--- code/branches/buildsystem3/src/util/Integers.h	(revision 2663)
+++ 	(revision )
@@ -1,55 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
- @file
- @brief
-    Defines fixed with integers
- */
-
-#ifndef _Integers_H__
-#define _Integers_H__
-
-#include "OrxonoxPlatform.h"
-
-/* Define fixed with integers
- * Note: This is not in a namespace to make it available everywhere!*/
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
-typedef __int8            int8_t;
-typedef __int16           int16_t;
-typedef __int32           int32_t;
-typedef __int64           int64_t;
-typedef unsigned __int8   uint8_t;
-typedef unsigned __int16  uint16_t;
-typedef unsigned __int32  uint32_t;
-typedef unsigned __int64  uint64_t;
-#else
-# include <inttypes.h>
-#endif
-
-#endif /* _Integers_H__ */
Index: code/branches/buildsystem3/src/util/Math.h
===================================================================
--- code/branches/buildsystem3/src/util/Math.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/Math.h	(revision 2664)
@@ -52,5 +52,5 @@
 
 //Get around Windows hackery
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
+#ifdef ORXONOX_PLATFORM_WINDOWS
 #  ifdef max
 #    undef max
Index: code/branches/buildsystem3/src/util/OrxonoxPlatform.h
===================================================================
--- code/branches/buildsystem3/src/util/OrxonoxPlatform.h	(revision 2663)
+++ 	(revision )
@@ -1,274 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      ...
- *   Co-authors:
- *      Reto Grieder
- *
- *   Original code: OgrePlatform.h, licensed under the LGPL. The code
- *   has changed quite a bit however.
- *
- */
-
-/**
- @file
- @brief
-    Various constants for compiler, architecture and platform.
- */
-
-#ifndef _OrxonoxPlatform_H__
-#define _OrxonoxPlatform_H__
-
-/* Initial platform/compiler-related stuff to set. */
-
-#define ORXONOX_PLATFORM_WIN32 1
-#define ORXONOX_PLATFORM_LINUX 2
-#define ORXONOX_PLATFORM_APPLE 3
-
-#define ORXONOX_COMPILER_MSVC 1
-#define ORXONOX_COMPILER_GNUC 2
-#define ORXONOX_COMPILER_BORL 3
-
-#define ORXONOX_ENDIAN_LITTLE 1
-#define ORXONOX_ENDIAN_BIG 2
-
-#define ORXONOX_ARCHITECTURE_32 1
-#define ORXONOX_ARCHITECTURE_64 2
-
-
-/* Finds the compiler type and version. */
-
-#if defined( _MSC_VER )
-#  define ORXONOX_COMPILER ORXONOX_COMPILER_MSVC
-#  define ORXONOX_COMP_VER _MSC_VER
-
-#elif defined( __GNUC__ )
-#  define ORXONOX_COMPILER ORXONOX_COMPILER_GNUC
-#  define ORXONOX_COMP_VER (((__GNUC__)*100) + \
-        (__GNUC_MINOR__*10) + \
-        __GNUC_PATCHLEVEL__)
-
-#elif defined( __BORLANDC__ )
-#  define ORXONOX_COMPILER ORXONOX_COMPILER_BORL
-#  define ORXONOX_COMP_VER __BCPLUSPLUS__
-
-#else
-#  pragma error "No known compiler. Abort! Abort!"
-
-#endif
-
-
-/* See if we can use __forceinline or if we need to use __inline instead */
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
-#  if ORXONOX_COMP_VER >= 1200
-#    define FORCEINLINE __forceinline
-#  endif
-#elif defined(__MINGW32__)
-#  if !defined(FORCEINLINE)
-#    define FORCEINLINE __inline
-#  endif
-#else
-#  define FORCEINLINE __inline
-#endif
-
-/* Finds the current platform */
-#if defined( __WIN32__ ) || defined( _WIN32 )
-#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_WIN32
-#elif defined( __APPLE_CC__)
-#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_APPLE
-#else
-#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_LINUX
-#endif
-
-/* Find the arch type */
-#if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__)
-#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_64
-#else
-#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_32
-#endif
-
-/* Try to define function information */
-#ifndef __FUNCTIONNAME__
-#  if ORXONOX_COMPILER == ORXONOX_COMPILER_BORL
-#    define __FUNCTIONNAME__ __FUNC__
-#  elif ORXONOX_COMPILER == ORXONOX_COMPILER_GNUC
-#    define __FUNCTIONNAME__ __PRETTY_FUNCTION__
-#  elif ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
-#    define __FUNCTIONNAME__ __FUNCTION__
-#  else
-#    define __FUNCTIONNAME__
-#  endif
-#endif
-
-/* Determine whether we're building in debug mode */
-#if defined(_DEBUG) || defined(DEBUG)
-#  define ORXONOX_DEBUG_MODE 1
-#else
-#  define ORXONOX_DEBUG_MODE 0
-#endif
-
-/* Define configurable floating point type */
-namespace orxonox
-{
-#ifdef ORXONOX_DOUBLE_PRECISION
-    typedef double Real;
-#else
-    typedef float  Real;
-#endif
-}
-
-//-----------------------------------------------------------------------
-// Version Information
-//-----------------------------------------------------------------------
-
-#define ORXONOX_VERSION_MAJOR 0
-#define ORXONOX_VERSION_MINOR 1
-#define ORXONOX_VERSION_PATCH 2
-#define ORXONOX_VERSION_SUFFIX ""
-#define ORXONOX_VERSION_NAME "Bellatrix"
-
-#define ORXONOX_VERSION ((ORXONOX_VERSION_MAJOR << 16) | (ORXONOX_VERSION_MINOR << 8) | ORXONOX_VERSION_PATCH)
-
-
-/*---------------------------------
- * Windows Settings
- *-------------------------------*/
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
-/* Disable unicode support on MingW at the moment, poorly supported in stdlibc++
- * STLPORT fixes this though so allow if found
- * MinGW C++ Toolkit supports unicode and sets the define __MINGW32_TOOLKIT_UNICODE__ in _mingw.h */
-#  if defined( __MINGW32__ ) && !defined(_STLPORT_VERSION)
-#    include<_mingw.h>
-#    if defined(__MINGW32_TOOLBOX_UNICODE__)
-#      define ORXONOX_UNICODE_SUPPORT 1
-#    else
-#      define ORXONOX_UNICODE_SUPPORT 0
-#    endif
-#  else
-#    define ORXONOX_UNICODE_SUPPORT 1
-#  endif
-#endif /* Platform Win32 */
-
-
-/*---------------------------------
- * Linux/Apple Settings
- *-------------------------------*/
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_LINUX || ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
-
-/* A quick define to overcome different names for the same function */
-#  define stricmp strcasecmp
-
-/* TODO: Check what this actually is and whether we need it or not */
-#if 0
-#  if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
-#    define ORXONOX_PLATFORM_LIB "OrxonoxPlatform.bundle"
-#  else
-/* ORXONOX_PLATFORM_LINUX */
-#    define ORXONOX_PLATFORM_LIB "libOrxonoxPlatform.so"
-#  endif
-#endif
-
-/* Always enable unicode support for the moment
- * Perhaps disable in old versions of gcc if necessary */
-#  define ORXONOX_UNICODE_SUPPORT 1
-
-#endif /* Patform Linux/Apple */
-
-
-/*---------------------------------
- * Apple Settings
- *-------------------------------*/
-/* For apple, we always have a custom config.h file */
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
-#  include "config.h"
-#endif
-
-
-/*---------------------------------
- * Visual Studio Settings
- *-------------------------------*/
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
-/* Turn off warnings generated by long std templates
- * This warns about truncation to 255 characters in debug/browse info */
-/*#   pragma warning (disable : 4786)*/
-
-/* Turn off warnings generated by long std templates
- * This warns about truncation to 255 characters in debug/browse info */
-/*#   pragma warning (disable : 4503)*/
-
-/* disable: conversion from 'double' to 'float', possible loss of data
- * disable: conversion from 'ogg_int64_t' to 'long', possible loss of data
- * This has been dealt with in base_properties of the solution since the
- * warning primarily occurs in library header files (which are mostly
- * included before OrxonoxPlatform.h is) */
-/*#   pragma warning (disable : 4244)*/
-
-/* disable: "conversion from 'size_t' to 'unsigned int', possible loss of data */
-/*#   pragma warning (disable : 4267)*/
-
-/* disable: "truncation from 'double' to 'float' */
-/*#   pragma warning (disable : 4305)*/
-
-/* set to level 4: "<type> needs to have dll-interface to be used by clients'
- * Happens on STL member variables which are not public therefore is ok */
-#   pragma warning (disable : 4251)
-
-/* disable: 'MultiTypeString' : multiple assignment operators specified
- * Used in MultiType and works fine so far */
-/*#   pragma warning (disable : 4522)*/
-
-/* disable: "non dll-interface class used as base for dll-interface class"
- * Happens when deriving from Singleton because bug in compiler ignores
- * template export */
-/*#   pragma warning (disable : 4275)*/
-
-/* disable: "C++ Exception Specification ignored"
- * This is because MSVC 6 did not implement all the C++ exception
- * specifications in the ANSI C++ draft. */
-/*#   pragma warning( disable : 4290 )*/
-
-/* disable: "no suitable definition provided for explicit template
- * instantiation request" Occurs in VC7 for no justifiable reason on all
- * #includes of Singleton */
-/*#   pragma warning( disable: 4661)*/
-
-/* disable: deprecation warnings when using CRT calls in VC8
- * These show up on all C runtime lib code in VC8, disable since they clutter
- * the warnings with things we may not be able to do anything about (e.g.
- * generated code from nvparse etc). I doubt very much that these calls
- * will ever be actually removed from VC anyway, it would break too much code. */
-/*# pragma warning( disable: 4996)*/
-
-/* disable: "conditional expression constant", always occurs on
- * ORXONOX_MUTEX_CONDITIONAL when no threading enabled */
-/*#   pragma warning (disable : 201)*/
-
-
-/* Define the english written operators like and, or, xor */
-#include <iso646.h>
-
-/* include visual leak detector to search for memory leaks */
-/* #include <vld.h> */
-
-#endif /* ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC */
-
-#endif /* _OrxonoxPlatform_H__ */
Index: code/branches/buildsystem3/src/util/SignalHandler.cc
===================================================================
--- code/branches/buildsystem3/src/util/SignalHandler.cc	(revision 2663)
+++ code/branches/buildsystem3/src/util/SignalHandler.cc	(revision 2664)
@@ -44,5 +44,5 @@
 }
 
-#if ORXONOX_PLATFORM != ORXONOX_PLATFORM_WIN32
+#ifdef ORXONOX_PLATFORM_LINUX
 
 #include <wait.h>
@@ -353,3 +353,3 @@
 }
 
-#endif /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
+#endif /* ORXONOX_PLATFORM_LINUX */
Index: code/branches/buildsystem3/src/util/SignalHandler.h
===================================================================
--- code/branches/buildsystem3/src/util/SignalHandler.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/SignalHandler.h	(revision 2664)
@@ -46,5 +46,5 @@
 }
 
-#if ORXONOX_PLATFORM != ORXONOX_PLATFORM_WIN32
+#ifdef ORXONOX_PLATFORM_LINUX
 #include <signal.h>
 
@@ -97,5 +97,5 @@
 }
 
-#else /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
+#else /* ORXONOX_PLATFORM_LINUX */
 
 namespace orxonox
@@ -116,5 +116,5 @@
 }
 
-#endif /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
+#endif /* ORXONOX_PLATFORM_LINUX */
 
 #endif /* _SignalHandler_H__ */
Index: code/branches/buildsystem3/src/util/Sleep.h
===================================================================
--- code/branches/buildsystem3/src/util/Sleep.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/Sleep.h	(revision 2664)
@@ -36,7 +36,7 @@
 #define _Sleep_H__
 
-#include "OrxonoxPlatform.h"
+#include "UtilPrereqs.h"
 
-#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
+#ifdef ORXONOX_PLATFORM_WINDOWS
 #include <winbase.h>
 
Index: code/branches/buildsystem3/src/util/UtilPrereqs.h
===================================================================
--- code/branches/buildsystem3/src/util/UtilPrereqs.h	(revision 2663)
+++ code/branches/buildsystem3/src/util/UtilPrereqs.h	(revision 2664)
@@ -35,10 +35,10 @@
 #define _UtilPrereqs_H__
 
-#include "util/OrxonoxPlatform.h"
+#include "OrxonoxConfig.h"
 
 //-----------------------------------------------------------------------
 // Shared library settings
 //-----------------------------------------------------------------------
-#if (ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32) && !defined( UTIL_STATIC_BUILD )
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined( UTIL_STATIC_BUILD )
 #  ifdef UTIL_SHARED_BUILD
 #    define _UtilExport __declspec(dllexport)
