Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 2590 was 2587, checked in by rgrieder, 16 years ago

Quotes are needed when setting an internal CMAKE value to "${blubb}" if blubb is "" itself. Worked on linux anyway..

  • Property svn:eol-style set to native
File size: 5.0 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(CMAKE_FIND_LIBRARY_PREFIXES_STORED ${CMAKE_FIND_LIBRARY_PREFIXES})
54SET(CMAKE_FIND_LIBRARY_PREFIXES "")
55
56SET(OGRE_RENDER_SYSTEM_FOUND FALSE)
57FOREACH(_plugin ${OGRE_PLUGINS})
58    FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_OPTIMIZED
59        NAMES ${_plugin}
60        PATHS $ENV{OGRE_HOME} /usr/local /usr
61        PATH_SUFFIXES lib lib/OGRE bin bin/Release bin/release Release release
62    )
63    FIND_LIBRARY(OGRE_PLUGIN_${_plugin}_DEBUG
64        NAMES ${_plugin}${LIBRARY_DEBUG_POSTFIX}
65        PATHS $ENV{OGRE_HOME} /usr/local /usr
66        PATH_SUFFIXES lib lib/OGRE bin bin/Debug bin/debug Debug debug
67    )
68    # We only need at least one render system. Check at the end
69    IF(NOT ${_plugin} MATCHES "RenderSystem")
70        IF(NOT OGRE_PLUGIN_${_plugin}_OPTIMIZED)
71            MESSAGE(FATAL_ERROR "Could not find OGRE plugin named ${_plugin}")
72        ENDIF(NOT OGRE_PLUGIN_${_plugin}_OPTIMIZED)
73    ELSEIF(OGRE_PLUGIN_${_plugin}_OPTIMIZED)
74      SET(OGRE_RENDER_SYSTEM_FOUND TRUE)
75    ENDIF(NOT ${_plugin} MATCHES "RenderSystem")
76
77    IF(OGRE_PLUGIN_${_plugin}_OPTIMIZED)
78        # If debug version is not available, release will do as well
79        IF(NOT OGRE_PLUGIN_${_plugin}_DEBUG)
80            SET(OGRE_PLUGIN_${_plugin}_DEBUG ${OGRE_PLUGIN_${_plugin}_OPTIMIZED} CACHE STRING "")
81        ENDIF(NOT OGRE_PLUGIN_${_plugin}_DEBUG)
82        MARK_AS_ADVANCED(OGRE_PLUGIN_${_plugin}_OPTIMIZED OGRE_PLUGIN_${_plugin}_DEBUG)
83
84        ### Set variables to configure orxonox.ini correctly afterwards in bin/ ###
85        # Check and set the folders
86        GET_FILENAME_COMPONENT(_release_folder ${OGRE_PLUGIN_${_plugin}_OPTIMIZED} PATH)
87        IF(OGRE_PLUGINS_FOLDER_RELEASE AND NOT OGRE_PLUGINS_FOLDER_RELEASE STREQUAL _release_folder)
88            MESSAGE(FATAL_ERROR "Ogre release plugins have to be in the same folder!")
89        ENDIF(OGRE_PLUGINS_FOLDER_RELEASE AND NOT OGRE_PLUGINS_FOLDER_RELEASE STREQUAL _release_folder)
90        SET(OGRE_PLUGINS_FOLDER_RELEASE ${_release_folder})
91        GET_FILENAME_COMPONENT(_debug_folder ${OGRE_PLUGIN_${_plugin}_DEBUG} PATH)
92        IF(OGRE_PLUGINS_FOLDER_DEBUG AND NOT OGRE_PLUGINS_FOLDER_DEBUG STREQUAL _debug_folder)
93            MESSAGE(FATAL_ERROR "Ogre debug plugins have to be in the same folder!")
94        ENDIF(OGRE_PLUGINS_FOLDER_DEBUG AND NOT OGRE_PLUGINS_FOLDER_DEBUG STREQUAL _debug_folder)
95        SET(OGRE_PLUGINS_FOLDER_DEBUG ${_debug_folder})
96
97        # Create a list with the plugins for relase and debug configurations
98        LIST(APPEND OGRE_PLUGINS_RELEASE ${_plugin})
99        IF(OGRE_PLUGIN_${_plugin}_DEBUG)
100            LIST(APPEND OGRE_PLUGINS_DEBUG ${_plugin}${LIBRARY_DEBUG_POSTFIX})
101        ELSE(OGRE_PLUGIN_${_plugin}_DEBUG)
102            LIST(APPEND OGRE_PLUGINS_DEBUG ${_plugin})
103        ENDIF(OGRE_PLUGIN_${_plugin}_DEBUG)
104    ENDIF(OGRE_PLUGIN_${_plugin}_OPTIMIZED)
105ENDFOREACH(_plugin)
106IF(NOT OGRE_RENDER_SYSTEM_FOUND)
107    MESSAGE(FATAL_ERROR "Could not find an OGRE render system plugin")
108ENDIF(NOT OGRE_RENDER_SYSTEM_FOUND)
109IF(WIN32)
110    # Restore previous settings (see above before FOREACH)
111    SET(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES_STORED}")
112ENDIF(WIN32)
113SET(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES_STORED}")
114
115# List has to be comma separated for orxonox.ini
116STRING(REPLACE ";" ", " OGRE_PLUGINS_RELEASE "${OGRE_PLUGINS_RELEASE}")
117STRING(REPLACE ";" ", " OGRE_PLUGINS_DEBUG   "${OGRE_PLUGINS_DEBUG}")
118
119
120MARK_AS_ADVANCED(
121    OGRE_LIBRARY
122    OGRE_LIBRARY_OPTIMIZED
123    OGRE_LIBRARY_DEBUG
124    OGRE_INCLUDE_DIR
125)
Note: See TracBrowser for help on using the repository browser.