1#------------------------------------------------------------------- 2# This file is part of the CMake build system for OGRE 3# (Object-oriented Graphics Rendering Engine) 4# For the latest info, see http://www.ogre3d.org/ 5# 6# The contents of this file are placed in the public domain. Feel 7# free to make use of it in any way you like. 8#------------------------------------------------------------------- 9 10# - Try to find OGRE 11# If you have multiple versions of Ogre installed, use the CMake or 12# the environment variable OGRE_HOME to point to the path where the 13# desired Ogre version can be found. 14# By default this script will look for a dynamic Ogre build. If you 15# need to link against static Ogre libraries, set the CMake variable 16# OGRE_STATIC to TRUE. 17# 18# Once done, this will define 19# 20# OGRE_FOUND - system has OGRE 21# OGRE_INCLUDE_DIRS - the OGRE include directories 22# OGRE_LIBRARIES - link these to use the OGRE core 23# OGRE_BINARY_REL - location of the main Ogre binary (win32 non-static only, release) 24# OGRE_BINARY_DBG - location of the main Ogre binaries (win32 non-static only, debug) 25# 26# Additionally this script searches for the following optional 27# parts of the Ogre package: 28# Plugin_BSPSceneManager, Plugin_CgProgramManager, 29# Plugin_OctreeSceneManager, Plugin_OctreeZone, 30# Plugin_ParticleFX, Plugin_PCZSceneManager, 31# RenderSystem_GL, RenderSystem_GL3Plus, 32# RenderSystem_GLES, RenderSystem_GLES2, 33# RenderSystem_Direct3D9, RenderSystem_Direct3D11 34# Paging, Terrain, Volume, Overlay 35# 36# For each of these components, the following variables are defined: 37# 38# OGRE_${COMPONENT}_FOUND - ${COMPONENT} is available 39# OGRE_${COMPONENT}_INCLUDE_DIRS - additional include directories for ${COMPONENT} 40# OGRE_${COMPONENT}_LIBRARIES - link these to use ${COMPONENT} 41# OGRE_${COMPONENT}_BINARY_REL - location of the component binary (win32 non-static only, release) 42# OGRE_${COMPONENT}_BINARY_DBG - location of the component binary (win32 non-static only, debug) 43# 44# Finally, the following variables are defined: 45# 46# OGRE_PLUGIN_DIR_REL - The directory where the release versions of 47# the OGRE plugins are located 48# OGRE_PLUGIN_DIR_DBG - The directory where the debug versions of 49# the OGRE plugins are located 50# OGRE_MEDIA_DIR - The directory where the OGRE sample media is 51# located, if available 52 53include(FindPkgMacros) 54include(PreprocessorUtils) 55findpkg_begin(OGRE) 56 57 58# Get path, convert backslashes as ${ENV_${var}} 59getenv_path(OGRE_HOME) 60getenv_path(OGRE_SDK) 61getenv_path(OGRE_SOURCE) 62getenv_path(OGRE_BUILD) 63getenv_path(OGRE_DEPENDENCIES_DIR) 64getenv_path(PROGRAMFILES) 65 66# Determine whether to search for a dynamic or static build 67if (OGRE_STATIC) 68 set(OGRE_LIB_SUFFIX "Static") 69else () 70 set(OGRE_LIB_SUFFIX "") 71endif () 72 73if(APPLE AND NOT OGRE_STATIC) 74 set(OGRE_LIBRARY_NAMES "Ogre${OGRE_LIB_SUFFIX}") 75else() 76 set(OGRE_LIBRARY_NAMES "OgreMain${OGRE_LIB_SUFFIX}") 77endif() 78get_debug_names(OGRE_LIBRARY_NAMES) 79 80# construct search paths from environmental hints and 81# OS specific guesses 82if (WIN32) 83 set(OGRE_PREFIX_GUESSES 84 ${ENV_PROGRAMFILES}/OGRE 85 C:/OgreSDK 86 ) 87elseif (UNIX) 88 set(OGRE_PREFIX_GUESSES 89 /opt/ogre 90 /opt/OGRE 91 /usr/lib${LIB_SUFFIX}/ogre 92 /usr/lib${LIB_SUFFIX}/OGRE 93 /usr/local/lib${LIB_SUFFIX}/ogre 94 /usr/local/lib${LIB_SUFFIX}/OGRE 95 $ENV{HOME}/ogre 96 $ENV{HOME}/OGRE 97 ) 98 if (APPLE) 99 set(OGRE_PREFIX_GUESSES 100 ${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx 101 ${OGRE_PREFIX_GUESSES} 102 ) 103 endif () 104endif () 105set(OGRE_PREFIX_PATH 106 ${OGRE_HOME} ${OGRE_SDK} ${ENV_OGRE_HOME} ${ENV_OGRE_SDK} 107 ${OGRE_PREFIX_GUESSES} 108) 109create_search_paths(OGRE) 110# If both OGRE_BUILD and OGRE_SOURCE are set, prepare to find Ogre in a build dir 111set(OGRE_PREFIX_SOURCE ${OGRE_SOURCE} ${ENV_OGRE_SOURCE}) 112set(OGRE_PREFIX_BUILD ${OGRE_BUILD} ${ENV_OGRE_BUILD}) 113set(OGRE_PREFIX_DEPENDENCIES_DIR ${OGRE_DEPENDENCIES_DIR} ${ENV_OGRE_DEPENDENCIES_DIR}) 114if (OGRE_PREFIX_SOURCE AND OGRE_PREFIX_BUILD) 115 foreach(dir ${OGRE_PREFIX_SOURCE}) 116 set(OGRE_INC_SEARCH_PATH ${dir}/OgreMain/include ${dir}/Dependencies/include ${dir}/iOSDependencies/include ${dir}/AndroidDependencies/include ${OGRE_INC_SEARCH_PATH}) 117 set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${dir}/Dependencies/lib ${dir}/iOSDependencies/lib ${dir}/AndroidDependencies/lib/${ANDROID_ABI} ${OGRE_LIB_SEARCH_PATH}) 118 set(OGRE_BIN_SEARCH_PATH ${dir}/Samples/Common/bin ${OGRE_BIN_SEARCH_PATH}) 119 endforeach(dir) 120 foreach(dir ${OGRE_PREFIX_BUILD}) 121 set(OGRE_INC_SEARCH_PATH ${dir}/include ${OGRE_INC_SEARCH_PATH}) 122 set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${OGRE_LIB_SEARCH_PATH}) 123 124 if (OGRE_BUILD_PLATFORM_APPLE_IOS) 125 set(OGRE_LIB_SEARCH_PATH ${dir}/lib/iphoneos ${dir}/lib/iphonesimulator ${OGRE_LIB_SEARCH_PATH}) 126 endif() 127 128 set(OGRE_BIN_SEARCH_PATH ${dir}/bin ${OGRE_BIN_SEARCH_PATH}) 129 set(OGRE_BIN_SEARCH_PATH ${dir}/Samples/Common/bin ${OGRE_BIN_SEARCH_PATH}) 130 endforeach(dir) 131 132 if (OGRE_PREFIX_DEPENDENCIES_DIR) 133 set(OGRE_INC_SEARCH_PATH ${OGRE_PREFIX_DEPENDENCIES_DIR}/include ${OGRE_INC_SEARCH_PATH}) 134 set(OGRE_LIB_SEARCH_PATH ${OGRE_PREFIX_DEPENDENCIES_DIR}/lib ${OGRE_LIB_SEARCH_PATH}) 135 set(OGRE_BIN_SEARCH_PATH ${OGRE_PREFIX_DEPENDENCIES_DIR}/bin ${OGRE_BIN_SEARCH_PATH}) 136 endif() 137else() 138 set(OGRE_PREFIX_SOURCE "NOTFOUND") 139 set(OGRE_PREFIX_BUILD "NOTFOUND") 140endif () 141 142# redo search if any of the environmental hints changed 143set(OGRE_COMPONENTS Paging Terrain Volume Overlay 144 Plugin_BSPSceneManager Plugin_CgProgramManager Plugin_OctreeSceneManager 145 Plugin_OctreeZone Plugin_PCZSceneManager Plugin_ParticleFX 146 RenderSystem_Direct3D11 RenderSystem_Direct3D9 RenderSystem_GL RenderSystem_GL3Plus RenderSystem_GLES RenderSystem_GLES2) 147set(OGRE_RESET_VARS 148 OGRE_CONFIG_INCLUDE_DIR OGRE_INCLUDE_DIR 149 OGRE_LIBRARY_FWK OGRE_LIBRARY_REL OGRE_LIBRARY_DBG 150 OGRE_PLUGIN_DIR_DBG OGRE_PLUGIN_DIR_REL OGRE_MEDIA_DIR) 151foreach (comp ${OGRE_COMPONENTS}) 152 set(OGRE_RESET_VARS ${OGRE_RESET_VARS} 153 OGRE_${comp}_INCLUDE_DIR OGRE_${comp}_LIBRARY_FWK 154 OGRE_${comp}_LIBRARY_DBG OGRE_${comp}_LIBRARY_REL 155 ) 156endforeach (comp) 157set(OGRE_PREFIX_WATCH ${OGRE_PREFIX_PATH} ${OGRE_PREFIX_SOURCE} ${OGRE_PREFIX_BUILD}) 158clear_if_changed(OGRE_PREFIX_WATCH ${OGRE_RESET_VARS}) 159 160if(NOT OGRE_STATIC) 161 # try to locate Ogre via pkg-config 162 use_pkgconfig(OGRE_PKGC "OGRE${OGRE_LIB_SUFFIX}") 163 164 # try to find framework on OSX 165 findpkg_framework(OGRE) 166else() 167 set(OGRE_LIBRARY_FWK "") 168endif() 169 170# locate Ogre include files 171find_path(OGRE_CONFIG_INCLUDE_DIR NAMES OgreBuildSettings.h HINTS ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} PATH_SUFFIXES "OGRE") 172find_path(OGRE_INCLUDE_DIR NAMES OgreRoot.h HINTS ${OGRE_CONFIG_INCLUDE_DIR} ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} PATH_SUFFIXES "OGRE") 173set(OGRE_INCOMPATIBLE FALSE) 174 175if (OGRE_INCLUDE_DIR) 176 if (NOT OGRE_CONFIG_INCLUDE_DIR) 177 set(OGRE_CONFIG_INCLUDE_DIR ${OGRE_INCLUDE_DIR}) 178 endif () 179 # determine Ogre version 180 file(READ ${OGRE_INCLUDE_DIR}/OgrePrerequisites.h OGRE_TEMP_VERSION_CONTENT) 181 get_preprocessor_entry(OGRE_TEMP_VERSION_CONTENT OGRE_VERSION_MAJOR OGRE_VERSION_MAJOR) 182 get_preprocessor_entry(OGRE_TEMP_VERSION_CONTENT OGRE_VERSION_MINOR OGRE_VERSION_MINOR) 183 get_preprocessor_entry(OGRE_TEMP_VERSION_CONTENT OGRE_VERSION_PATCH OGRE_VERSION_PATCH) 184 get_preprocessor_entry(OGRE_TEMP_VERSION_CONTENT OGRE_VERSION_NAME OGRE_VERSION_NAME) 185 set(OGRE_VERSION "${OGRE_VERSION_MAJOR}.${OGRE_VERSION_MINOR}.${OGRE_VERSION_PATCH}") 186 pkg_message(OGRE "Found Ogre ${OGRE_VERSION_NAME} (${OGRE_VERSION})") 187 188 # determine configuration settings 189 set(OGRE_CONFIG_HEADERS 190 ${OGRE_CONFIG_INCLUDE_DIR}/OgreBuildSettings.h 191 ${OGRE_CONFIG_INCLUDE_DIR}/OgreConfig.h 192 ) 193 foreach(CFG_FILE ${OGRE_CONFIG_HEADERS}) 194 if (EXISTS ${CFG_FILE}) 195 set(OGRE_CONFIG_HEADER ${CFG_FILE}) 196 break() 197 endif() 198 endforeach() 199 if (OGRE_CONFIG_HEADER) 200 file(READ ${OGRE_CONFIG_HEADER} OGRE_TEMP_CONFIG_CONTENT) 201 has_preprocessor_entry(OGRE_TEMP_CONFIG_CONTENT OGRE_STATIC_LIB OGRE_CONFIG_STATIC) 202 get_preprocessor_entry(OGRE_TEMP_CONFIG_CONTENT OGRE_THREAD_SUPPORT OGRE_CONFIG_THREADS) 203 get_preprocessor_entry(OGRE_TEMP_CONFIG_CONTENT OGRE_THREAD_PROVIDER OGRE_CONFIG_THREAD_PROVIDER) 204 get_preprocessor_entry(OGRE_TEMP_CONFIG_CONTENT OGRE_NO_FREEIMAGE OGRE_CONFIG_FREEIMAGE) 205 if (OGRE_CONFIG_STATIC AND OGRE_STATIC) 206 elseif (OGRE_CONFIG_STATIC OR OGRE_STATIC) 207 pkg_message(OGRE "Build type (static, dynamic) does not match the requested one.") 208 set(OGRE_INCOMPATIBLE TRUE) 209 endif () 210 else () 211 pkg_message(OGRE "Could not determine Ogre build configuration.") 212 set(OGRE_INCOMPATIBLE TRUE) 213 endif () 214else () 215 set(OGRE_INCOMPATIBLE FALSE) 216endif () 217 218find_library(OGRE_LIBRARY_REL NAMES ${OGRE_LIBRARY_NAMES} HINTS ${OGRE_LIB_SEARCH_PATH} ${OGRE_PKGC_LIBRARY_DIRS} ${OGRE_FRAMEWORK_SEARCH_PATH} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") 219find_library(OGRE_LIBRARY_DBG NAMES ${OGRE_LIBRARY_NAMES_DBG} HINTS ${OGRE_LIB_SEARCH_PATH} ${OGRE_PKGC_LIBRARY_DIRS} ${OGRE_FRAMEWORK_SEARCH_PATH} PATH_SUFFIXES "" "Debug") 220make_library_set(OGRE_LIBRARY) 221 222if(APPLE) 223 set(OGRE_LIBRARY_DBG ${OGRE_LIB_SEARCH_PATH}) 224endif() 225if (OGRE_INCOMPATIBLE) 226 set(OGRE_LIBRARY "NOTFOUND") 227endif () 228 229set(OGRE_INCLUDE_DIR ${OGRE_CONFIG_INCLUDE_DIR} ${OGRE_INCLUDE_DIR}) 230list(REMOVE_DUPLICATES OGRE_INCLUDE_DIR) 231findpkg_finish(OGRE) 232add_parent_dir(OGRE_INCLUDE_DIRS OGRE_INCLUDE_DIR) 233if (OGRE_SOURCE) 234 # If working from source rather than SDK, add samples include 235 set(OGRE_INCLUDE_DIRS ${OGRE_INCLUDE_DIRS} "${OGRE_SOURCE}/Samples/Common/include") 236endif() 237 238mark_as_advanced(OGRE_CONFIG_INCLUDE_DIR OGRE_MEDIA_DIR OGRE_PLUGIN_DIR_REL OGRE_PLUGIN_DIR_DBG) 239 240if (NOT OGRE_FOUND) 241 return() 242endif () 243 244 245# look for required Ogre dependencies in case of static build and/or threading 246if (OGRE_STATIC) 247 set(OGRE_DEPS_FOUND TRUE) 248 find_package(Cg QUIET) 249 find_package(DirectX QUIET) 250 find_package(FreeImage QUIET) 251 find_package(Freetype QUIET) 252 find_package(OpenGL QUIET) 253 find_package(OpenGLES QUIET) 254 find_package(OpenGLES2 QUIET) 255 find_package(ZLIB QUIET) 256 find_package(ZZip QUIET) 257 if (UNIX AND NOT APPLE AND NOT ANDROID) 258 find_package(X11 QUIET) 259 find_library(XAW_LIBRARY NAMES Xaw Xaw7 PATHS ${DEP_LIB_SEARCH_DIR} ${X11_LIB_SEARCH_PATH}) 260 if (NOT XAW_LIBRARY OR NOT X11_Xt_FOUND) 261 set(X11_FOUND FALSE) 262 endif () 263 endif () 264 if (APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) 265 find_package(Cocoa QUIET) 266 find_package(Carbon QUIET) 267 find_package(CoreVideo QUIET) 268 if (NOT Cocoa_FOUND OR NOT Carbon_FOUND OR NOT CoreVideo_FOUND) 269 set(OGRE_DEPS_FOUND FALSE) 270 endif () 271 endif () 272 273 set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${ZZip_LIBRARIES} ${ZLIB_LIBRARIES} ${FreeImage_LIBRARIES} ${FREETYPE_LIBRARIES} ) 274 275 if (APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS AND NOT ANDROID) 276 set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${X11_LIBRARIES} ${X11_Xt_LIBRARIES} ${XAW_LIBRARY} ${X11_Xrandr_LIB} ${Carbon_LIBRARIES} ${Cocoa_LIBRARIES}) 277 endif() 278 279 if (NOT ZLIB_FOUND OR NOT ZZip_FOUND) 280 set(OGRE_DEPS_FOUND FALSE) 281 endif () 282 if (NOT FreeImage_FOUND AND NOT OGRE_CONFIG_FREEIMAGE) 283 set(OGRE_DEPS_FOUND FALSE) 284 endif () 285 if (NOT FREETYPE_FOUND) 286 set(OGRE_DEPS_FOUND FALSE) 287 endif () 288 if (UNIX AND NOT APPLE AND NOT ANDROID) 289 if (NOT X11_FOUND) 290 set(OGRE_DEPS_FOUND FALSE) 291 endif () 292 endif () 293endif() 294 if (OGRE_CONFIG_THREADS) 295 if (OGRE_CONFIG_THREAD_PROVIDER EQUAL 1) 296 if (OGRE_STATIC) 297 set(Boost_USE_STATIC_LIBS TRUE) 298 if(OGRE_BUILD_PLATFORM_APPLE_IOS) 299 set(Boost_USE_MULTITHREADED OFF) 300 endif() 301 endif() 302 303 set(OGRE_BOOST_COMPONENTS thread date_time) 304 find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) 305 if(Boost_FOUND AND Boost_VERSION GREATER 104900) 306 if(Boost_VERSION GREATER 105300) 307 set(OGRE_BOOST_COMPONENTS thread date_time system atomic chrono) 308 else() 309 set(OGRE_BOOST_COMPONENTS thread date_time system chrono) 310 endif() 311 endif() 312 313 find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) 314 if (NOT Boost_THREAD_FOUND) 315 set(OGRE_DEPS_FOUND FALSE) 316 else () 317 set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES}) 318 set(OGRE_INCLUDE_DIRS ${OGRE_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) 319 endif () 320 elseif (OGRE_CONFIG_THREAD_PROVIDER EQUAL 2) 321 find_package(POCO QUIET) 322 if (NOT POCO_FOUND) 323 set(OGRE_DEPS_FOUND FALSE) 324 else () 325 set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${POCO_LIBRARIES}) 326 set(OGRE_INCLUDE_DIRS ${OGRE_INCLUDE_DIRS} ${POCO_INCLUDE_DIRS}) 327 endif () 328 elseif (OGRE_CONFIG_THREAD_PROVIDER EQUAL 3) 329 find_package(TBB QUIET) 330 if (NOT TBB_FOUND) 331 set(OGRE_DEPS_FOUND FALSE) 332 else () 333 set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${TBB_LIBRARIES}) 334 set(OGRE_INCLUDE_DIRS ${OGRE_INCLUDE_DIRS} ${TBB_INCLUDE_DIRS}) 335 endif () 336 endif () 337 endif () 338if (OGRE_STATIC) 339 if (NOT OGRE_DEPS_FOUND) 340 pkg_message(OGRE "Could not find all required dependencies for the Ogre package.") 341 set(OGRE_FOUND FALSE) 342 endif () 343endif () 344 345if (NOT OGRE_FOUND) 346 return() 347endif () 348 349 350get_filename_component(OGRE_LIBRARY_DIR_REL "${OGRE_LIBRARY_REL}" PATH) 351get_filename_component(OGRE_LIBRARY_DIR_DBG "${OGRE_LIBRARY_DBG}" PATH) 352set(OGRE_LIBRARY_DIRS ${OGRE_LIBRARY_DIR_REL} ${OGRE_LIBRARY_DIR_DBG}) 353 354# find binaries 355if (NOT OGRE_STATIC) 356 if (WIN32) 357 find_file(OGRE_BINARY_REL NAMES "OgreMain.dll" HINTS ${OGRE_BIN_SEARCH_PATH} 358 PATH_SUFFIXES "" Release RelWithDebInfo MinSizeRel) 359 find_file(OGRE_BINARY_DBG NAMES "OgreMain_d.dll" HINTS ${OGRE_BIN_SEARCH_PATH} 360 PATH_SUFFIXES "" Debug ) 361 endif() 362 mark_as_advanced(OGRE_BINARY_REL OGRE_BINARY_DBG) 363endif() 364 365 366######################################################### 367# Find Ogre components 368######################################################### 369 370set(OGRE_COMPONENT_SEARCH_PATH_REL 371 ${OGRE_LIBRARY_DIR_REL}/.. 372 ${OGRE_LIBRARY_DIR_REL}/../.. 373 ${OGRE_BIN_SEARCH_PATH} 374) 375set(OGRE_COMPONENT_SEARCH_PATH_DBG 376 ${OGRE_LIBRARY_DIR_DBG}/.. 377 ${OGRE_LIBRARY_DIR_DBG}/../.. 378 ${OGRE_BIN_SEARCH_PATH} 379) 380 381macro(ogre_find_component COMPONENT HEADER) 382 findpkg_begin(OGRE_${COMPONENT}) 383 find_path(OGRE_${COMPONENT}_INCLUDE_DIR NAMES ${HEADER} HINTS ${OGRE_INCLUDE_DIRS} ${OGRE_PREFIX_SOURCE} PATH_SUFFIXES ${COMPONENT} OGRE/${COMPONENT} Components/${COMPONENT}/include) 384 set(OGRE_${COMPONENT}_LIBRARY_NAMES "Ogre${COMPONENT}${OGRE_LIB_SUFFIX}") 385 get_debug_names(OGRE_${COMPONENT}_LIBRARY_NAMES) 386 find_library(OGRE_${COMPONENT}_LIBRARY_REL NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES} HINTS ${OGRE_LIBRARY_DIR_REL} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") 387 find_library(OGRE_${COMPONENT}_LIBRARY_DBG NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES_DBG} HINTS ${OGRE_LIBRARY_DIR_DBG} PATH_SUFFIXES "" "Debug") 388 make_library_set(OGRE_${COMPONENT}_LIBRARY) 389 findpkg_finish(OGRE_${COMPONENT}) 390 if (OGRE_${COMPONENT}_FOUND) 391 # find binaries 392 if (NOT OGRE_STATIC) 393 if (WIN32) 394 find_file(OGRE_${COMPONENT}_BINARY_REL NAMES "Ogre${COMPONENT}.dll" HINTS ${OGRE_COMPONENT_SEARCH_PATH_REL} PATH_SUFFIXES "" bin bin/Release bin/RelWithDebInfo bin/MinSizeRel Release) 395 find_file(OGRE_${COMPONENT}_BINARY_DBG NAMES "Ogre${COMPONENT}_d.dll" HINTS ${OGRE_COMPONENT_SEARCH_PATH_DBG} PATH_SUFFIXES "" bin bin/Debug Debug) 396 endif() 397 mark_as_advanced(OGRE_${COMPONENT}_BINARY_REL OGRE_${COMPONENT}_BINARY_DBG) 398 endif() 399 endif() 400endmacro() 401 402# look for Paging component 403ogre_find_component(Paging OgrePaging.h) 404# look for Terrain component 405ogre_find_component(Terrain OgreTerrain.h) 406# look for Property component 407ogre_find_component(Property OgreProperty.h) 408# look for RTShaderSystem component 409ogre_find_component(RTShaderSystem OgreRTShaderSystem.h) 410# look for Volume component 411ogre_find_component(Volume OgreVolumePrerequisites.h) 412# look for Overlay component 413ogre_find_component(Overlay OgreOverlaySystem.h) 414 415######################################################### 416# Find Ogre plugins 417######################################################### 418macro(ogre_find_plugin PLUGIN HEADER) 419 # On Unix, the plugins might have no prefix 420 if (CMAKE_FIND_LIBRARY_PREFIXES) 421 set(TMP_CMAKE_LIB_PREFIX ${CMAKE_FIND_LIBRARY_PREFIXES}) 422 set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "") 423 endif() 424 425 # strip RenderSystem_ or Plugin_ prefix from plugin name 426 string(REPLACE "RenderSystem_" "" PLUGIN_TEMP ${PLUGIN}) 427 string(REPLACE "Plugin_" "" PLUGIN_NAME ${PLUGIN_TEMP}) 428 429 # header files for plugins are not usually needed, but find them anyway if they are present 430 set(OGRE_PLUGIN_PATH_SUFFIXES 431 PlugIns PlugIns/${PLUGIN_NAME} Plugins Plugins/${PLUGIN_NAME} ${PLUGIN} 432 RenderSystems RenderSystems/${PLUGIN_NAME} ${ARGN}) 433 find_path(OGRE_${PLUGIN}_INCLUDE_DIR NAMES ${HEADER} 434 HINTS ${OGRE_INCLUDE_DIRS} ${OGRE_PREFIX_SOURCE} 435 PATH_SUFFIXES ${OGRE_PLUGIN_PATH_SUFFIXES}) 436 # find link libraries for plugins 437 set(OGRE_${PLUGIN}_LIBRARY_NAMES "${PLUGIN}${OGRE_LIB_SUFFIX}") 438 get_debug_names(OGRE_${PLUGIN}_LIBRARY_NAMES) 439 set(OGRE_${PLUGIN}_LIBRARY_FWK ${OGRE_LIBRARY_FWK}) 440 441 find_library(OGRE_${PLUGIN}_LIBRARY_REL NAMES ${OGRE_${PLUGIN}_LIBRARY_NAMES} 442 HINTS "${OGRE_BUILD}/lib" ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE OGRE-${OGRE_VERSION} opt Release Release/opt RelWithDebInfo RelWithDebInfo/opt MinSizeRel MinSizeRel/opt) 443 find_library(OGRE_${PLUGIN}_LIBRARY_DBG NAMES ${OGRE_${PLUGIN}_LIBRARY_NAMES_DBG} 444 HINTS "${OGRE_BUILD}/lib" ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE OGRE-${OGRE_VERSION} opt Debug Debug/opt) 445 make_library_set(OGRE_${PLUGIN}_LIBRARY) 446 447 if (OGRE_${PLUGIN}_LIBRARY OR OGRE_${PLUGIN}_INCLUDE_DIR) 448 set(OGRE_${PLUGIN}_FOUND TRUE) 449 if (OGRE_${PLUGIN}_INCLUDE_DIR) 450 set(OGRE_${PLUGIN}_INCLUDE_DIRS ${OGRE_${PLUGIN}_INCLUDE_DIR}) 451 endif() 452 set(OGRE_${PLUGIN}_LIBRARIES ${OGRE_${PLUGIN}_LIBRARY}) 453 endif () 454 455 mark_as_advanced(OGRE_${PLUGIN}_INCLUDE_DIR OGRE_${PLUGIN}_LIBRARY_REL OGRE_${PLUGIN}_LIBRARY_DBG OGRE_${PLUGIN}_LIBRARY_FWK) 456 457 # look for plugin dirs 458 if (OGRE_${PLUGIN}_FOUND) 459 if (NOT OGRE_PLUGIN_DIR_REL OR NOT OGRE_PLUGIN_DIR_DBG) 460 if (WIN32) 461 set(OGRE_PLUGIN_SEARCH_PATH_REL 462 ${OGRE_LIBRARY_DIR_REL}/.. 463 ${OGRE_LIBRARY_DIR_REL}/../.. 464 ${OGRE_BIN_SEARCH_PATH} 465 ) 466 set(OGRE_PLUGIN_SEARCH_PATH_DBG 467 ${OGRE_LIBRARY_DIR_DBG}/.. 468 ${OGRE_LIBRARY_DIR_DBG}/../.. 469 ${OGRE_BIN_SEARCH_PATH} 470 ) 471 find_path(OGRE_PLUGIN_DIR_REL NAMES "${PLUGIN}.dll" HINTS ${OGRE_PLUGIN_SEARCH_PATH_REL} 472 PATH_SUFFIXES "" bin bin/Release bin/RelWithDebInfo bin/MinSizeRel Release) 473 find_path(OGRE_PLUGIN_DIR_DBG NAMES "${PLUGIN}_d.dll" HINTS ${OGRE_PLUGIN_SEARCH_PATH_DBG} 474 PATH_SUFFIXES "" bin bin/Debug Debug) 475 elseif (UNIX) 476 get_filename_component(OGRE_PLUGIN_DIR_TMP ${OGRE_${PLUGIN}_LIBRARY_REL} PATH) 477 set(OGRE_PLUGIN_DIR_REL ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (release)" FORCE) 478 get_filename_component(OGRE_PLUGIN_DIR_TMP ${OGRE_${PLUGIN}_LIBRARY_DBG} PATH) 479 set(OGRE_PLUGIN_DIR_DBG ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (debug)" FORCE) 480 endif () 481 endif () 482 483 # find binaries 484 if (NOT OGRE_STATIC) 485 if (WIN32) 486 find_file(OGRE_${PLUGIN}_REL NAMES "${PLUGIN}.dll" HINTS ${OGRE_PLUGIN_DIR_REL}) 487 find_file(OGRE_${PLUGIN}_DBG NAMES "${PLUGIN}_d.dll" HINTS ${OGRE_PLUGIN_DIR_DBG}) 488 endif() 489 mark_as_advanced(OGRE_${PLUGIN}_REL OGRE_${PLUGIN}_DBG) 490 endif() 491 492 endif () 493 494 if (TMP_CMAKE_LIB_PREFIX) 495 set(CMAKE_FIND_LIBRARY_PREFIXES ${TMP_CMAKE_LIB_PREFIX}) 496 endif () 497endmacro(ogre_find_plugin) 498 499ogre_find_plugin(Plugin_PCZSceneManager OgrePCZSceneManager.h PCZ PlugIns/PCZSceneManager/include) 500ogre_find_plugin(Plugin_OctreeZone OgreOctreeZone.h PCZ PlugIns/OctreeZone/include) 501ogre_find_plugin(Plugin_BSPSceneManager OgreBspSceneManager.h PlugIns/BSPSceneManager/include) 502ogre_find_plugin(Plugin_CgProgramManager OgreCgProgram.h PlugIns/CgProgramManager/include) 503ogre_find_plugin(Plugin_OctreeSceneManager OgreOctreeSceneManager.h PlugIns/OctreeSceneManager/include) 504ogre_find_plugin(Plugin_ParticleFX OgreParticleFXPrerequisites.h PlugIns/ParticleFX/include) 505ogre_find_plugin(RenderSystem_GL OgreGLRenderSystem.h RenderSystems/GL/include) 506ogre_find_plugin(RenderSystem_GL3Plus OgreGL3PlusRenderSystem.h RenderSystems/GL3Plus/include) 507ogre_find_plugin(RenderSystem_GLES OgreGLESRenderSystem.h RenderSystems/GLES/include) 508ogre_find_plugin(RenderSystem_GLES2 OgreGLES2RenderSystem.h RenderSystems/GLES2/include) 509ogre_find_plugin(RenderSystem_Direct3D9 OgreD3D9RenderSystem.h RenderSystems/Direct3D9/include) 510ogre_find_plugin(RenderSystem_Direct3D11 OgreD3D11RenderSystem.h RenderSystems/Direct3D11/include) 511 512if (OGRE_STATIC) 513 # check if dependencies for plugins are met 514 if (NOT DirectX_FOUND) 515 set(OGRE_RenderSystem_Direct3D9_FOUND FALSE) 516 endif () 517 if (NOT DirectX_D3D11_FOUND) 518 set(OGRE_RenderSystem_Direct3D11_FOUND FALSE) 519 endif () 520 if (NOT OPENGL_FOUND) 521 set(OGRE_RenderSystem_GL_FOUND FALSE) 522 endif () 523 if (NOT OPENGL_FOUND) 524 set(OGRE_RenderSystem_GL3Plus_FOUND FALSE) 525 endif () 526 if (NOT OPENGLES_FOUND) 527 set(OGRE_RenderSystem_GLES_FOUND FALSE) 528 endif () 529 if (NOT OPENGLES2_FOUND) 530 set(OGRE_RenderSystem_GLES2_FOUND FALSE) 531 endif () 532 if (NOT Cg_FOUND) 533 set(OGRE_Plugin_CgProgramManager_FOUND FALSE) 534 endif () 535 536 set(OGRE_RenderSystem_Direct3D9_LIBRARIES ${OGRE_RenderSystem_Direct3D9_LIBRARIES} 537 ${DirectX_LIBRARIES} 538 ) 539 540 set(OGRE_RenderSystem_Direct3D11_LIBRARIES ${OGRE_RenderSystem_Direct3D11_LIBRARIES} 541 ${DirectX_D3D11_LIBRARIES} 542 ) 543 set(OGRE_RenderSystem_GL_LIBRARIES ${OGRE_RenderSystem_GL_LIBRARIES} 544 ${OPENGL_LIBRARIES} 545 ) 546 set(OGRE_RenderSystem_GL3Plus_LIBRARIES ${OGRE_RenderSystem_GL3Plus_LIBRARIES} 547 ${OPENGL_LIBRARIES} 548 ) 549 set(OGRE_RenderSystem_GLES_LIBRARIES ${OGRE_RenderSystem_GLES_LIBRARIES} 550 ${OPENGLES_LIBRARIES} 551 ) 552 set(OGRE_RenderSystem_GLES2_LIBRARIES ${OGRE_RenderSystem_GLES2_LIBRARIES} 553 ${OPENGLES2_LIBRARIES} 554 ) 555 set(OGRE_Plugin_CgProgramManager_LIBRARIES ${OGRE_Plugin_CgProgramManager_LIBRARIES} 556 ${Cg_LIBRARIES} 557 ) 558endif () 559 560# look for the media directory 561set(OGRE_MEDIA_SEARCH_PATH 562 ${OGRE_SOURCE} 563 ${OGRE_LIBRARY_DIR_REL}/.. 564 ${OGRE_LIBRARY_DIR_DBG}/.. 565 ${OGRE_LIBRARY_DIR_REL}/../.. 566 ${OGRE_LIBRARY_DIR_DBG}/../.. 567 ${OGRE_PREFIX_SOURCE} 568) 569set(OGRE_MEDIA_SEARCH_SUFFIX 570 Samples/Media 571 Media 572 media 573 share/OGRE/media 574 share/OGRE/Media 575) 576 577clear_if_changed(OGRE_PREFIX_WATCH OGRE_MEDIA_DIR) 578find_path(OGRE_MEDIA_DIR NAMES packs/cubemapsJS.zip HINTS ${OGRE_MEDIA_SEARCH_PATH} 579 PATHS ${OGRE_PREFIX_PATH} PATH_SUFFIXES ${OGRE_MEDIA_SEARCH_SUFFIX}) 580 581