Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/testing/cmake/LibraryConfig.cmake @ 9287

Last change on this file since 9287 was 9077, checked in by landauf, 13 years ago

reverted changes of r9020 in LibraryConfig.cmake
fixed warning in Math.h
added include directories for tests
fixed runtime path in CTestCustom.cmake

  • Property svn:eol-style set to native
File size: 8.0 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 the external libraries. Whenever possible, the find scripts
24 #    from the CMake module path are used, but that required some adjustments
25 #    for certain libraries (Boost, OpenAL, TCL)
26 #
27
28INCLUDE(CompareVersionStrings)
29INCLUDE(FindPackageHandleStandardArgs)
30
31# Prevent CMake from finding libraries in the installation folder on Windows.
32# There might already be an installation from another compiler
33IF(WIN32)
34  LIST(REMOVE_ITEM CMAKE_SYSTEM_PREFIX_PATH  "${CMAKE_INSTALL_PREFIX}")
35  LIST(REMOVE_ITEM CMAKE_SYSTEM_LIBRARY_PATH "${CMAKE_INSTALL_PREFIX}/bin")
36ENDIF()
37
38############## Platform Scripts #################
39
40# On Windows using a package causes way less problems
41SET(_option_msg "Set this to true to use precompiled dependecy archives")
42IF(WIN32 OR APPLE)
43  OPTION(DEPENDENCY_PACKAGE_ENABLE "${_option_msg}" ON)
44ELSE()
45  OPTION(DEPENDENCY_PACKAGE_ENABLE "${_option_msg}" FALSE)
46ENDIF()
47
48# Scripts for specific library and CMake config
49INCLUDE(LibraryConfigTardis)
50
51IF(DEPENDENCY_PACKAGE_ENABLE)
52  IF(APPLE AND NOT EXISTS ${CMAKE_SOURCE_DIR}/dependencies)
53    # Let CMake automatically download and extract the dependency package on Mac OS X
54    # TODO: Handle download errors and always select newest package
55    SET(_dep_package_current "OrxonoxDeps_110428_2.0_OSX.tar.bz2")
56    SET(_dep_package_url "http://svn.orxonox.net/ogre/apple/precompiled_dependencies")
57    MESSAGE(STATUS "Downloading Mac OS X dependency package.")
58    FILE(DOWNLOAD
59      ${_dep_package_url}/${_dep_package_current}
60      ${CMAKE_SOURCE_DIR}/${_dep_package_current}
61    )
62    MESSAGE(STATUS "Extracting Mac OS X dependency package.")
63    EXECUTE_PROCESS(
64      COMMAND ${CMAKE_COMMAND} -E tar -jxf ${_dep_package_current}
65      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
66      OUTPUT_FILE ${CMAKE_BINARY_DIR}/dep_pack_extract_log.keep_me
67    )
68    # Delete the dependency archive once we no longer need it
69    FILE(REMOVE ${CMAKE_SOURCE_DIR}/${_dep_package_current})
70  ENDIF()
71
72  GET_FILENAME_COMPONENT(_dep_dir_1 ${CMAKE_SOURCE_DIR}/../dependencies ABSOLUTE)
73  GET_FILENAME_COMPONENT(_dep_dir_2 ${CMAKE_SOURCE_DIR}/../lib_dist ABSOLUTE)
74  IF(MINGW)
75    SET(_compiler_prefix mingw)
76  ELSEIF(MSVC80)
77    SET(_compiler_prefix msvc8)
78  ELSEIF(MSVC90)
79    SET(_compiler_prefix msvc9)
80  ELSEIF(MSVC10)
81    SET(_compiler_prefix msvc10)
82  ENDIF()
83  FIND_PATH(DEPENDENCY_PACKAGE_DIR
84    NAMES version.txt
85    PATHS
86      ${CMAKE_SOURCE_DIR}/dependencies
87      ${_dep_dir_1}
88      ${_dep_dir_2}
89    PATH_SUFFIXES ${_compiler_prefix} ${_compiler_prefix}/dependencies
90    NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
91  )
92  IF(NOT DEPENDENCY_PACKAGE_DIR)
93    MESSAGE(STATUS "Warning: Could not find dependency directory."
94                   "Disable LIBRARY_USE_PACKAGE if you have none intalled.")
95  ELSE()
96    IF(WIN32)
97      INCLUDE(PackageConfigMinGW)
98      INCLUDE(PackageConfigMSVC)
99      INCLUDE(PackageConfig) # For both msvc and mingw
100    ELSEIF(APPLE)
101      INCLUDE(PackageConfigOSX)
102    ENDIF(WIN32)
103  ENDIF()
104ENDIF(DEPENDENCY_PACKAGE_ENABLE)
105
106# User script
107SET(LIBRARY_CONFIG_USER_SCRIPT "" CACHE FILEPATH
108    "Specify a CMake script if you wish to write your own library path config.
109     See LibraryConfigTardis.cmake for an example.")
110IF(LIBRARY_CONFIG_USER_SCRIPT)
111  IF(EXISTS ${CMAKE_MODULE_PATH}/${LIBRARY_CONFIG_USER_SCRIPT})
112    INCLUDE(${CMAKE_MODULE_PATH}/${LIBRARY_CONFIG_USER_SCRIPT})
113  ENDIF()
114ENDIF(LIBRARY_CONFIG_USER_SCRIPT)
115
116
117############### Library finding #################
118# Performs the search and sets the variables    #
119
120#FIND_PACKAGE(ENet     1.2    REQUIRED)
121FIND_PACKAGE(CEGUI    0.6    REQUIRED)
122FIND_PACKAGE(Lua5.1          REQUIRED)
123FIND_PACKAGE(Ogg             REQUIRED)
124FIND_PACKAGE(Vorbis          REQUIRED)
125FIND_PACKAGE(ALUT            REQUIRED)
126FIND_PACKAGE(ZLIB            REQUIRED)
127
128IF(WIN32)
129  FIND_PACKAGE(DbgHelp)
130  FIND_PACKAGE(DirectX       REQUIRED)
131  IF(MSVC)
132    # Check whether we can use Visual Leak Detector
133    FIND_PACKAGE(VLD QUIET)
134  ENDIF()
135ENDIF()
136
137
138##### OpenAL #####
139FIND_PACKAGE(OpenAL REQUIRED)
140# Also use parent include dir (without AL/) for ALUT
141IF(OPENAL_INCLUDE_DIR MATCHES "/AL$")
142  GET_FILENAME_COMPONENT(ALT_OPENAL_INCLUDE_DIR ${OPENAL_INCLUDE_DIR} PATH)
143ENDIF()
144SET(OPENAL_INCLUDE_DIRS ${OPENAL_INCLUDE_DIR} ${ALT_OPENAL_INCLUDE_DIR})
145# Notfiy user
146FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenAL DEFAULT_MSG OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
147# Hide variables created by the script
148MARK_AS_ADVANCED(OPENAL_INCLUDE_DIR OPENAL_LIBRARY)
149
150##### Tcl #####
151# We only require Tcl, so avoid confusing user about other Tcl stuff by
152# applying a little workaround
153SET(Tclsh_FIND_QUIETLY TRUE)
154FIND_PACKAGE(TCL QUIET)
155# Display messages separately
156SET(TCL_FIND_QUIETLY FALSE)
157FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
158
159##### Boost #####
160# Expand the next statement if newer boost versions are released
161SET(Boost_ADDITIONAL_VERSIONS 1.40 1.40.0 1.41 1.41.0 1.42 1.42.0 1.43 1.43.0
162                              1.44 1.44.0 1.45 1.45.0 1.46 1.46.0 1.46.1)
163IF(NOT TARDIS)
164  FIND_PACKAGE(Boost 1.40 REQUIRED thread filesystem system date_time)
165ENDIF()
166# No auto linking, so this option is useless anyway
167MARK_AS_ADVANCED(Boost_LIB_DIAGNOSTIC_DEFINITIONS)
168
169##### OGRE #####
170FIND_PACKAGE(OGRE 1.6 REQUIRED)
171# For Ogre >= 1.7, we might need a threading library
172# Variables are either defined by dependency package config or by FindOGRE
173IF(OGRE_NEEDS_POCO)
174  FIND_PACKAGE(POCO REQUIRED)
175  # Always link against POCO too because of threading
176  SET(OGRE_LIBRARY ${OGRE_LIBRARY} ${POCO_LIBRARY})
177ELSEIF(OGRE_NEEDS_BOOST)
178  # Always link against boost too because of threading
179  SET(OGRE_LIBRARY ${OGRE_LIBRARY} ${Boost_THREAD_LIBRARY})
180ENDIF()
181
182
183####### Static/Dynamic linking options ##########
184
185# On Windows dynamically linked libraries need some special treatment
186# You may want to edit these settings if you provide your own libraries
187# Note: Default option in the libraries vary, but our default option is dynamic
188IF(WIN32)
189  OPTION(LINK_BOOST_DYNAMIC  "Link Boost dynamically on Windows" TRUE)
190  OPTION(LINK_CEGUI_DYNAMIC  "Link CEGUI dynamicylly on Windows" TRUE)
191  #OPTION(LINK_ENET_DYNAMIC   "Link ENet dynamically on Windows" TRUE)
192  OPTION(LINK_OGRE_DYNAMIC   "Link OGRE dynamically on Windows" TRUE)
193  OPTION(LINK_TCL_DYNAMIC    "Link TCL dynamically on Windows" TRUE)
194  OPTION(LINK_ZLIB_DYNAMIC   "Link ZLib dynamically on Windows" TRUE)
195  OPTION(LINK_LUA5.1_DYNAMIC "Link Lua dynamically on Windows" TRUE)
196
197  IF(DEPENDENCY_PACKAGE_ENABLE)
198    MARK_AS_ADVANCED(
199      LINK_BOOST_DYNAMIC LINK_CEGUI_DYNAMIC #LINK_ENET_DYNAMIC
200      LINK_OGRE_DYNAMIC  LINK_TCL_DYNAMIC   LINK_ZLIB_DYNAMIC
201      LINK_LUA5.1_DYNAMIC
202    )
203  ENDIF()
204ENDIF(WIN32)
205
206
207################# OGRE Plugins ##################
208
209# Check the plugins and determine the plugin folder
210# You can give a hint by setting the environment variable ENV{OGRE_PLUGIN_DIR}
211INCLUDE(CheckOGREPlugins)
212# Note 1: First argument (as string!) are for mandatory plugins, second one is
213#         for optional ones.
214# Note 2: Render systems are found automatically (at least one required)
215CHECK_OGRE_PLUGINS("Plugin_ParticleFX" "Plugin_CgProgramManager")
216
Note: See TracBrowser for help on using the repository browser.