Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem2/cmake/BuildConfig.cmake @ 2630

Last change on this file since 2630 was 2630, checked in by rgrieder, 15 years ago

Fixes:

  • Improved OpenAL include hack (no, it's not hackier now, I really mean 'improved')
  • Network and Audio shared linking for MinGW (using alut and openal sdk binaries now)
  • TCL and ZLIB find scripts may have found the wrong library when using dependency packages (happened with MATLAB libz.dll because of the PATH variable)
  • Disabled auto boost auto linking (also removes ugly hack in LibraryConfig.cmake)

Updates:

  • OpenAL 1.1 for MinGW
  • Ogre 1.4.9 for MinGW
  • Property svn:eol-style set to native
File size: 5.1 KB
RevLine 
[2579]1 #
[2626]2 #             ORXONOX - the hottest 3D action shooter ever to exist
3 #                             > www.orxonox.net <
[2579]4 #
[2626]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.
[2579]9 #
[2626]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.
[2579]14 #
[2626]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.
[2579]18 #
19 #
[2626]20 #  Author:
21 #    Reto Grieder
22 #  Description:
23 #    Configures the compilers and sets build options.
24 #    This also includes handling the OGRE plugins and the media directory.
[2579]25 #
26
[2612]27################ Misc Options ###################
[2582]28
[2612]29# Set binary output directories
30SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
31SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
32SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
33
[2618]34# Sets where to find the external libraries like OgreMain.dll at runtime
35# On Unix you should not have to change this at all.
[2621]36IF(NOT ORXONOX_RUNTIME_LIBRARY_DIRECTORY)
37  SET(ORXONOX_RUNTIME_LIBRARY_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
[2624]38ENDIF()
[2618]39
[2612]40# Set Debug build to default when not having multi-config generator like msvc
[2618]41IF(NOT CMAKE_CONFIGURATION_TYPES)
42  IF(NOT CMAKE_BUILD_TYPE)
43    SET(CMAKE_BUILD_TYPE Debug CACHE STRING
44        "Build types are: Debug, Release, MinSizeRel, RelWithDebInfo" FORCE)
[2624]45  ENDIF()
[2618]46  MARK_AS_ADVANCED(CLEAR CMAKE_BUILD_TYPE)
[2624]47ELSE()
[2618]48  IF(CMAKE_BUILD_TYPE)
49    SET(CMAKE_BUILD_TYPE CACHE STRING FORCE)
[2624]50  ENDIF()
[2618]51  MARK_AS_ADVANCED(CMAKE_BUILD_TYPE)
[2624]52ENDIF()
[2612]53
[2583]54OPTION(EXTRA_WARNINGS "Enable some extra warnings (heavily pollutes the output)")
[2582]55
[2621]56# Specify media directory
57GET_FILENAME_COMPONENT(_media_path "${CMAKE_SOURCE_DIR}/../media" ABSOLUTE)
58SET(ORXONOX_MEDIA_DIRECTORY ${_media_path} CACHE PATH
59    "Location of the media directory.")
60IF(NOT EXISTS ${ORXONOX_MEDIA_DIRECTORY})
61  MESSAGE(STATUS "Warning: The media directory does not exist ${ORXONOX_MEDIA_DIRECTORY}")
[2624]62ENDIF()
[2621]63
[2585]64# More plugins: Plugin_BSPSceneManager, Plugin_OctreeSceneManager
65# Render systems may be optional, but at least one has to be found in FindOgre
[2618]66SET(OGRE_PLUGINS_INT RenderSystem_GL RenderSystem_Direct3D9 Plugin_ParticleFX)
[2592]67IF(WIN32)
68  # CG program manager is probably DirectX related (not available under unix)
[2618]69  LIST(APPEND OGRE_PLUGINS_INT Plugin_CgProgramManager)
[2592]70ENDIF(WIN32)
[2618]71SET(OGRE_PLUGINS ${OGRE_PLUGINS_INT} CACHE STRING
72   "Specify which OGRE plugins to load. Existance check is performed.")
[2585]73
[2612]74# Check the plugins and determine the plugin folder
75# You can give a hint by setting the environment variable ENV{OGRE_PLUGIN_DIR}
76INCLUDE(CheckOGREPlugins)
[2618]77CHECK_OGRE_PLUGINS(${OGRE_PLUGINS})
[2585]78
[2582]79
[2612]80############## Compiler Config ##################
[2582]81
[2621]82INCLUDE(FlagUtilities)
[2582]83
[2621]84# Configure the compiler specific build options
85IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
86  INCLUDE(BuildConfigGCC)
87ELSEIF(MSVC)
88  INCLUDE(BuildConfigMSVC)
[2624]89ELSE()
[2621]90  MESSAGE(STATUS "Warning: Your compiler is not officially supported.")
[2624]91ENDIF()
[2621]92
93SET(BUILD_CONFIG_USER_SCRIPT "" CACHE FILEPATH
94    "Specify a CMake script if you wish to write your own build config.
95     See BuildConfigGCC.cmake or BuildConfigMSVC.cmake for examples.")
96IF(BUILD_CONFIG_USER_SCRIPT)
97  IF(EXISTS ${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT}.cmake)
98    INCLUDE(${BUILD_CONFIG_USER_SCRIPT})
99  ELSEIF(EXISTS ${BUILD_CONFIG_USER_SCRIPT})
100    INCLUDE(${BUILD_CONFIG_USER_SCRIPT})
101  ELSEIF(EXISTS ${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT})
102    INCLUDE(${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT})
[2624]103  ENDIF()
[2621]104ENDIF(BUILD_CONFIG_USER_SCRIPT)
105
106
[2612]107################ Test options ###################
108
109OPTION(ENABLE_TESTS "Enable build tests.")
110IF(ENABLE_TESTS)
111  ENABLE_TESTING()
112ENDIF(ENABLE_TESTS)
113
114OPTION(NETWORK_TESTING_ENABLED "Build network testing tools: i.e. chatclient chatserver and alike.")
115OPTION(NETWORKTRAFFIC_TESTING_ENABLED "Build dummyserver4 and dummyclient4.")
116
117
[2621]118####### Static/Dynamic linking defines ##########
[2612]119
[2630]120# Disable Boost auto linking completely
121ADD_COMPILER_FLAGS("-DBOOST_ALL_NO_LIB")
122
[2621]123# If no defines are specified, these libs get linked statically
124ADD_COMPILER_FLAGS("-DBOOST_ALL_DYN_LINK" WIN32 LINK_BOOST_DYNAMIC)
125ADD_COMPILER_FLAGS("-DENET_DLL"           WIN32 LINK_ENET_DYNAMIC)
126ADD_COMPILER_FLAGS("-DLUA_BUILD_AS_DLL"   WIN32 LINK_LUA_DYNAMIC)
127ADD_COMPILER_FLAGS("-DZLIB_DLL"           WIN32 LINK_ZLIB_DYNAMIC)
128
129# If no defines are specified, these libs get linked dynamically
130# You can change that optionally in the Cache.
131ADD_COMPILER_FLAGS("-DCEGUI_STATIC"       WIN32 NOT LINK_CEGUI_DYNAMIC)
132ADD_COMPILER_FLAGS("-DOGRE_STATIC_LIB"    WIN32 NOT LINK_OGRE_DYNAMIC)
133ADD_COMPILER_FLAGS("-DSTATIC_BUILD"       WIN32 NOT LINK_TCL_DYNAMIC)
Note: See TracBrowser for help on using the repository browser.