Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/CMakeLists.txt @ 8368

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

Added CMake configuration type "RelForDevs", which replaces "RelWithDebInfo". That latter is now equivalent to "Release", but with symbols.
Also, I removed debug symbol generation for Release and MinSizeRel when compiling with MSVC.

The new configuration should be used as standard Release mode when developing. The other three release configurations are for actual installed binaries (and behave again as the name suggests).

  • Property svn:eol-style set to native
File size: 5.8 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 some basics and controls the configuration scripts
24 #
25
26# Defined LINUX
27IF(UNIX AND NOT APPLE)
28  SET(LINUX TRUE)
29ENDIF()
30
31IF(WIN32)
32  IF(MSVC10)
33    CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3 FATAL_ERROR)
34  ELSE()
35    CMAKE_MINIMUM_REQUIRED(VERSION 2.6.3 FATAL_ERROR)
36  ENDIF()
37ELSE()
38  CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
39ENDIF()
40
41# Keep devs from using the root directory as binary directory (messes up the source tree)
42IF(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
43  MESSAGE(FATAL_ERROR "Please do not use the root directory as CMake output directory!
44  mkdir build; cd build; cmake ..
45  And you will have to clean the source directory by deleting CMakeCache.txt and the folder CMakeFiles")
46ENDIF()
47
48PROJECT(Orxonox C CXX)
49
50################ General Config #################
51
52# Version info
53SET(ORXONOX_VERSION_MAJOR 0)
54SET(ORXONOX_VERSION_MINOR 0)
55SET(ORXONOX_VERSION_PATCH 4)
56SET(ORXONOX_VERSION 0.0.4)
57SET(ORXONOX_VERSION_NAME "Arcturus")
58
59# Standard path suffixes
60SET(DEFAULT_RUNTIME_PATH bin)
61SET(DEFAULT_LIBRARY_PATH lib)
62SET(DEFAULT_ARCHIVE_PATH lib/static)
63SET(DEFAULT_MODULE_PATH  lib/modules)
64SET(DEFAULT_DOC_PATH     doc)
65SET(DEFAULT_DATA_PATH    data)
66SET(DEFAULT_CONFIG_PATH  config)
67SET(DEFAULT_LOG_PATH     log)
68SET(DEFAULT_BUNDLE_PATH  bundle)
69
70# Set output directories
71SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${DEFAULT_RUNTIME_PATH})
72SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${DEFAULT_LIBRARY_PATH})
73SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${DEFAULT_ARCHIVE_PATH})
74SET(CMAKE_MODULE_OUTPUT_DIRECTORY  ${CMAKE_BINARY_DIR}/${DEFAULT_MODULE_PATH})
75SET(CMAKE_DOC_OUTPUT_DIRECTORY     ${CMAKE_BINARY_DIR}/${DEFAULT_DOC_PATH})
76# Data directories are only inputs, no delclaration here
77SET(CMAKE_CONFIG_OUTPUT_DIRECTORY  ${CMAKE_BINARY_DIR}/${DEFAULT_CONFIG_PATH})
78SET(CMAKE_LOG_OUTPUT_DIRECTORY     ${CMAKE_BINARY_DIR}/${DEFAULT_LOG_PATH})
79
80# Set the extension of the dynamic modules
81SET(ORXONOX_MODULE_EXTENSION ".module")
82
83# Sets where to find the external libraries like OgreMain.dll at runtime
84# On Unix you should not have to change this at all.
85# This only applies to development runs in the build tree
86SET(RUNTIME_LIBRARY_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
87
88# Take care of some CMake 2.6.0 leftovers
89MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
90
91# This sets where to look for CMake modules (e.g. "Find*.cmake" files)
92SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake/tools)
93
94# Flag variables for extra configuration "RelForDevs" should be hidden
95MARK_AS_ADVANCED(
96  CMAKE_CXX_FLAGS_RELFORDEVS
97  CMAKE_C_FLAGS_RELFORDEVS
98  CMAKE_EXE_LINKER_FLAGS_RELFORDEVS
99  CMAKE_MODULE_LINKER_FLAGS_RELFORDEVS
100  CMAKE_SHARED_LINKER_FLAGS_RELFORDEVS
101)
102
103IF(NOT CMAKE_CONFIGURATION_TYPES)
104  # Set Debug build to default when not having multi-config generator like MSVC or XCODE
105  IF(NOT CMAKE_BUILD_TYPE)
106    SET(CMAKE_BUILD_TYPE Debug CACHE STRING
107        "Build types are: Debug, RelForDevs, RelWithDebInfo, Release, MinSizeRel" FORCE)
108  ENDIF()
109  MARK_AS_ADVANCED(CLEAR CMAKE_BUILD_TYPE)
110
111  MESSAGE(STATUS "*** Build type is ${CMAKE_BUILD_TYPE} ***")
112ELSE()
113  # Make sure no build type is ever set
114  IF(CMAKE_BUILD_TYPE)
115    SET(CMAKE_BUILD_TYPE CACHE STRING FORCE)
116  ENDIF()
117  MARK_AS_ADVANCED(FORCE CMAKE_BUILD_TYPE)
118  # Add our extra configuration "RelForDevs"
119  SET(CMAKE_CONFIGURATION_TYPES "Debug;RelForDevs;RelWithDebInfo;Release;MinSizeRel"
120      CACHE STRING "Semicolon separated list of supported configuration types." FORCE)
121ENDIF()
122
123# Debug builds can not be installed
124INSTALL(SCRIPT cmake/InstallCheck.cmake)
125
126IF(APPLE)
127  # Set 10.5 as the base SDK by default
128  SET(XCODE_ATTRIBUTE_SDKROOT macosx10.5)
129
130  # 10.6 sets x86_64 as the default architecture.
131  # Because Carbon isn't supported on 64-bit and we still need it, force the architectures to ppc and i386
132  IF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
133    SET(CMAKE_OSX_ARCHITECTURES "i386")
134  ENDIF()
135  IF(CMAKE_OSX_ARCHITECTURES MATCHES "ppc64")
136    SET(CMAKE_OSX_ARCHITECTURES "ppc")
137  ENDIF()
138  IF(NOT CMAKE_OSX_ARCHITECTURES)
139    SET(CMAKE_OSX_ARCHITECTURES "i386")
140  ENDIF()
141ENDIF()
142
143########### Subfolders and Subscripts ###########
144
145# General build and compiler options and configurations
146INCLUDE(CompilerConfig)
147
148# Library finding
149INCLUDE(LibraryConfig)
150
151# Configure installation paths and options
152INCLUDE(InstallConfig)
153
154# Configure data directory location and installation
155ADD_SUBDIRECTORY(data)
156
157# Create the actual project
158ADD_SUBDIRECTORY(src)
159
160# Configure the binary output directory. Do this after src!
161ADD_SUBDIRECTORY(bin)
162
163# System specific files (mostly for installation)
164ADD_SUBDIRECTORY(contrib)
165
166# Last but not least: Try to make a doc target with Doxygen
167ADD_SUBDIRECTORY(doc)
168
169########### CPack Packaging ###########
170
171# Currently only testing on Apple
172#IF(APPLE)
173#  INCLUDE(BundleConfig)
174#ENDIF(APPLE)
Note: See TracBrowser for help on using the repository browser.