Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/CMakeLists.txt @ 10624

Last change on this file since 10624 was 10624, checked in by landauf, 4 years ago

merged branch core7 back to trunk

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