Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem2/cmake/FindOGRE.cmake @ 2585

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

FindOgre now also checks for all the required plugins.
These are specified in cmake/ConfigPlatforms.cmake, however there is only one render system required.
${OGRE_PLUGINS_FOLDER_DEBUG}, ${OGRE_PLUGINS_FOLDER_RELEASE}, ${OGRE_PLUGINS_DEBUG}, ${OGRE_PLUGINS_RELEASE} are also set for later use.

  • Property svn:eol-style set to native
File size: 4.8 KB
Line 
1# Find OGRE includes and library
2#
3# This module defines
4#  OGRE_INCLUDE_DIR
5#  OGRE_LIBRARY, the library to link against to use OGRE.
6#  OGRE_FOUND, If false, do not try to use OGRE
7#
8# Copyright © 2007, Matt Williams
9# Modified by Nicolas Schlumberger to make it work on the Tardis-Infrastucture of the ETH Zurich
10#
11# Redistribution and use is allowed according to the terms of the BSD license.
12#
13# Several changes and additions by Fabian 'x3n' Landau
14# Lots of simplifications by Adrian Friedli
15# Plugin checking by Reto Grieder
16#                 > www.orxonox.net <
17
18INCLUDE(FindPackageHandleStandardArgs)
19INCLUDE(HandleLibraryTypes)
20
21FIND_PATH(OGRE_INCLUDE_DIR Ogre.h
22    PATHS $ENV{OGRE_HOME} /usr/local /usr
23    PATH_SUFFIXES include include/OGRE
24)
25FIND_LIBRARY(OGRE_LIBRARY_OPTIMIZED
26    NAMES OgreMain
27    PATHS $ENV{OGRE_HOME} /usr/local /usr
28    PATH_SUFFIXES lib bin/Release bin/release Release release
29)
30FIND_LIBRARY(OGRE_LIBRARY_DEBUG
31    NAMES OgreMain${LIBRARY_DEBUG_POSTFIX}
32    PATHS $ENV{OGRE_HOME} /usr/local /usr
33    PATH_SUFFIXES lib bin/Debug bin/debug Debug debug
34)
35
36FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGRE DEFAULT_MSG
37    OGRE_LIBRARY_OPTIMIZED
38    OGRE_INCLUDE_DIR
39)
40
41# Set optimized and debug libraries
42HandleLibraryTypes(OGRE)
43
44###############################################
45# Also make sure we have the required plugins #
46###############################################
47
48IF(WIN32)
49    # On Windows we need only *.dll, not *.lib. Especially the MSVC generator doesn't look for *.dll
50    SET(CMAKE_FIND_LIBRARY_SUFFIXES_STORED ${CMAKE_FIND_LIBRARY_SUFFIXES})
51    SET(CMAKE_FIND_LIBRARY_SUFFIXES .dll)
52ENDIF(WIN32)
53SET(OGRE_RENDER_SYSTEM_FOUND FALSE)
54FOREACH(_plugin ${OGRE_PLUGINS})
55    FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_OPTIMIZED
56        NAMES ${_plugin}
57        PATHS $ENV{OGRE_HOME}
58        PATH_SUFFIXES lib lib/OGRE bin bin/Release bin/release Release release
59    )
60    FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_DEBUG
61        NAMES ${_plugin}${LIBRARY_DEBUG_POSTFIX}
62        PATHS $ENV{OGRE_HOME} /usr/local /usr
63        PATH_SUFFIXES lib lib/OGRE bin bin/Debug bin/debug Debug debug
64    )
65    # We only need at least one render system. Check at the end
66    IF(NOT ${_plugin} MATCHES "RenderSystem")
67      SET(OGRE_PLUGIN_${_plugin}_FIND_REQUIRED TRUE)
68    ELSE(NOT ${_plugin} MATCHES "RenderSystem")
69      SET(OGRE_PLUGIN_${_plugin}_FIND_REQUIRED FALSE)
70      SET(OGRE_RENDER_SYSTEM_FOUND TRUE)
71    ENDIF(NOT ${_plugin} MATCHES "RenderSystem")
72    FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGRE_PLUGIN_${_plugin}
73        "Could not find OGRE plugin named ${_plugin}"
74        OGRE_PLUGIN_${_plugin}_OPTIMIZED
75    )
76
77    # If debug version is not available, release will do as well
78    IF(NOT OGRE_PLUGIN_${_plugin}_DEBUG)
79        SET(OGRE_PLUGIN_${_plugin}_DEBUG ${OGRE_PLUGIN_${_plugin}_OPTIMIZED} CACHE STRING "")
80    ENDIF(NOT OGRE_PLUGIN_${_plugin}_DEBUG)
81    MARK_AS_ADVANCED(OGRE_PLUGIN_${_plugin}_OPTIMIZED OGRE_PLUGIN_${_plugin}_DEBUG)
82
83    ### Set variables to configure orxonox.ini correctly afterwards in bin/ ###
84    # Check and set the folders
85    GET_FILENAME_COMPONENT(_release_folder ${OGRE_PLUGIN_${_plugin}_OPTIMIZED} PATH)
86    IF(OGRE_PLUGINS_FOLDER_RELEASE AND NOT OGRE_PLUGINS_FOLDER_RELEASE STREQUAL _release_folder)
87        MESSAGE(FATAL_ERROR "Ogre release plugins have to be in the same folder!")
88    ENDIF(OGRE_PLUGINS_FOLDER_RELEASE AND NOT OGRE_PLUGINS_FOLDER_RELEASE STREQUAL _release_folder)
89    SET(OGRE_PLUGINS_FOLDER_RELEASE ${_release_folder})
90    GET_FILENAME_COMPONENT(_debug_folder ${OGRE_PLUGIN_${_plugin}_DEBUG} PATH)
91    IF(OGRE_PLUGINS_FOLDER_DEBUG AND NOT OGRE_PLUGINS_FOLDER_DEBUG STREQUAL _debug_folder)
92        MESSAGE(FATAL_ERROR "Ogre debug plugins have to be in the same folder!")
93    ENDIF(OGRE_PLUGINS_FOLDER_DEBUG AND NOT OGRE_PLUGINS_FOLDER_DEBUG STREQUAL _debug_folder)
94    SET(OGRE_PLUGINS_FOLDER_DEBUG ${_debug_folder})
95
96    # Create a list with the plugins for relase and debug configurations
97    LIST(APPEND OGRE_PLUGINS_RELEASE ${_plugin})
98    IF(OGRE_PLUGIN_${_plugin}_DEBUG)
99        LIST(APPEND OGRE_PLUGINS_DEBUG ${_plugin}${LIBRARY_DEBUG_POSTFIX})
100    ELSE(OGRE_PLUGIN_${_plugin}_DEBUG)
101        LIST(APPEND OGRE_PLUGINS_DEBUG ${_plugin})
102    ENDIF(OGRE_PLUGIN_${_plugin}_DEBUG)
103ENDFOREACH(_plugin)
104IF(NOT OGRE_RENDER_SYSTEM_FOUND)
105    MESSAGE(FATAL_ERROR "Could not find an OGRE render system plugin")
106ENDIF(NOT OGRE_RENDER_SYSTEM_FOUND)
107IF(WIN32)
108    # Restore previous settings (see above before FOREACH)
109    SET(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_STORED})
110ENDIF(WIN32)
111
112# List has to be comma separated for orxonox.ini
113STRING(REPLACE ";" ", " OGRE_PLUGINS_RELEASE "${OGRE_PLUGINS_RELEASE}")
114STRING(REPLACE ";" ", " OGRE_PLUGINS_DEBUG   "${OGRE_PLUGINS_DEBUG}")
115
116
117MARK_AS_ADVANCED(
118    OGRE_LIBRARY
119    OGRE_LIBRARY_OPTIMIZED
120    OGRE_LIBRARY_DEBUG
121    OGRE_INCLUDE_DIR
122)
Note: See TracBrowser for help on using the repository browser.