Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/CMakeLists.txt @ 8363

Last change on this file since 8363 was 8363, checked in by rgrieder, 14 years ago

To avoid further confusion, I linked ORXONOX_RELEASE to the 'Release' and 'MinSizeRel' configurations. The variable is therefore not anymore available in CMake.
That means defining what these configurations actually mean in the context of Orxonox:

Debug: No optimisations and additional debug information. NOT distributable.
RelWithDebInfo: Optimisations enabled, but also generates debug information. Should be the default mode for development.
Release: With optimisations, but no debug symbols. Use this configuration to make a release binary.
MinSizeRel: Like Release, but optimised for size instead of speed. Not really useful for us.

  • Property svn:eol-style set to native
File size: 5.2 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
[7383]31IF(WIN32)
[8351]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()
[7383]37ELSE()
[8351]38  CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
[7383]39ENDIF()
[1505]40
[2710]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()
[1505]47
[2710]48PROJECT(Orxonox C CXX)
[1872]49
[5695]50################ General Config #################
51
52# Version info
[2710]53SET(ORXONOX_VERSION_MAJOR 0)
54SET(ORXONOX_VERSION_MINOR 0)
[6444]55SET(ORXONOX_VERSION_PATCH 4)
56SET(ORXONOX_VERSION 0.0.4)
[2718]57SET(ORXONOX_VERSION_NAME "Arcturus")
[1505]58
[5695]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)
[8351]68SET(DEFAULT_BUNDLE_PATH  bundle)
[1505]69
[5695]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)
[7163]92SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake/tools)
[1505]93
[5695]94# Set Debug build to default when not having multi-config generator like msvc
95IF(NOT CMAKE_CONFIGURATION_TYPES)
96  IF(NOT CMAKE_BUILD_TYPE)
97    SET(CMAKE_BUILD_TYPE Debug CACHE STRING
98        "Build types are: Debug, Release, MinSizeRel, RelWithDebInfo" FORCE)
99  ENDIF()
100  MARK_AS_ADVANCED(CLEAR CMAKE_BUILD_TYPE)
101
102  MESSAGE(STATUS "*** Build type is ${CMAKE_BUILD_TYPE} ***")
103ELSE()
104  IF(CMAKE_BUILD_TYPE)
105    SET(CMAKE_BUILD_TYPE CACHE STRING FORCE)
106  ENDIF()
107  MARK_AS_ADVANCED(CMAKE_BUILD_TYPE)
108ENDIF()
109
[8351]110# Debug builds can not be installed
111INSTALL(SCRIPT cmake/InstallCheck.cmake)
112
113IF(APPLE)
114  # Set 10.5 as the base SDK by default
115  SET(XCODE_ATTRIBUTE_SDKROOT macosx10.5)
116
117  # 10.6 sets x86_64 as the default architecture.
118  # Because Carbon isn't supported on 64-bit and we still need it, force the architectures to ppc and i386
119  IF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
120    SET(CMAKE_OSX_ARCHITECTURES "i386")
121  ENDIF()
122  IF(CMAKE_OSX_ARCHITECTURES MATCHES "ppc64")
123    SET(CMAKE_OSX_ARCHITECTURES "ppc")
124  ENDIF()
125  IF(NOT CMAKE_OSX_ARCHITECTURES)
126    SET(CMAKE_OSX_ARCHITECTURES "i386")
127  ENDIF()
128ENDIF()
129
[5695]130########### Subfolders and Subscripts ###########
131
[8351]132# General build and compiler options and configurations
133INCLUDE(CompilerConfig)
134
[2710]135# Library finding
136INCLUDE(LibraryConfig)
[1505]137
[5695]138# Configure installation paths and options
139INCLUDE(InstallConfig)
[1505]140
[5695]141# Configure data directory location and installation
142ADD_SUBDIRECTORY(data)
143
[2710]144# Create the actual project
145ADD_SUBDIRECTORY(src)
[1505]146
[2710]147# Configure the binary output directory. Do this after src!
148ADD_SUBDIRECTORY(bin)
[1505]149
[8351]150# System specific files (mostly for installation)
151ADD_SUBDIRECTORY(contrib)
152
[5695]153# Last but not least: Try to make a doc target with Doxygen
[2710]154ADD_SUBDIRECTORY(doc)
[8351]155
156########### CPack Packaging ###########
157
158# Currently only testing on Apple
159#IF(APPLE)
160#  INCLUDE(BundleConfig)
161#ENDIF(APPLE)
Note: See TracBrowser for help on using the repository browser.