Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core7/CMakeLists.txt @ 10588

Last change on this file since 10588 was 10582, checked in by landauf, 10 years ago

delete helper files before building. this avoids that old helper files remain in the build directories (e.g. if a module is renamed, deleted or changed to a plugin)

  • 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.