Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/cmake/tools/FindCEGUI.cmake @ 10328

Last change on this file since 10328 was 10208, checked in by muemart, 10 years ago

Some small fixes for the MSVC build

  • Don't hardcode library names. It's more trouble than it's worth.
  • Add debug library names for CEBUI 0.8.x
  • Prevent double definitions of winsock stuff
  • Property svn:eol-style set to native
File size: 5.6 KB
Line 
1# Find CEGUI includes and library
2#
3# This module defines
4#  CEGUI_INCLUDE_DIR
5#  CEGUI_LIBRARY, the library to link against to use CEGUI.
6#  CEGUILUA_LIBRARY, the library to link against to use the CEGUI script module.
7#  CEGUI_TOLUA_LIBRARY, the library to link against to use Tolua++.
8#  CEGUI_FOUND, If false, do not try to use CEGUI
9#  CEGUI_VERSION, the version as string "x.y.z"
10#
11# Input:
12#  ENV{CEGUIDIR}, CEGUI path, optional
13#
14# Created by Matt Williams to find OGRE libraries
15# Copyright © 2007, Matt Williams
16#
17# Modified by Nicolas Schlumberger to find CEGUI libraries
18# and make it run on the Tardis-Infrastucture of the ETH Zurich
19# Copyright 2007, Nicolas Schlumberger
20#
21# Redistribution and use is allowed according to the terms of the BSD license.
22#
23# Several changes and additions by Fabian 'x3n' Landau
24# Lots of simplifications by Adrian Friedli and Reto Grieder
25# Version checking and CEGUILua finding by Reto Grieder
26#                 > www.orxonox.net <
27
28INCLUDE(CompareVersionStrings)
29INCLUDE(DetermineVersion)
30INCLUDE(FindPackageHandleAdvancedArgs)
31INCLUDE(HandleLibraryTypes)
32
33# Determine CEGUI's version
34FIND_FILE(CEGUI_VERSION_FILE CEGUIVersion.h Version.h
35  PATHS $ENV{CEGUIDIR}
36  PATH_SUFFIXES include include/CEGUI
37)
38DETERMINE_VERSION(CEGUI ${CEGUI_VERSION_FILE})
39
40# Find CEGUI headers
41COMPARE_VERSION_STRINGS("${CEGUI_VERSION}" "0.8" _version_0_8_compare TRUE)
42# Version 0.8 introduced a new directory and file naming convention
43IF(_version_0_8_compare GREATER -1)
44  # 0.8 and newer
45  FIND_PATH(CEGUI_INCLUDE_DIR CEGUI/CEGUI.h
46    PATHS $ENV{CEGUIDIR}
47    PATH_SUFFIXES include
48  )
49ELSE()
50  # 0.8 and older
51  FIND_PATH(CEGUI_INCLUDE_DIR CEGUI.h
52    PATHS $ENV{CEGUIDIR}
53    PATH_SUFFIXES include include/CEGUI
54  )
55ENDIF()
56
57# Find CEGUI library
58FIND_LIBRARY(CEGUI_LIBRARY_OPTIMIZED
59  NAMES CEGUIBase CEGUI CEGUIBase-0
60  PATHS $ENV{CEGUIDIR}
61  PATH_SUFFIXES lib bin
62)
63FIND_LIBRARY(CEGUI_LIBRARY_DEBUG
64  NAMES
65    CEGUIBased CEGUIBase_d CEGUIBaseD CEGUIBase_D
66    CEGUId CEGUI_d CEGUID CEGUI_D CEGUIBase-0_d
67  PATHS $ENV{CEGUIDIR}
68  PATH_SUFFIXES lib bin
69)
70
71# Find CEGUILua headers
72FIND_PATH(CEGUILUA_INCLUDE_DIR CEGUILua.h Functor.h
73  PATHS
74    $ENV{CEGUIDIR}
75    $ENV{CEGUILUADIR}
76    ${CEGUI_INCLUDE_DIR}/ScriptingModules/LuaScriptModule
77    ${CEGUI_INCLUDE_DIR}/CEGUI/ScriptModules/Lua
78  PATH_SUFFIXES include include/CEGUI
79)
80# Find CEGUILua libraries
81FIND_LIBRARY(CEGUILUA_LIBRARY_OPTIMIZED
82  NAMES CEGUILua CEGUILuaScriptModule CEGUILuaScriptModule-0
83  PATHS $ENV{CEGUIDIR} $ENV{CEGUILUADIR}
84  PATH_SUFFIXES lib bin
85)
86FIND_LIBRARY(CEGUILUA_LIBRARY_DEBUG
87  NAMES CEGUILuad CEGUILua_d CEGUILuaScriptModuled CEGUILuaScriptModule_d
88  CEGUILuaScriptModule-0_d
89  PATHS $ENV{CEGUIDIR} $ENV{CEGUILUADIR}
90  PATH_SUFFIXES lib bin
91)
92
93# Find CEGUI Tolua++ include file
94# We only need to add this path since we use tolua++ like a normal
95# dependency but it is shipped with CEGUILua.
96FIND_PATH(CEGUI_TOLUA_INCLUDE_DIR tolua++.h
97  PATHS
98    ${CEGUILUA_INCLUDE_DIR}
99    # For newer CEGUI versions >= 0.7
100    ${CEGUILUA_INCLUDE_DIR}/support/tolua++
101    ${DEP_INCLUDE_DIR}/tolua++/include
102    # For Mac OS X, tolua++ is a separate framework in the dependency package
103    ${DEP_FRAMEWORK_DIR}
104  NO_DEFAULT_PATH # Don't attempt to find tolua++ installed on the system
105)
106# Find CEGUI Tolua++ libraries
107FIND_LIBRARY(CEGUI_TOLUA_LIBRARY_OPTIMIZED
108  NAMES CEGUItoluapp tolua++ ceguitolua++ tolua++5.1
109  PATHS $ENV{CEGUIDIR} ${CEGUITOLUADIR}
110  PATH_SUFFIXES lib bin
111)
112FIND_LIBRARY(CEGUI_TOLUA_LIBRARY_DEBUG
113  NAMES CEGUItoluappd CEGUItoluapp_d tolua++d tolua++_d
114  PATHS $ENV{CEGUIDIR} ${CEGUITOLUADIR}
115  PATH_SUFFIXES lib bin
116)
117
118# Newer versions of CEGUI have the renderer for OGRE shipped with them
119COMPARE_VERSION_STRINGS("${CEGUI_VERSION}" "0.7" _version_0_7_compare TRUE)
120IF(_version_0_7_compare GREATER -1)
121  # Find CEGUI OGRE Renderer headers
122  FIND_PATH(CEGUI_OGRE_RENDERER_INCLUDE_DIR CEGUIOgreRenderer.h Renderer.h
123    PATHS
124      $ENV{CEGUIDIR}
125      $ENV{CEGUIOGRERENDERERDIR}
126      ${CEGUI_INCLUDE_DIR}/RendererModules/Ogre
127    PATH_SUFFIXES include include/CEGUI
128  )
129  # Find CEGUI OGRE Renderer libraries
130  FIND_LIBRARY(CEGUI_OGRE_RENDERER_LIBRARY_OPTIMIZED
131    NAMES CEGUIOgreRenderer CEGUIOgreRenderer-0
132    PATHS $ENV{CEGUIDIR} $ENV{CEGUIOGRERENDERERDIR}
133    PATH_SUFFIXES lib bin
134  )
135  FIND_LIBRARY(CEGUI_OGRE_RENDERER_LIBRARY_DEBUG
136    NAMES CEGUIOgreRendererd CEGUIOgreRenderer_d CEGUIOgreRenderer-0_d
137    PATHS $ENV{CEGUIDIR} $ENV{CEGUIOGRERENDERERDIR}
138    PATH_SUFFIXES lib bin
139  )
140  SET(CEGUI_OGRE_RENDERER_REQUIRED_VARIABLES
141    CEGUI_OGRE_RENDERER_INCLUDE_DIR
142    CEGUI_OGRE_RENDERER_LIBRARY_OPTIMIZED
143  )
144ELSE()
145  SET(CEGUI_OLD_VERSION TRUE)
146  SET(CEGUI_OGRE_RENDERER_BUILD_REQUIRED TRUE)
147ENDIF()
148
149# Handle the REQUIRED argument and set CEGUI_FOUND
150# Also checks the version requirements if given
151FIND_PACKAGE_HANDLE_ADVANCED_ARGS(CEGUI DEFAULT_MSG "${CEGUI_VERSION}"
152  CEGUI_INCLUDE_DIR
153  CEGUI_LIBRARY_OPTIMIZED
154  CEGUILUA_INCLUDE_DIR
155  CEGUILUA_LIBRARY_OPTIMIZED
156  CEGUI_TOLUA_INCLUDE_DIR
157  CEGUI_TOLUA_LIBRARY_OPTIMIZED
158  ${CEGUI_OGRE_RENDERER_REQUIRED_VARIABLES}
159)
160
161# Collect optimized and debug libraries
162HANDLE_LIBRARY_TYPES(CEGUI)
163HANDLE_LIBRARY_TYPES(CEGUILUA)
164HANDLE_LIBRARY_TYPES(CEGUI_TOLUA)
165IF(NOT CEGUI_OGRE_RENDERER_BUILD_REQUIRED)
166  HANDLE_LIBRARY_TYPES(CEGUI_OGRE_RENDERER)
167ENDIF()
168
169MARK_AS_ADVANCED(
170  CEGUI_INCLUDE_DIR
171  CEGUI_LIBRARY_OPTIMIZED
172  CEGUI_LIBRARY_DEBUG
173  CEGUILUA_INCLUDE_DIR
174  CEGUILUA_LIBRARY_OPTIMIZED
175  CEGUILUA_LIBRARY_DEBUG
176  CEGUI_TOLUA_INCLUDE_DIR
177  CEGUI_TOLUA_LIBRARY_OPTIMIZED
178  CEGUI_TOLUA_LIBRARY_DEBUG
179  CEGUI_OGRE_RENDERER_INCLUDE_DIR
180  CEGUI_OGRE_RENDERER_LIBRARY_OPTIMIZED
181  CEGUI_OGRE_RENDERER_LIBRARY_DEBUG
182)
Note: See TracBrowser for help on using the repository browser.