Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/CMakeLists.txt @ 9888

Last change on this file since 9888 was 9550, checked in by landauf, 12 years ago

merged testing branch back to trunk. unbelievable it took me 13 months to finish this chore…

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