Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/OrxonoxConfig.cmake @ 8367

Last change on this file since 8367 was 8363, checked in by rgrieder, 14 years ago

To avoid further confusion, I linked ORXONOX_RELEASE to the 'Release' and 'MinSizeRel' configurations. The variable is therefore not anymore available in CMake.
That means defining what these configurations actually mean in the context of Orxonox:

Debug: No optimisations and additional debug information. NOT distributable.
RelWithDebInfo: Optimisations enabled, but also generates debug information. Should be the default mode for development.
Release: With optimisations, but no debug symbols. Use this configuration to make a release binary.
MinSizeRel: Like Release, but optimised for size instead of speed. Not really useful for us.

  • Property svn:eol-style set to native
File size: 4.2 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
22 #  Description:
23 #    Configures the header files OrxonoxConfig.h and SpecialConfig.h
24 #    and sets some other options. All the build related options should be
25 #    found and set here if possible.
26 #
27
28#################### Options ####################
29
30# Global switch to disable Precompiled Header Files
31# Note: PCH temporarily disabled on Mac because of severe problems
32IF(PCH_COMPILER_SUPPORT AND NOT APPLE)
33  OPTION(PCH_ENABLE "Global PCH switch" TRUE)
34ENDIF()
35
36# Global switch to disable multiple file compilations
37OPTION(DISABLE_COMPILATIONS "Global multi-file compilation switch" FALSE)
38
39# Use WinMain() or main()?
40IF(WIN32)
41  OPTION(ORXONOX_USE_WINMAIN "Use WinMain (doesn't show console) or main" FALSE)
42ENDIF()
43
44################ Platform Config ################
45
46# Check endianness
47INCLUDE(TestBigEndian)
48TEST_BIG_ENDIAN(ORXONOX_BIG_ENDIAN)
49IF(NOT ORXONOX_BIG_ENDIAN)
50  SET(ORXONOX_LITTLE_ENDIAN TRUE)
51ENDIF()
52
53# Platforms
54SET(ORXONOX_PLATFORM_WINDOWS ${WIN32})
55SET(ORXONOX_PLATFORM_APPLE   ${APPLE})
56SET(ORXONOX_PLATFORM_UNIX    ${UNIX})
57SET(ORXONOX_PLATFORM_LINUX   ${LINUX})
58
59# Check __forceinline
60IF(MSVC)
61  INCLUDE(CheckCXXSourceCompiles)
62  SET(_source "int main() { return 0; } __forceinline void test() { return; }")
63  CHECK_CXX_SOURCE_COMPILES("${_source}" HAVE_FORCEINLINE)
64ENDIF(MSVC)
65
66# Check some non standard system includes
67INCLUDE(CheckIncludeFileCXX)
68CHECK_INCLUDE_FILE_CXX(iso646.h HAVE_ISO646_H)
69CHECK_INCLUDE_FILE_CXX(stdint.h HAVE_STDINT_H)
70
71# Part of a woraround for OS X warnings. See OrxonoxConfig.h.in
72SET(ORX_HAVE_STDINT_H ${HAVE_STDINT_H})
73
74# XCode and Visual Studio support multiple configurations. In order to tell
75# about the active one we have to define the macro for each configuration
76ADD_COMPILER_FLAGS("-DCMAKE_Debug_BUILD"          Debug)
77ADD_COMPILER_FLAGS("-DCMAKE_Release_BUILD"        Release)
78ADD_COMPILER_FLAGS("-DCMAKE_RelWithDebInfo_BUILD" RelWithDebInfo)
79ADD_COMPILER_FLAGS("-DCMAKE_MinSizeRel_BUILD"     MinSizeRel)
80
81IF(MSVC)
82  # Check whether we can use Visual Leak Detector
83  FIND_FILE(VLD_DLL vld_x86.dll)
84  IF(VLD_DLL)
85    SET(HAVE_VLD TRUE)
86    OPTION(VISUAL_LEAK_DETECTOR_ENABLE "Memory leak detector" off)
87    # Make sure the value is "on" or "off" for vld.ini
88    IF(VISUAL_LEAK_DETECTOR_ENABLE)
89      SET(VISUAL_LEAK_DETECTOR_ENABLE on)
90    ELSE()
91      SET(VISUAL_LEAK_DETECTOR_ENABLE off)
92    ENDIF()
93  ENDIF()
94  MARK_AS_ADVANCED(VLD_DLL)
95ENDIF()
96
97############## Configured Headers ###############
98
99SET(GENERATED_FILE_COMMENT
100   "DO NOT EDIT THIS FILE! <br>
101    It has been automatically generated by CMake from OrxonoxConfig.h.in")
102# Copy and configure OrxonoxConfig which gets included in every file
103CONFIGURE_FILE(OrxonoxConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/OrxonoxConfig.h)
104# This file only gets included by very few classes to avoid a large recompilation
105CONFIGURE_FILE(SpecialConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/SpecialConfig.h)
106
107SET(ORXONOX_CONFIG_FILES
108  ${CMAKE_CURRENT_SOURCE_DIR}/OrxonoxConfig.h.in
109  ${CMAKE_CURRENT_SOURCE_DIR}/SpecialConfig.h.in
110)
111SET(ORXONOX_CONFIG_FILES_GENERATED
112  ${CMAKE_CURRENT_BINARY_DIR}/OrxonoxConfig.h
113  ${CMAKE_CURRENT_BINARY_DIR}/SpecialConfig.h
114)
115
116# Make special target including the configured header files for Visual Studio
117IF(MSVC)
118  ADD_CUSTOM_TARGET(config
119    SOURCES
120      ${ORXONOX_CONFIG_FILES}
121      ${ORXONOX_CONFIG_FILES_GENERATED}
122  )
123ENDIF()
Note: See TracBrowser for help on using the repository browser.