Mercurial > sumwars
changeset 2674:7d5b10cab374 gussoundtest
refs #72: updated Ogre cmake scripts and added a warning when plugins dir is not found
author | Stefan Stammberger <fusion44> |
---|---|
date | Thu, 13 Mar 2014 20:49:45 +0100 |
parents | 990f8a441e83 |
children | 03eeefbd2ce1 |
files | CMakeLists.txt CMakeModules/CheckOGREPlugins.cmake CMakeModules/FindOGRE.cmake CMakeModules/FindPkgMacros.cmake CMakeModules/OgreGetVersion.cmake |
diffstat | 5 files changed, 144 insertions(+), 224 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Thu Mar 13 19:56:13 2014 +0100 +++ b/CMakeLists.txt Thu Mar 13 20:49:45 2014 +0100 @@ -156,6 +156,10 @@ SET(SUMWARS_OGRE_PLUGIN_DIR_REL ${OGRE_PLUGIN_DIR_REL}) SET(SUMWARS_OGRE_PLUGIN_DIR_DBG ${OGRE_PLUGIN_DIR_DBG}) +IF("${OGRE_PLUGIN_DIR_REL}" STREQUAL "") + MESSAGE(WARNING "Ogre plugin dir not found! plugins.cfg may have to be adjusted manually!") +ENDIF() + IF( WIN32 )# On Windows the plugins are distributed with the executable. IF( SUMWARS_PORTABLE_MODE OR SUMWARS_STANDALONE_MODE) SET(SUMWARS_OGRE_PLUGIN_DIR_REL "./")
--- a/CMakeModules/CheckOGREPlugins.cmake Thu Mar 13 19:56:13 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ - # - # ORXONOX - the hottest 3D action shooter ever to exist - # > www.orxonox.net < - # - # This program is free software; you can redistribute it and/or - # modify it under the terms of the GNU General Public License - # as published by the Free Software Foundation; either version 2 - # of the License, or (at your option) any later version. - # - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - # - # You should have received a copy of the GNU General Public License along - # with this program; if not, write to the Free Software Foundation, - # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - # - # - # Author: - # Reto Grieder - # Description: - # Function that checks each OGRE plugin for existance. Also looks for debug - # versions and sets them accordingly. - # All the plugins specified as function arguments have to be found or the - # script will issue a fatal error. Additionally, all release plugins have - # to be found in the same folder. Analogously for debug plugins. - # Output: - # OGRE_PLUGINS_FOLDER_DEBUG Folder with the debug plugins - # OGRE_PLUGINS_FOLDER_RELEASE Folder with the release plugins - # OGRE_PLUGINS_DEBUG Names of the debug plugins without extension - # OGRE_PLUGINS_RELEASE Names of the release plugins without ext. - # Note: - # You must not specify render systems as input. That will be taken care of - # automatically. - # - -FUNCTION(CHECK_OGRE_PLUGINS) - - SET(OGRE_PLUGINS ${ARGN}) - - IF(WIN32) - # On Windows we need only *.dll, not *.lib. Especially the MSVC generator doesn't look for *.dll - SET(CMAKE_FIND_LIBRARY_SUFFIXES .dll) - ENDIF(WIN32) - # Do not prefix "lib" on any platform - SET(CMAKE_FIND_LIBRARY_PREFIXES "") - - SET(OGRE_RENDER_SYSTEMS RenderSystem_GL RenderSystem_Direct3D9) - SET(OGRE_RENDER_SYSTEM_FOUND FALSE) - FOREACH(_plugin ${OGRE_PLUGINS} ${OGRE_RENDER_SYSTEMS}) - FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_OPTIMIZED - NAMES ${_plugin} - PATHS $ENV{OGRE_HOME} $ENV{OGRE_PLUGIN_DIR} - PATH_SUFFIXES bin/Release bin/release Release release lib lib/OGRE bin - ) - FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_DEBUG - NAMES ${_plugin}d ${_plugin}_d ${_plugin} - PATHS $ENV{OGRE_HOME} $ENV{OGRE_PLUGIN_DIR} - PATH_SUFFIXES bin/Debug bin/debug Debug debug lib lib/OGRE bin - ) - # We only need at least one render system. Check at the end. - IF(NOT ${_plugin} MATCHES "RenderSystem") - IF(NOT OGRE_PLUGIN_${_plugin}_OPTIMIZED) - MESSAGE(FATAL_ERROR "Could not find OGRE plugin named ${_plugin}") - ENDIF() - ELSEIF(OGRE_PLUGIN_${_plugin}_OPTIMIZED) - SET(OGRE_RENDER_SYSTEM_FOUND TRUE) - ENDIF() - - IF(OGRE_PLUGIN_${_plugin}_OPTIMIZED) - # If debug version is not available, release will do as well - IF(OGRE_PLUGIN_${_plugin}_DEBUG STREQUAL OGRE_PLUGIN_${_plugin}_OPTIMIZED) - # In this case the library finder didn't find real debug versions - SET(OGRE_PLUGIN_${_plugin}_DEBUG "OGRE_PLUGIN_${_plugin}_DEBUG-NOTFOUND" CACHE STRING "" FORCE) - ENDIF() - MARK_AS_ADVANCED(OGRE_PLUGIN_${_plugin}_OPTIMIZED OGRE_PLUGIN_${_plugin}_DEBUG) - - ### Set variables to configure orxonox.ini correctly afterwards in bin/ ### - # Check and set the folders - GET_FILENAME_COMPONENT(_plugins_folder ${OGRE_PLUGIN_${_plugin}_OPTIMIZED} PATH) - IF(OGRE_PLUGINS_FOLDER_RELEASE AND NOT OGRE_PLUGINS_FOLDER_RELEASE STREQUAL _plugins_folder) - MESSAGE(FATAL_ERROR "Ogre release plugins have to be in the same folder!") - ENDIF() - SET(OGRE_PLUGINS_FOLDER_RELEASE ${_plugins_folder}) - IF(OGRE_PLUGIN_${_plugin}_DEBUG) - GET_FILENAME_COMPONENT(_plugins_folder ${OGRE_PLUGIN_${_plugin}_DEBUG} PATH) - ENDIF() - IF(OGRE_PLUGINS_FOLDER_DEBUG AND NOT OGRE_PLUGINS_FOLDER_DEBUG STREQUAL _plugins_folder) - MESSAGE(FATAL_ERROR "Ogre debug plugins have to be in the same folder!") - ENDIF() - SET(OGRE_PLUGINS_FOLDER_DEBUG ${_plugins_folder}) - - # Create a list with the plugins for release and debug configurations - LIST(APPEND OGRE_PLUGINS_RELEASE ${_plugin}) - # Determine debug postfix ("d" or "_d" or none) - IF(OGRE_PLUGIN_${_plugin}_DEBUG MATCHES "_d\\.|_d$") - LIST(APPEND OGRE_PLUGINS_DEBUG "${_plugin}_d") - ELSEIF(OGRE_PLUGIN_${_plugin}_DEBUG MATCHES "d\\.|d$") - LIST(APPEND OGRE_PLUGINS_DEBUG "${_plugin}d") - ELSE() - LIST(APPEND OGRE_PLUGINS_DEBUG "${_plugin}") - ENDIF() - ENDIF(OGRE_PLUGIN_${_plugin}_OPTIMIZED) - ENDFOREACH(_plugin) - IF(NOT OGRE_RENDER_SYSTEM_FOUND) - MESSAGE(FATAL_ERROR "Could not find an OGRE render system plugin") - ENDIF() - - # List has to be comma separated for orxonox.ini - STRING(REPLACE ";" ", " OGRE_PLUGINS_RELEASE "${OGRE_PLUGINS_RELEASE}") - STRING(REPLACE ";" ", " OGRE_PLUGINS_DEBUG "${OGRE_PLUGINS_DEBUG}") - - # Set variables outside function scope - SET(OGRE_PLUGINS_FOLDER_DEBUG ${OGRE_PLUGINS_FOLDER_DEBUG} PARENT_SCOPE) - SET(OGRE_PLUGINS_FOLDER_RELEASE ${OGRE_PLUGINS_FOLDER_RELEASE} PARENT_SCOPE) - SET(OGRE_PLUGINS_RELEASE ${OGRE_PLUGINS_RELEASE} PARENT_SCOPE) - SET(OGRE_PLUGINS_DEBUG ${OGRE_PLUGINS_DEBUG} PARENT_SCOPE) - -ENDFUNCTION(CHECK_OGRE_PLUGINS)
--- a/CMakeModules/FindOGRE.cmake Thu Mar 13 19:56:13 2014 +0100 +++ b/CMakeModules/FindOGRE.cmake Thu Mar 13 20:49:45 2014 +0100 @@ -28,8 +28,10 @@ # Plugin_BSPSceneManager, Plugin_CgProgramManager, # Plugin_OctreeSceneManager, Plugin_OctreeZone, # Plugin_ParticleFX, Plugin_PCZSceneManager, -# RenderSystem_GL, RenderSystem_Direct3D9, -# Paging, Terrain, RTShaderSystem +# RenderSystem_GL, RenderSystem_GL3Plus, +# RenderSystem_GLES, RenderSystem_GLES2, +# RenderSystem_Direct3D9, RenderSystem_Direct3D11 +# Paging, Terrain, Volume, Overlay # # For each of these components, the following variables are defined: # @@ -68,14 +70,13 @@ set(OGRE_LIB_SUFFIX "") endif () - -if(APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) +if(APPLE AND NOT OGRE_STATIC) set(OGRE_LIBRARY_NAMES "Ogre${OGRE_LIB_SUFFIX}") else() set(OGRE_LIBRARY_NAMES "OgreMain${OGRE_LIB_SUFFIX}") endif() get_debug_names(OGRE_LIBRARY_NAMES) - + # construct search paths from environmental hints and # OS specific guesses if (WIN32) @@ -94,30 +95,46 @@ $ENV{HOME}/ogre $ENV{HOME}/OGRE ) + if (APPLE) + set(OGRE_PREFIX_GUESSES + ${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx + ${OGRE_PREFIX_GUESSES} + ) + endif () endif () set(OGRE_PREFIX_PATH ${OGRE_HOME} ${OGRE_SDK} ${ENV_OGRE_HOME} ${ENV_OGRE_SDK} - ${ENV_OGRE_HOME}/build ${ENV_OGRE_HOME}/.build11 ${OGRE_PREFIX_GUESSES} ) create_search_paths(OGRE) -MESSAGE(STATUS ".. OGRE_PREFIX_PATH is \"${OGRE_PREFIX_PATH}\"") - # If both OGRE_BUILD and OGRE_SOURCE are set, prepare to find Ogre in a build dir set(OGRE_PREFIX_SOURCE ${OGRE_SOURCE} ${ENV_OGRE_SOURCE}) set(OGRE_PREFIX_BUILD ${OGRE_BUILD} ${ENV_OGRE_BUILD}) set(OGRE_PREFIX_DEPENDENCIES_DIR ${OGRE_DEPENDENCIES_DIR} ${ENV_OGRE_DEPENDENCIES_DIR}) if (OGRE_PREFIX_SOURCE AND OGRE_PREFIX_BUILD) foreach(dir ${OGRE_PREFIX_SOURCE}) - set(OGRE_INC_SEARCH_PATH ${dir}/OgreMain/include ${dir}/Dependencies/include ${dir}/iOSDependencies/include ${OGRE_INC_SEARCH_PATH}) - set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${dir}/Dependencies/lib ${dir}/iOSDependencies/lib ${OGRE_LIB_SEARCH_PATH}) + set(OGRE_INC_SEARCH_PATH ${dir}/OgreMain/include ${dir}/Dependencies/include ${dir}/iOSDependencies/include ${dir}/AndroidDependencies/include ${OGRE_INC_SEARCH_PATH}) + set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${dir}/Dependencies/lib ${dir}/iOSDependencies/lib ${dir}/AndroidDependencies/lib/${ANDROID_ABI} ${OGRE_LIB_SEARCH_PATH}) set(OGRE_BIN_SEARCH_PATH ${dir}/Samples/Common/bin ${OGRE_BIN_SEARCH_PATH}) endforeach(dir) foreach(dir ${OGRE_PREFIX_BUILD}) set(OGRE_INC_SEARCH_PATH ${dir}/include ${OGRE_INC_SEARCH_PATH}) - set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${OGRE_LIB_SEARCH_PATH}) + if(APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) + set(OGRE_LIB_SEARCH_PATH ${dir}/lib/macosx ${OGRE_LIB_SEARCH_PATH}) + else() + set(OGRE_LIB_SEARCH_PATH ${dir}/lib ${OGRE_LIB_SEARCH_PATH}) + endif() + + if (OGRE_BUILD_PLATFORM_APPLE_IOS) + set(OGRE_LIB_SEARCH_PATH ${dir}/lib/iphoneos ${dir}/lib/iphonesimulator ${OGRE_LIB_SEARCH_PATH}) + endif() + set(OGRE_BIN_SEARCH_PATH ${dir}/bin ${OGRE_BIN_SEARCH_PATH}) - set(OGRE_BIN_SEARCH_PATH ${dir}/Samples/Common/bin ${OGRE_BIN_SEARCH_PATH}) + set(OGRE_BIN_SEARCH_PATH ${dir}/Samples/Common/bin ${OGRE_BIN_SEARCH_PATH}) + + if(APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) + set(OGRE_BIN_SEARCH_PATH ${dir}/bin/macosx ${OGRE_BIN_SEARCH_PATH}) + endif() endforeach(dir) if (OGRE_PREFIX_DEPENDENCIES_DIR) @@ -131,10 +148,10 @@ endif () # redo search if any of the environmental hints changed -set(OGRE_COMPONENTS Paging Terrain RTShaderSystem +set(OGRE_COMPONENTS Paging Terrain Volume Overlay Plugin_BSPSceneManager Plugin_CgProgramManager Plugin_OctreeSceneManager Plugin_OctreeZone Plugin_PCZSceneManager Plugin_ParticleFX - RenderSystem_Direct3D11 RenderSystem_Direct3D9 RenderSystem_GL RenderSystem_GLES RenderSystem_GLES2) + RenderSystem_Direct3D11 RenderSystem_Direct3D9 RenderSystem_GL RenderSystem_GL3Plus RenderSystem_GLES RenderSystem_GLES2) set(OGRE_RESET_VARS OGRE_CONFIG_INCLUDE_DIR OGRE_INCLUDE_DIR OGRE_LIBRARY_FWK OGRE_LIBRARY_REL OGRE_LIBRARY_DBG @@ -148,40 +165,19 @@ set(OGRE_PREFIX_WATCH ${OGRE_PREFIX_PATH} ${OGRE_PREFIX_SOURCE} ${OGRE_PREFIX_BUILD}) clear_if_changed(OGRE_PREFIX_WATCH ${OGRE_RESET_VARS}) -if(NOT OGRE_BUILD_PLATFORM_APPLE_IOS) +if(NOT OGRE_STATIC) # try to locate Ogre via pkg-config use_pkgconfig(OGRE_PKGC "OGRE${OGRE_LIB_SUFFIX}") # try to find framework on OSX - findpkg_framework(OGRE) + findpkg_framework(Ogre) else() set(OGRE_LIBRARY_FWK "") endif() -MESSAGE(STATUS ".. OGRE Searching for paths") - # locate Ogre include files -FIND_PATH(OGRE_CONFIG_INCLUDE_DIR - NAMES OgreBuildSettings.h - PATHS ${OGRE_PREFIX_PATH} - HINTS ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} - PATH_SUFFIXES "OGRE") - -# FIND_PATH(OGRE_HEADER_INCLUDE_DIR -# NAMES Ogre.h -# HINTS ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} -# PATH_SUFFIXES "OGRE") -# -FIND_PATH(OGRE_INCLUDE_DIR - NAMES OgreRoot.h - PATHS ${OGRE_PREFIX_PATH} - HINTS ${OGRE_CONFIG_INCLUDE_DIR} ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} - PATH_SUFFIXES "OGRE" include OgreMain/include OgreMain) - -MESSAGE(STATUS ".. OGRE_CONFIG_INCLUDE_DIR is \"${OGRE_CONFIG_INCLUDE_DIR}\"") -# MESSAGE(STATUS ".. OGRE_HEADER_INCLUDE_DIR is \"${OGRE_HEADER_INCLUDE_DIR}\"") -MESSAGE(STATUS ".. OGRE_INCLUDE_DIR is \"${OGRE_INCLUDE_DIR}\"") - +find_path(OGRE_CONFIG_INCLUDE_DIR NAMES OgreBuildSettings.h HINTS ${OGRE_INC_SEARCH_PATH} ${OGRE_FRAMEWORK_INCLUDES} ${OGRE_PKGC_INCLUDE_DIRS} PATH_SUFFIXES "OGRE") +find_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") set(OGRE_INCOMPATIBLE FALSE) if (OGRE_INCLUDE_DIR) @@ -227,13 +223,19 @@ set(OGRE_INCOMPATIBLE FALSE) endif () -find_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") -find_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") +if (NOT OGRE_SOURCE) # If using ogre sources, use the target names instead of library files to link. + find_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") + find_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") +else() + if( NOT OGRE_LIBRARIES OR OGRE_LIBRARIES STREQUAL "" ) + message( FATAL_ERROR "When using Ogre from sources, please specify target names in OGRE_LIBRARIES!" ) + else() + message( "Using Ogre source instead of binary libraries - skipping library files search." ) + endif() +endif() + make_library_set(OGRE_LIBRARY) -if(APPLE) - set(OGRE_LIBRARY_DBG ${OGRE_LIB_SEARCH_PATH}) -endif() if (OGRE_INCOMPATIBLE) set(OGRE_LIBRARY "NOTFOUND") endif () @@ -266,25 +268,17 @@ find_package(OpenGLES2 QUIET) find_package(ZLIB QUIET) find_package(ZZip QUIET) - if (UNIX AND NOT APPLE) + if (UNIX AND NOT APPLE AND NOT ANDROID) find_package(X11 QUIET) find_library(XAW_LIBRARY NAMES Xaw Xaw7 PATHS ${DEP_LIB_SEARCH_DIR} ${X11_LIB_SEARCH_PATH}) if (NOT XAW_LIBRARY OR NOT X11_Xt_FOUND) set(X11_FOUND FALSE) endif () endif () - if (APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) - find_package(Cocoa QUIET) - find_package(Carbon QUIET) - find_package(CoreVideo QUIET) - if (NOT Cocoa_FOUND OR NOT Carbon_FOUND OR NOT CoreVideo_FOUND) - set(OGRE_DEPS_FOUND FALSE) - endif () - endif () - set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${ZZip_LIBRARIES} ${ZLIB_LIBRARIES} ${FreeImage_LIBRARIES} ${FREETYPE_LIBRARIES} ) + set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${ZZip_LIBRARIES} ${ZLIB_LIBRARIES} ${FreeImage_LIBRARIES} ${FREETYPE_LIBRARIES}) - if (APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS) + if (APPLE AND NOT OGRE_BUILD_PLATFORM_APPLE_IOS AND NOT ANDROID) set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${X11_LIBRARIES} ${X11_Xt_LIBRARIES} ${XAW_LIBRARY} ${X11_Xrandr_LIB} ${Carbon_LIBRARIES} ${Cocoa_LIBRARIES}) endif() @@ -297,15 +291,32 @@ if (NOT FREETYPE_FOUND) set(OGRE_DEPS_FOUND FALSE) endif () - if (UNIX AND NOT APPLE) + if (UNIX AND NOT APPLE AND NOT ANDROID) if (NOT X11_FOUND) set(OGRE_DEPS_FOUND FALSE) endif () endif () - +endif() if (OGRE_CONFIG_THREADS) if (OGRE_CONFIG_THREAD_PROVIDER EQUAL 1) - find_package(Boost COMPONENTS thread QUIET) + if (OGRE_STATIC) + set(Boost_USE_STATIC_LIBS TRUE) + if(OGRE_BUILD_PLATFORM_APPLE_IOS) + set(Boost_USE_MULTITHREADED OFF) + endif() + endif() + + set(OGRE_BOOST_COMPONENTS thread date_time) + find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) + if(Boost_FOUND AND Boost_VERSION GREATER 104900) + if(Boost_VERSION GREATER 105300) + set(OGRE_BOOST_COMPONENTS thread date_time system atomic chrono) + else() + set(OGRE_BOOST_COMPONENTS thread date_time system chrono) + endif() + endif() + + find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) if (NOT Boost_THREAD_FOUND) set(OGRE_DEPS_FOUND FALSE) else () @@ -330,7 +341,7 @@ endif () endif () endif () - +if (OGRE_STATIC) if (NOT OGRE_DEPS_FOUND) pkg_message(OGRE "Could not find all required dependencies for the Ogre package.") set(OGRE_FOUND FALSE) @@ -349,13 +360,10 @@ # find binaries if (NOT OGRE_STATIC) if (WIN32) - MESSAGE (STATUS "*******Will use Ogre bin search path: ${OGRE_BIN_SEARCH_PATH}") - find_file(OGRE_BINARY_REL NAMES "OgreMain.dll" - HINTS ${ENV_OGRE_HOME} ${OGRE_BIN_SEARCH_PATH} - PATH_SUFFIXES release "" relwithdebinfo minsizerel) - find_file(OGRE_BINARY_DBG NAMES "OgreMain_d.dll" "OgreMain_d.dll" - HINTS ${ENV_OGRE_HOME} ${OGRE_BIN_SEARCH_PATH} - PATH_SUFFIXES debug "" bin/debug "debug" "bin/debug" ) + find_file(OGRE_BINARY_REL NAMES "OgreMain.dll" HINTS ${OGRE_BIN_SEARCH_PATH} + PATH_SUFFIXES "" Release RelWithDebInfo MinSizeRel) + find_file(OGRE_BINARY_DBG NAMES "OgreMain_d.dll" HINTS ${OGRE_BIN_SEARCH_PATH} + PATH_SUFFIXES "" Debug ) endif() mark_as_advanced(OGRE_BINARY_REL OGRE_BINARY_DBG) endif() @@ -378,23 +386,19 @@ macro(ogre_find_component COMPONENT HEADER) findpkg_begin(OGRE_${COMPONENT}) - MESSAGE (STATUS "Will look into Components/${COMPONENT}/include") - find_path(OGRE_${COMPONENT}_INCLUDE_DIR - NAMES ${HEADER} - HINTS ${OGRE_INCLUDE_DIRS} ${OGRE_PREFIX_SOURCE} $ENV{OGRE_HOME} - PATH_SUFFIXES ${COMPONENT} OGRE/${COMPONENT} Components/${COMPONENT}/include) + find_path(OGRE_${COMPONENT}_INCLUDE_DIR NAMES ${HEADER} HINTS ${OGRE_INCLUDE_DIRS} ${OGRE_PREFIX_SOURCE} PATH_SUFFIXES ${COMPONENT} OGRE/${COMPONENT} Components/${COMPONENT}/include) set(OGRE_${COMPONENT}_LIBRARY_NAMES "Ogre${COMPONENT}${OGRE_LIB_SUFFIX}") get_debug_names(OGRE_${COMPONENT}_LIBRARY_NAMES) - find_library(OGRE_${COMPONENT}_LIBRARY_REL NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES} HINTS ${OGRE_LIBRARY_DIR_REL} PATH_SUFFIXES "" "release" "relwithdebinfo" "minsizerel") - find_library(OGRE_${COMPONENT}_LIBRARY_DBG NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES_DBG} HINTS ${OGRE_LIBRARY_DIR_DBG} PATH_SUFFIXES "" "debug") + find_library(OGRE_${COMPONENT}_LIBRARY_REL NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES} HINTS ${OGRE_LIBRARY_DIR_REL} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") + find_library(OGRE_${COMPONENT}_LIBRARY_DBG NAMES ${OGRE_${COMPONENT}_LIBRARY_NAMES_DBG} HINTS ${OGRE_LIBRARY_DIR_DBG} PATH_SUFFIXES "" "Debug") make_library_set(OGRE_${COMPONENT}_LIBRARY) findpkg_finish(OGRE_${COMPONENT}) if (OGRE_${COMPONENT}_FOUND) # find binaries if (NOT OGRE_STATIC) if (WIN32) - 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) - find_file(OGRE_${COMPONENT}_BINARY_DBG NAMES "Ogre${COMPONENT}_d.dll" HINTS ${OGRE_COMPONENT_SEARCH_PATH_DBG} PATH_SUFFIXES "" bin bin/debug debug) + 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) + find_file(OGRE_${COMPONENT}_BINARY_DBG NAMES "Ogre${COMPONENT}_d.dll" HINTS ${OGRE_COMPONENT_SEARCH_PATH_DBG} PATH_SUFFIXES "" bin bin/Debug Debug) endif() mark_as_advanced(OGRE_${COMPONENT}_BINARY_REL OGRE_${COMPONENT}_BINARY_DBG) endif() @@ -405,18 +409,18 @@ ogre_find_component(Paging OgrePaging.h) # look for Terrain component ogre_find_component(Terrain OgreTerrain.h) -# look for RTShaderSystem component -ogre_find_component(RTShaderSystem OgreRTShaderSystem.h) # look for Property component ogre_find_component(Property OgreProperty.h) # look for RTShaderSystem component ogre_find_component(RTShaderSystem OgreRTShaderSystem.h) - +# look for Volume component +ogre_find_component(Volume OgreVolumePrerequisites.h) +# look for Overlay component +ogre_find_component(Overlay OgreOverlaySystem.h) ######################################################### # Find Ogre plugins -######################################################### - +######################################################### macro(ogre_find_plugin PLUGIN HEADER) # On Unix, the plugins might have no prefix if (CMAKE_FIND_LIBRARY_PREFIXES) @@ -440,9 +444,9 @@ get_debug_names(OGRE_${PLUGIN}_LIBRARY_NAMES) set(OGRE_${PLUGIN}_LIBRARY_FWK ${OGRE_LIBRARY_FWK}) find_library(OGRE_${PLUGIN}_LIBRARY_REL NAMES ${OGRE_${PLUGIN}_LIBRARY_NAMES} - HINTS ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE opt release release/opt relwithdebinfo relwithdebinfo/opt minsizerel minsizerel/opt) + HINTS "${OGRE_BUILD}/lib" ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE opt Release Release/opt RelWithDebInfo RelWithDebInfo/opt MinSizeRel MinSizeRel/opt) find_library(OGRE_${PLUGIN}_LIBRARY_DBG NAMES ${OGRE_${PLUGIN}_LIBRARY_NAMES_DBG} - HINTS ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE opt debug debug/opt) + HINTS "${OGRE_BUILD}/lib" ${OGRE_LIBRARY_DIRS} PATH_SUFFIXES "" OGRE opt Debug Debug/opt) make_library_set(OGRE_${PLUGIN}_LIBRARY) if (OGRE_${PLUGIN}_LIBRARY OR OGRE_${PLUGIN}_INCLUDE_DIR) @@ -470,14 +474,14 @@ ${OGRE_BIN_SEARCH_PATH} ) find_path(OGRE_PLUGIN_DIR_REL NAMES "${PLUGIN}.dll" HINTS ${OGRE_PLUGIN_SEARCH_PATH_REL} - PATH_SUFFIXES "" bin bin/release bin/relwithdebinfo bin/minsizerel release) + PATH_SUFFIXES "" bin bin/Release bin/RelWithDebInfo bin/MinSizeRel Release) find_path(OGRE_PLUGIN_DIR_DBG NAMES "${PLUGIN}_d.dll" HINTS ${OGRE_PLUGIN_SEARCH_PATH_DBG} - PATH_SUFFIXES "" bin bin/debug debug) + PATH_SUFFIXES "" bin bin/Debug Debug) elseif (UNIX) get_filename_component(OGRE_PLUGIN_DIR_TMP ${OGRE_${PLUGIN}_LIBRARY_REL} PATH) - set(OGRE_PLUGIN_DIR_REL ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (release)") - get_filename_component(OGRE_PLUGIN_DIR_TMP ${OGRE_${PLUGIN}_LIBRARY_DBG} PATH) - set(OGRE_PLUGIN_DIR_DBG ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (debug)") + set(OGRE_PLUGIN_DIR_REL ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (release)" FORCE) + get_filename_component(OGRE_PLUGIN_DIR_TMP ${OGRE_${PLUGIN}_LIBRARY_DBG} PATH) + set(OGRE_PLUGIN_DIR_DBG ${OGRE_PLUGIN_DIR_TMP} CACHE STRING "Ogre plugin dir (debug)" FORCE) endif () endif () @@ -504,11 +508,12 @@ ogre_find_plugin(Plugin_OctreeSceneManager OgreOctreeSceneManager.h PlugIns/OctreeSceneManager/include) ogre_find_plugin(Plugin_ParticleFX OgreParticleFXPrerequisites.h PlugIns/ParticleFX/include) ogre_find_plugin(RenderSystem_GL OgreGLRenderSystem.h RenderSystems/GL/include) +ogre_find_plugin(RenderSystem_GL3Plus OgreGL3PlusRenderSystem.h RenderSystems/GL3Plus/include) ogre_find_plugin(RenderSystem_GLES OgreGLESRenderSystem.h RenderSystems/GLES/include) ogre_find_plugin(RenderSystem_GLES2 OgreGLES2RenderSystem.h RenderSystems/GLES2/include) ogre_find_plugin(RenderSystem_Direct3D9 OgreD3D9RenderSystem.h RenderSystems/Direct3D9/include) ogre_find_plugin(RenderSystem_Direct3D11 OgreD3D11RenderSystem.h RenderSystems/Direct3D11/include) - + if (OGRE_STATIC) # check if dependencies for plugins are met if (NOT DirectX_FOUND) @@ -520,6 +525,9 @@ if (NOT OPENGL_FOUND) set(OGRE_RenderSystem_GL_FOUND FALSE) endif () + if (NOT OPENGL_FOUND) + set(OGRE_RenderSystem_GL3Plus_FOUND FALSE) + endif () if (NOT OPENGLES_FOUND) set(OGRE_RenderSystem_GLES_FOUND FALSE) endif () @@ -540,6 +548,9 @@ set(OGRE_RenderSystem_GL_LIBRARIES ${OGRE_RenderSystem_GL_LIBRARIES} ${OPENGL_LIBRARIES} ) + set(OGRE_RenderSystem_GL3Plus_LIBRARIES ${OGRE_RenderSystem_GL3Plus_LIBRARIES} + ${OPENGL_LIBRARIES} + ) set(OGRE_RenderSystem_GLES_LIBRARIES ${OGRE_RenderSystem_GLES_LIBRARIES} ${OPENGLES_LIBRARIES} ) @@ -565,6 +576,7 @@ Media media share/OGRE/media + share/OGRE/Media ) clear_if_changed(OGRE_PREFIX_WATCH OGRE_MEDIA_DIR)
--- a/CMakeModules/FindPkgMacros.cmake Thu Mar 13 19:56:13 2014 +0100 +++ b/CMakeModules/FindPkgMacros.cmake Thu Mar 13 20:49:45 2014 +0100 @@ -38,16 +38,26 @@ macro(create_search_paths PREFIX) foreach(dir ${${PREFIX}_PREFIX_PATH}) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} - ${dir}/include ${dir}/include/${PREFIX} ${dir}/Headers) + ${dir}/include ${dir}/Include ${dir}/include/${PREFIX} ${dir}/Headers) set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} - ${dir}/lib ${dir}/lib/${PREFIX} ${dir}/Libs) + ${dir}/lib ${dir}/Lib ${dir}/lib/${PREFIX} ${dir}/Libs) + set(${PREFIX}_BIN_SEARCH_PATH ${${PREFIX}_BIN_SEARCH_PATH} + ${dir}/bin) endforeach(dir) + if(ANDROID) + set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} ${OGRE_DEPENDENCIES_DIR}/lib/${ANDROID_ABI}) + endif() set(${PREFIX}_FRAMEWORK_SEARCH_PATH ${${PREFIX}_PREFIX_PATH}) endmacro(create_search_paths) # clear cache variables if a certain variable changed macro(clear_if_changed TESTVAR) # test against internal check variable + # HACK: Apparently, adding a variable to the cache cleans up the list + # a bit. We need to also remove any empty strings from the list, but + # at the same time ensure that we are actually dealing with a list. + list(APPEND ${TESTVAR} "") + list(REMOVE_ITEM ${TESTVAR} "") if (NOT "${${TESTVAR}}" STREQUAL "${${TESTVAR}_INT_CHECK}") message(STATUS "${TESTVAR} changed.") foreach(var ${ARGN}) @@ -117,26 +127,37 @@ # Slightly customised framework finder -MACRO(findpkg_framework fwk) - IF(APPLE) - SET(${fwk}_FRAMEWORK_PATH +macro(findpkg_framework fwk) + if(APPLE) + set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_SEARCH_PATH} ${CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks /Network/Library/Frameworks - /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/Frameworks/ + ${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/Release + ${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/Debug ) - FOREACH(dir ${${fwk}_FRAMEWORK_PATH}) - SET(fwkpath ${dir}/${fwk}.framework) - IF(EXISTS ${fwkpath}) - SET(${fwk}_FRAMEWORK_INCLUDES ${${fwk}_FRAMEWORK_INCLUDES} + # These could be arrays of paths, add each individually to the search paths + foreach(i ${OGRE_PREFIX_PATH}) + set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/macosx/Release ${i}/lib/macosx/Debug) + endforeach(i) + + foreach(i ${OGRE_PREFIX_BUILD}) + set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/macosx/Release ${i}/lib/macosx/Debug) + endforeach(i) + + foreach(dir ${${fwk}_FRAMEWORK_PATH}) + set(fwkpath ${dir}/${fwk}.framework) + if(EXISTS ${fwkpath}) + set(${fwk}_FRAMEWORK_INCLUDES ${${fwk}_FRAMEWORK_INCLUDES} ${fwkpath}/Headers ${fwkpath}/PrivateHeaders) + set(${fwk}_FRAMEWORK_PATH ${dir}) if (NOT ${fwk}_LIBRARY_FWK) - SET(${fwk}_LIBRARY_FWK "-framework ${fwk}") + set(${fwk}_LIBRARY_FWK "-framework ${fwk}") endif () - ENDIF(EXISTS ${fwkpath}) - ENDFOREACH(dir) - ENDIF(APPLE) -ENDMACRO(findpkg_framework) + endif(EXISTS ${fwkpath}) + endforeach(dir) + endif(APPLE) +endmacro(findpkg_framework)
--- a/CMakeModules/OgreGetVersion.cmake Thu Mar 13 19:56:13 2014 +0100 +++ b/CMakeModules/OgreGetVersion.cmake Thu Mar 13 20:49:45 2014 +0100 @@ -16,5 +16,8 @@ get_preprocessor_entry(TEMP_VAR_CONTENTS OGRE_VERSION_PATCH OGRE_VERSION_PATCH) get_preprocessor_entry(TEMP_VAR_CONTENTS OGRE_VERSION_NAME OGRE_VERSION_NAME) get_preprocessor_entry(TEMP_VAR_CONTENTS OGRE_VERSION_SUFFIX OGRE_VERSION_SUFFIX) - set(OGRE_VERSION "${OGRE_VERSION_MAJOR}.${OGRE_VERSION_MINOR}.${OGRE_VERSION_PATCH}") + set(OGRE_VERSION "${OGRE_VERSION_MAJOR}.${OGRE_VERSION_MINOR}.${OGRE_VERSION_PATCH}${OGRE_VERSION_SUFFIX}") + set(OGRE_SOVERSION "${OGRE_VERSION_MAJOR}.${OGRE_VERSION_MINOR}.${OGRE_VERSION_PATCH}") + set(OGRE_VERSION_DASH_SEPARATED "${OGRE_VERSION_MAJOR}-${OGRE_VERSION_MINOR}-${OGRE_VERSION_PATCH}${OGRE_VERSION_SUFFIX}") + endmacro()