Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/kicklib2/CMakeLists.txt @ 8311

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

Merged revisions 8098 - 8277 from kicklib to kicklib2.

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