Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/unity_build/src/OrxonoxConfig.cmake @ 8569

Last change on this file since 8569 was 8569, checked in by rgrieder, 13 years ago

Changed binary CMake option DISABLE_BUILD_UNITS to string option ENABLE_BUILD_UNITS with the following possible values:
off/false: Turn off completely
partial: Only combine files explicitly specified with BUILD_UNIT
full##: Use ## source files per orxonox library and use manual build units

for external dependencies. Example: full8 will in general use 8
source files per library, but more specifically tries to occupy
8 CPU threads.

  • Property svn:eol-style set to native
File size: 4.4 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 option to steer building muliple files as a single one
37# off/false: Turn off completely
38# partial:   Only combine files explicitly specified with BUILD_UNIT
39# full##:    Use ## source files per orxonox library and use manual build units
40#            for external dependencies. Example: full8 will in general use 8
41#            source files per library, but more specifically tries to occupy
42#            8 CPU threads.
43#            This is configured manually in BuildUnitsConfig.cmake
44SET(ENABLE_BUILD_UNITS "partial" CACHE STRING "Enables building multiple source files as one.")
45IF(ENABLE_BUILD_UNITS)
46  INCLUDE(BuildUnitsConfig.cmake)
47ENDIF()
48
49# Use WinMain() or main()?
50IF(WIN32)
51  OPTION(ORXONOX_USE_WINMAIN "Use WinMain (doesn't show console) or main" FALSE)
52ENDIF()
53
54################ Platform Config ################
55
56# Check endianness
57INCLUDE(TestBigEndian)
58TEST_BIG_ENDIAN(ORXONOX_BIG_ENDIAN)
59IF(NOT ORXONOX_BIG_ENDIAN)
60  SET(ORXONOX_LITTLE_ENDIAN TRUE)
61ENDIF()
62
63# Platforms
64SET(ORXONOX_PLATFORM_WINDOWS ${WIN32})
65SET(ORXONOX_PLATFORM_APPLE   ${APPLE})
66SET(ORXONOX_PLATFORM_UNIX    ${UNIX})
67SET(ORXONOX_PLATFORM_LINUX   ${LINUX})
68
69# Check __forceinline
70IF(MSVC)
71  INCLUDE(CheckCXXSourceCompiles)
72  SET(_source "int main() { return 0; } __forceinline void test() { return; }")
73  CHECK_CXX_SOURCE_COMPILES("${_source}" HAVE_FORCEINLINE)
74ENDIF(MSVC)
75
76# Check some non standard system includes
77INCLUDE(CheckIncludeFileCXX)
78CHECK_INCLUDE_FILE_CXX(iso646.h HAVE_ISO646_H)
79CHECK_INCLUDE_FILE_CXX(stdint.h HAVE_STDINT_H)
80
81# Part of a woraround for OS X warnings. See OrxonoxConfig.h.in
82SET(ORX_HAVE_STDINT_H ${HAVE_STDINT_H})
83
84# XCode and Visual Studio support multiple configurations. In order to tell
85# about the active one we have to define the macro for each configuration
86ADD_COMPILER_FLAGS("-DCMAKE_Debug_BUILD"          Debug)
87ADD_COMPILER_FLAGS("-DCMAKE_RelForDevs_BUILD"     RelForDevs)
88ADD_COMPILER_FLAGS("-DCMAKE_Release_BUILD"        Release)
89ADD_COMPILER_FLAGS("-DCMAKE_RelWithDebInfo_BUILD" RelWithDebInfo)
90ADD_COMPILER_FLAGS("-DCMAKE_MinSizeRel_BUILD"     MinSizeRel)
91
92############## Configured Headers ###############
93
94SET(GENERATED_FILE_COMMENT
95   "DO NOT EDIT THIS FILE! <br>
96    It has been automatically generated by CMake from OrxonoxConfig.h.in")
97# Copy and configure OrxonoxConfig which gets included in every file
98CONFIGURE_FILE(OrxonoxConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/OrxonoxConfig.h)
99# This file only gets included by very few classes to avoid a large recompilation
100CONFIGURE_FILE(SpecialConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/SpecialConfig.h)
101
102SET(ORXONOX_CONFIG_FILES
103  ${CMAKE_CURRENT_SOURCE_DIR}/OrxonoxConfig.h.in
104  ${CMAKE_CURRENT_SOURCE_DIR}/SpecialConfig.h.in
105)
106SET(ORXONOX_CONFIG_FILES_GENERATED
107  ${CMAKE_CURRENT_BINARY_DIR}/OrxonoxConfig.h
108  ${CMAKE_CURRENT_BINARY_DIR}/SpecialConfig.h
109)
110
111# Make special target including the configured header files for Visual Studio
112IF(MSVC)
113  ADD_CUSTOM_TARGET(config
114    SOURCES
115      ${ORXONOX_CONFIG_FILES}
116      ${ORXONOX_CONFIG_FILES_GENERATED}
117  )
118ENDIF()
Note: See TracBrowser for help on using the repository browser.