Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/environment2/cmake/CompilerConfigGCC.cmake @ 9352

Last change on this file since 9352 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: 4.0 KB
Line 
1 #
2 #             ORXONOX - the hottest 3D action shooter ever to exist
3 #                             > www.orxonox.net <
4 #
5 #        This program is free software; you can redistribute it and/or
6 #         modify it under the terms of the GNU General Public License
7 #        as published by the Free Software Foundation; either version 2
8 #            of the License, or (at your option) any later version.
9 #
10 #       This program is distributed in the hope that it will be useful,
11 #        but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #                 GNU General Public License for more details.
14 #
15 #   You should have received a copy of the GNU General Public License along
16 #      with this program; if not, write to the Free Software Foundation,
17 #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 #
19 #
20 #  Author:
21 #    Reto Grieder, Adrian Friedli
22 #  Description:
23 #    Sets the right compiler and linker flags for GCC.
24 #
25
26INCLUDE(FlagUtilities)
27INCLUDE(CompareVersionStrings)
28INCLUDE(CheckCXXCompilerFlag)
29
30# Shortcut for CMAKE_COMPILER_IS_GNUCXX and ..._GNUC
31SET(CMAKE_COMPILER_IS_GNU TRUE)
32
33# Determine compiler version
34EXEC_PROGRAM(
35  ${CMAKE_CXX_COMPILER}
36  ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
37  OUTPUT_VARIABLE GCC_VERSION
38)
39
40# GCC only supports PCH in versions 3.4 and above
41INCLUDE(CompareVersionStrings)
42COMPARE_VERSION_STRINGS("${GCC_VERSION}" "3.4.0" _compare_result)
43IF(_compare_result GREATER -1)
44  SET(PCH_COMPILER_SUPPORT TRUE)
45ENDIF()
46
47# Also include environment flags. Could cause conflicts though
48SET_COMPILER_FLAGS("$ENV{CXXFLAGS}" CXX CACHE)
49SET_COMPILER_FLAGS("$ENV{CFLAGS}"   C   CACHE)
50
51# These flags get added to the flags above
52SET_COMPILER_FLAGS("    -g -ggdb -D_DEBUG" Debug          CACHE)
53SET_COMPILER_FLAGS("             -DNDEBUG" ReleaseAll     CACHE)
54ADD_COMPILER_FLAGS("-O3"                   Release        CACHE)
55ADD_COMPILER_FLAGS("-O2 -g -ggdb"          RelWithDebInfo CACHE)
56ADD_COMPILER_FLAGS("-Os"                   MinSizeRel     CACHE)
57
58# CMake doesn't seem to set the PIC flags right on certain 64 bit systems
59IF(NOT MINGW AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
60  ADD_COMPILER_FLAGS("-fPIC" CACHE)
61ENDIF()
62
63# Enable non standard floating point optimisations
64ADD_COMPILER_FLAGS("-ffast-math" CACHE)
65
66# Use SSE if possible
67# Commented because this might not work for cross compiling
68#CHECK_CXX_COMPILER_FLAG(-msse _gcc_have_sse)
69#IF(_gcc_have_sse)
70#  ADD_COMPILER_FLAGS("-msse" CACHE)
71#ENDIF()
72
73IF(NOT MINGW)
74  # Have GCC visibility?
75  CHECK_CXX_COMPILER_FLAG("-fvisibility=hidden" _gcc_have_visibility)
76  IF(_gcc_have_visibility)
77    # Note: There is a possible bug with the flag in gcc < 4.2 and Debug versions
78    COMPARE_VERSION_STRINGS("${GCC_VERSION}" "4.2.0" _compare_result)
79    IF(NOT CMAKE_BUILD_TYPE STREQUAL "Debug" OR _compare_result GREATER -1)
80      ADD_COMPILER_FLAGS("-DORXONOX_GCC_VISIBILITY -fvisibility=default -fvisibility-inlines-hidden" CACHE)
81    ENDIF()
82  ENDIF(_gcc_have_visibility)
83ENDIF()
84
85# We have some unconformant code, disable an optimisation feature
86ADD_COMPILER_FLAGS("-fno-strict-aliasing" CACHE)
87
88# For newer GCC (4.3 and above), don't display hundreds of annoying deprecated
89# messages. Other versions don't seem to show any such warnings at all.
90ADD_COMPILER_FLAGS("-Wno-deprecated" CXX CACHE)
91
92# Always show why a precompiled header file could not be used
93ADD_COMPILER_FLAGS("-Winvalid-pch" CXX CACHE)
94
95# Increase warning level if requested
96IF(EXTRA_COMPILER_WARNINGS)
97  ADD_COMPILER_FLAGS("-Wall -Wextra -Wno-unused-parameter" CACHE)
98ELSE()
99  REMOVE_COMPILER_FLAGS("-Wextra -Wno-unused-parameter" CACHE)
100  ADD_COMPILER_FLAGS("-Wall" CACHE)
101ENDIF()
102
103# Linker flags
104IF(LINUX)
105  # Don't allow undefined symbols in a shared library
106  SET_LINKER_FLAGS("-Wl,--no-undefined" CACHE)
107ENDIF()
108
109# Add compiler and linker flags for MinGW
110IF (MINGW)
111  ADD_COMPILER_FLAGS("-gstabs+" Debug          CACHE)
112  ADD_COMPILER_FLAGS("-gstabs+" RelWithDebInfo CACHE)
113
114  ADD_LINKER_FLAGS("-enable-auto-import" CACHE)
115ENDIF()
Note: See TracBrowser for help on using the repository browser.