################################################################################ # FindCEGUI # # Locate CEGUI LIBRARIES # # This module defines # CEGUI_FOUND, if false, do not try to link to CEGUI # CEGUI_INCLUDE_DIR, where to find headers. # CEGUI_LIBRARIES, the LIBRARIES to link against # CEGUI_BINARY_REL - location of the main CEGUI binary (win32 non-static only, release) # CEGUI_BINARY_DBG - location of the main CEGUI binaries (win32 non-static only, debug) # # # Modules : # CEGUI_${COMPONENT}_FOUND - ${COMPONENT} is available # CEGUI_${COMPONENT}_INCLUDE_DIRS - additional include directories for ${COMPONENT} # CEGUI_${COMPONENT}_LIBRARIES - link these to use ${COMPONENT} # CEGUI_${COMPONENT}_BINARY_REL - location of the component binary (win32 non-static only, release) # CEGUI_${COMPONENT}_BINARY_DBG - location of the component binary (win32 non-static only, debug) # # VERSION 0.7.X: # WindowsRenderer: # Falagard # Renderer: # Direct3D9Renderer Direct3D10Renderer Direct3D11Renderer IrrlichtRenderer NullRenderer OgreRenderer OpenGLRenderer # ImageCodec: # CoronaImageCodec DevILImageCodec FreeImageImageCodec SILLYImageCodec STBImageCodec TGAImageCodec # Parser: # ExpatParser LibxmlParser RapidXMLParser TinyXMLParser XercesParser) # Script: # LuaScriptModule toluapp # VERSION 0.8.X: # WindowsRenderer: # CoreWindowRendererSet # Renderer: # Direct3D9Renderer Direct3D10Renderer Direct3D11Renderer IrrlichtRenderer NullRenderer OgreRenderer OpenGLRenderer OpenGL3Renderer OpenGLESRenderer # ImageCodec: # CoronaImageCodec DevILImageCodec FreeImageImageCodec SILLYImageCodec STBImageCodec TGAImageCodec PVRImageCodec # Parser: # ExpatParser LibXMLParser RapidXMLParser TinyXMLParser XercesParser) # Script: # LuaScriptModule # # author: Guillaume Smaha # # People have asked us to include a FindCEGUI that is high quality that they will # be able to copy and use to find CEGUI, so we have finally done that. # # If you have improvements for this scripts, please consider sending them upstream. # See https://bitbucket.org/cegui/cegui ################################################################################ ################################################################################ # Get the value of a preprocessor entry ################################################################################ macro(get_preprocessor_entry CONTENTS KEYWORD VARIABLE) string(REGEX MATCH "# *define +${KEYWORD} +((\"([^\n]*)\")|([^ \n]*))" PREPROC_TEMP_VAR ${${CONTENTS}} ) if (CMAKE_MATCH_3) set(${VARIABLE} ${CMAKE_MATCH_3}) else () set(${VARIABLE} ${CMAKE_MATCH_4}) endif () endmacro() ################################################################################ # Check if exist a preprocessor entry ################################################################################ macro(has_preprocessor_entry CONTENTS KEYWORD VARIABLE) string(REGEX MATCH "\n *# *define +(${KEYWORD})" PREPROC_TEMP_VAR ${${CONTENTS}} ) if (CMAKE_MATCH_1) set(${VARIABLE} TRUE) else () set(${VARIABLE} FALSE) endif () endmacro() ################################################################################ # Replace the value of a preprocessor entry ################################################################################ macro(replace_preprocessor_entry VARIABLE KEYWORD NEW_VALUE) string(REGEX REPLACE "(// *)?# *define +${KEYWORD} +[^ \n]*" "#define ${KEYWORD} ${NEW_VALUE}" ${VARIABLE}_TEMP ${${VARIABLE}} ) set(${VARIABLE} ${${VARIABLE}_TEMP}) endmacro() ################################################################################ # Define the value of preprocessor entry ################################################################################ macro(set_preprocessor_entry VARIABLE KEYWORD ENABLE) if (${ENABLE}) set(TMP_REPLACE_STR "#define ${KEYWORD}") else () set(TMP_REPLACE_STR "// #define ${KEYWORD}") endif () string(REGEX REPLACE "(// *)?# *define +${KEYWORD} *\n" ${TMP_REPLACE_STR} ${VARIABLE}_TEMP ${${VARIABLE}} ) set(${VARIABLE} ${${VARIABLE}_TEMP}) endmacro() ################################################################################ # Begin processing of package ################################################################################ macro(findpkg_begin PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Looking for ${PREFIX}...") endif () endmacro(findpkg_begin) ################################################################################ # Display a status message unless FIND_QUIETLY is set ################################################################################ macro(pkg_message PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS ${ARGN}) endif () endmacro(pkg_message) ################################################################################ # Get environment variable, define it as ENV_$var and make sure backslashes are converted to forward slashes ################################################################################ macro(getenv_path VAR) set(ENV_${VAR} $ENV{${VAR}}) # replace won't work if var is blank if (ENV_${VAR}) string( REGEX REPLACE "\\\\" "/" ENV_${VAR} ${ENV_${VAR}} ) endif () endmacro(getenv_path) ################################################################################ # Construct search paths for includes and libraries from a PREFIX_PATH ################################################################################ macro(create_search_paths PREFIX) foreach(dir ${${PREFIX}_PREFIX_PATH}) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} ${dir}/include ${dir}/Include ${dir}/include/${PREFIX} ${dir}/Headers) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} ${dir}/${PREFIX}/include ${dir}/${PREFIX}/Include ${dir}/${PREFIX}/include/${PREFIX} ${dir}/${PREFIX}/Headers) set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} ${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}) set(${var} "NOTFOUND" CACHE STRING "${var}-docstring" FORCE) endforeach(var) endif () set(${TESTVAR}_INT_CHECK ${${TESTVAR}} CACHE INTERNAL "${TESTVAR}-docstring" FORCE) endmacro(clear_if_changed) ################################################################################ # Try to get some hints from pkg-config, if available ################################################################################ macro(use_pkgconfig PREFIX PKGNAME) find_package(PkgConfig) if (PKG_CONFIG_FOUND) pkg_check_modules(${PREFIX} ${PKGNAME} QUIET) endif () endmacro (use_pkgconfig) ################################################################################ # Couple a set of release AND debug libraries (or frameworks) ################################################################################ macro(make_library_set PREFIX) if (${PREFIX}_FWK) set(${PREFIX} ${${PREFIX}_FWK}) elseif (${PREFIX}_REL AND ${PREFIX}_DBG) set(${PREFIX} optimized ${${PREFIX}_REL} debug ${${PREFIX}_DBG}) elseif (${PREFIX}_REL) set(${PREFIX} ${${PREFIX}_REL}) elseif (${PREFIX}_DBG) set(${PREFIX} ${${PREFIX}_DBG}) endif () endmacro(make_library_set) ################################################################################ # Generate debug names from given release names ################################################################################ macro(get_debug_names PREFIX) foreach(i ${${PREFIX}}) set(${PREFIX}_DBG ${${PREFIX}_DBG} ${i}d ${i}D ${i}_d ${i}_D ${i}_debug ${i}) endforeach(i) endmacro(get_debug_names) ################################################################################ # Add the parent dir from DIR to VAR ################################################################################ macro(add_parent_dir VAR DIR) get_filename_component(${DIR}_TEMP "${${DIR}}/.." ABSOLUTE) set(${VAR} ${${VAR}} ${${DIR}_TEMP}) endmacro(add_parent_dir) ################################################################################ # Do the final processing for the package find. ################################################################################ macro(findpkg_finish PREFIX) # skip if already processed during this run if (NOT ${PREFIX}_FOUND) if (${PREFIX}_INCLUDE_DIR AND ${PREFIX}_LIBRARY) set(${PREFIX}_FOUND TRUE) set(${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIR}) set(${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARY}) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Found ${PREFIX}: ${${PREFIX}_LIBRARIES}") endif () else () if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Could not locate ${PREFIX}") endif () if (${PREFIX}_FIND_REQUIRED) message(FATAL_ERROR "Required library ${PREFIX} not found! Install the library (including dev packages) and try again. If the library is already installed, set the missing variables manually in cmake.") endif () endif () mark_as_advanced(${PREFIX}_FOUND ${PREFIX}_LIBRARIES ${PREFIX}_INCLUDE_DIRS ${PREFIX}_INCLUDE_DIR ${PREFIX}_LIBRARY ${PREFIX}_LIBRARY_REL ${PREFIX}_LIBRARY_DBG ${PREFIX}_LIBRARY_FWK) endif () endmacro(findpkg_finish) ######################################################### # Find cegui modules ######################################################### macro(cegui_find_modules PLUGIN_COMPONENT) foreach (comp ${CEGUI_${PLUGIN_COMPONENT}_MODULES}) set(LIBNAME ${comp}) set(HEADER ${CEGUI_${PLUGIN_COMPONENT}_MODULES_${comp}_HEADER}) set(PKGCONFIG ${CEGUI_${PLUGIN_COMPONENT}_MODULES_${comp}_PKGCONFIG}) set(CHECKNOPREFIX ${CEGUI_${PLUGIN_COMPONENT}_MODULES_${comp}_CHECKNOPREFIX}) if (NOT "${HEADER}" STREQUAL "") findpkg_begin(CEGUI_${comp}) if(PKGCONFIG) use_pkgconfig(CEGUI_${comp}_PKGC "CEGUI-${PKGCONFIG}") if(NOT CEGUI_${comp}_PKGC_INCLUDE_DIRS AND CEGUI_LIB_SUFFIX) use_pkgconfig(CEGUI_${comp}_PKGC "CEGUI${CEGUI_LIB_SUFFIX}-${PKGCONFIG}") endif() endif() list(LENGTH HEADER len) math(EXPR lenmax "${len} - 1") foreach(val RANGE ${lenmax}) list(GET HEADER ${val} pathHeader) if(CEGUI_${comp}_INCLUDE_DIR) set(CEGUI_${comp}_INCLUDE_DIR_TMP ${CEGUI_${comp}_INCLUDE_DIR}) unset(CEGUI_${comp}_INCLUDE_DIR CACHE) endif() get_filename_component(head "${pathHeader}" NAME) get_filename_component(dir "${pathHeader}" DIRECTORY) if (NOT "${dir}" STREQUAL "") set(dir "${dir}/") endif () find_path(CEGUI_${comp}_INCLUDE_DIR NAMES ${head} HINTS ${CEGUI_INCLUDE_DIRS} ${CEGUI_${comp}_PKGC_INCLUDE_DIRS} PATH_SUFFIXES ${dir} CEGUI/${dir}) if(CEGUI_${comp}_INCLUDE_DIR_TMP) set(CEGUI_${comp}_INCLUDE_DIR ${CEGUI_${comp}_INCLUDE_DIR} ${CEGUI_${comp}_INCLUDE_DIR_TMP}) unset(CEGUI_${comp}_INCLUDE_DIR_TMP CACHE) endif() endforeach() list(REMOVE_DUPLICATES CEGUI_${comp}_INCLUDE_DIR) set(CEGUI_SUBLIB_DIR "cegui-${CEGUI_VERSION_MAJOR}.${CEGUI_VERSION_MINOR}") set(CEGUI_${comp}_LIBRARY_NAMES "CEGUI${comp}") get_debug_names(CEGUI_${comp}_LIBRARY_NAMES) set(CEGUI_${comp}_LIBRARY_NAMES_SUFFIX "CEGUI${comp}${CEGUI_LIB_SUFFIX}") get_debug_names(CEGUI_${comp}_LIBRARY_NAMES_SUFFIX) find_library(CEGUI_${comp}_LIBRARY_REL NAMES ${CEGUI_${comp}_LIBRARY_NAMES} ${CEGUI_${comp}_LIBRARY_NAMES_SUFFIX} HINTS ${CEGUI_LIBRARY_DIR_REL} ${CEGUI_LIBRARY_DIR_REL}/${CEGUI_SUBLIB_DIR} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") find_library(CEGUI_${comp}_LIBRARY_DBG NAMES ${CEGUI_${comp}_LIBRARY_NAMES_DBG} ${CEGUI_${comp}_LIBRARY_NAMES_SUFFIX_DBG} HINTS ${CEGUI_LIBRARY_DIR_DBG} ${CEGUI_LIBRARY_DIR_DBG}/${CEGUI_SUBLIB_DIR} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Debug") if(CHECKNOPREFIX AND (NOT CEGUI_${comp}_LIBRARY_REL OR NOT CEGUI_${comp}_LIBRARY_DBG)) set(CEGUI_${comp}_LIBRARY_NAMES "${comp}") get_debug_names(CEGUI_${comp}_LIBRARY_NAMES) set(CEGUI_${comp}_LIBRARY_NAMES_SUFFIX "${comp}${CEGUI_LIB_SUFFIX}") get_debug_names(CEGUI_${comp}_LIBRARY_NAMES_SUFFIX) find_library(CEGUI_${comp}_LIBRARY_REL NAMES ${CEGUI_${comp}_LIBRARY_NAMES} ${CEGUI_${comp}_LIBRARY_NAMES_SUFFIX} HINTS ${CEGUI_LIBRARY_DIR_REL} ${CEGUI_LIBRARY_DIR_REL}/${CEGUI_SUBLIB_DIR} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") find_library(CEGUI_${comp}_LIBRARY_DBG NAMES ${CEGUI_${comp}_LIBRARY_NAMES_DBG} ${CEGUI_${comp}_LIBRARY_NAMES_SUFFIX_DBG} HINTS ${CEGUI_LIBRARY_DIR_DBG} ${CEGUI_LIBRARY_DIR_DBG}/${CEGUI_SUBLIB_DIR} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Debug") endif() make_library_set(CEGUI_${comp}_LIBRARY) if (NOT CEGUI_STATIC) if (WIN32) find_file(CEGUI_${comp}_BINARY_REL NAMES "CEGUI${comp}.dll" "CEGUI${comp}${CEGUI_LIB_SUFFIX}.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") find_file(CEGUI_${comp}_BINARY_DBG NAMES "CEGUI${comp}_d.dll" "CEGUI${comp}${CEGUI_LIB_SUFFIX}_d.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} ${CEGUI_${comp}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" "Debug") if(CHECKNOPREFIX AND (NOT CEGUI_${comp}_LIBRARY_REL OR NOT CEGUI_${comp}_LIBRARY_DBG)) find_file(CEGUI_${comp}_BINARY_REL NAMES "${comp}${CEGUI_LIB_SUFFIX}.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") find_file(CEGUI_${comp}_BINARY_DBG NAMES "${comp}${CEGUI_LIB_SUFFIX}_d.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} PATH_SUFFIXES "" "Debug") endif() endif() get_filename_component(CEGUI_${comp}_BINARY_DIR_REL "${CEGUI_${comp}_BINARY_REL}" PATH) get_filename_component(CEGUI_${comp}_BINARY_DIR_DBG "${CEGUI_${comp}_BINARY_DBG}" PATH) mark_as_advanced(CEGUI_${comp}_BINARY_REL CEGUI_${comp}_BINARY_DBG CEGUI_${comp}_BINARY_DIR_REL CEGUI_${comp}_BINARY_DIR_DBG) endif() findpkg_finish(CEGUI_${comp}) endif () endforeach (comp) endmacro(cegui_find_modules) ######################################################### # register a module ######################################################### macro(cegui_register_module TYPE LIBNAME HEADER PKGCONFIG) set(CEGUI_MODULES ${CEGUI_MODULES} ${LIBNAME}) set(CEGUI_${TYPE}_MODULES ${CEGUI_${TYPE}_MODULES} ${LIBNAME}) set(CEGUI_${TYPE}_MODULES_${LIBNAME}_HEADER ${HEADER}) if(NOT "${PKGCONFIG}" STREQUAL "") set(CEGUI_${TYPE}_MODULES_${LIBNAME}_PKGCONFIG ${PKGCONFIG}) endif() endmacro() ######################################################### # Main ######################################################### set(CEGUI_VERSION_MAJOR_DEFAULT "0") # Register var to check change on base set(CEGUI_RESET_VARS CEGUI_CONFIG_INCLUDE_DIR CEGUI_INCLUDE_DIR CEGUI_LIBRARY_REL CEGUI_LIBRARY_DBG) set(CEGUI_PREFIX_WATCH ${CEGUI_PREFIX_PATH}) clear_if_changed(CEGUI_PREFIX_WATCH ${CEGUI_RESET_VARS}) findpkg_begin(CEGUI) # Get path, convert backslashes as ${ENV_${var}} getenv_path(CEGUI_HOME) getenv_path(CEGUI_DIR) getenv_path(CEGUI_ROOT) getenv_path(PROGRAMFILES) # Determine whether to search for a dynamic or static build if (CEGUI_STATIC) set(CMAKE_FIND_LIBRARY_SUFFIXES_OLD "${CMAKE_FIND_LIBRARY_SUFFIXES}") if (WIN32) set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib;.dll") else() set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so") endif() endif () # construct search paths from environmental hints and # OS specific guesses if (WIN32) set(CEGUI_PREFIX_GUESSES ${ENV_PROGRAMFILES}/cegui ${ENV_PROGRAMFILES}/CEGUI C:/CEGUI-SDK C:/lib/cegui [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;CEGUI_HOME] [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;CEGUI_DIR] [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;CEGUI_ROOT] ) elseif (UNIX) set(CEGUI_PREFIX_GUESSES /opt/cegui /opt/CEGUI /usr /usr/local $ENV{HOME}/cegui $ENV{HOME}/CEGUI ) if (APPLE) set(CEGUI_PREFIX_GUESSES ${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx ${CEGUI_PREFIX_GUESSES} ) endif () endif () set(CEGUI_PREFIX_PATH $ENV{CEGUI_HOME} $ENV{CEGUI_DIR} $ENV{CEGUI_ROOT} ${CEGUI_PREFIX_GUESSES} ) # Construct search paths for includes and libraries create_search_paths(CEGUI) # try to locate CEGUI via pkg-config use_pkgconfig(CEGUI_PKGC "CEGUI${CEGUI_LIB_SUFFIX}-${CEGUI_VERSION_MAJOR_DEFAULT}") # locate CEGUI include files find_path(CEGUI_CONFIG_INCLUDE_DIR_PREFIX NAMES CEGUIConfig.h HINTS ${CEGUI_INC_SEARCH_PATH} ${CEGUI_FRAMEWORK_INCLUDES} ${CEGUI_PKGC_INCLUDE_DIRS} PATH_SUFFIXES CEGUI cegui cegui-${CEGUI_VERSION_MAJOR_DEFAULT} cegui-${CEGUI_VERSION_MAJOR_DEFAULT}/CEGUI) find_path(CEGUI_CONFIG_INCLUDE_DIR NAMES CEGUIConfig.h Config.h HINTS ${CEGUI_INC_SEARCH_PATH} ${CEGUI_FRAMEWORK_INCLUDES} ${CEGUI_PKGC_INCLUDE_DIRS} PATH_SUFFIXES CEGUI cegui cegui-${CEGUI_VERSION_MAJOR_DEFAULT} cegui-${CEGUI_VERSION_MAJOR_DEFAULT}/CEGUI) find_path(CEGUI_INCLUDE_DIR NAMES CEGUI.h HINTS ${CEGUI_INC_SEARCH_PATH} ${CEGUI_FRAMEWORK_INCLUDES} ${CEGUI_PKGC_INCLUDE_DIRS} PATH_SUFFIXES CEGUI cegui cegui-${CEGUI_VERSION_MAJOR_DEFAULT} cegui-${CEGUI_VERSION_MAJOR_DEFAULT}/CEGUI) set(CEGUI_INCOMPATIBLE FALSE) if (CEGUI_INCLUDE_DIR) # determine CEGUI version if(CEGUI_CONFIG_INCLUDE_DIR_PREFIX) file(READ ${CEGUI_INCLUDE_DIR}/CEGUIVersion.h CEGUI_TEMP_VERSION_CONTENT) else() file(READ ${CEGUI_INCLUDE_DIR}/Version.h CEGUI_TEMP_VERSION_CONTENT) endif() if (NOT "${CEGUI_TEMP_VERSION_CONTENT}" STREQUAL "") get_preprocessor_entry(CEGUI_TEMP_VERSION_CONTENT CEGUI_VERSION_MAJOR CEGUI_VERSION_MAJOR) get_preprocessor_entry(CEGUI_TEMP_VERSION_CONTENT CEGUI_VERSION_MINOR CEGUI_VERSION_MINOR) get_preprocessor_entry(CEGUI_TEMP_VERSION_CONTENT CEGUI_VERSION_PATCH CEGUI_VERSION_PATCH) get_preprocessor_entry(CEGUI_TEMP_VERSION_CONTENT CEGUI_VERSION_NAME CEGUI_VERSION_NAME) set(CEGUI_VERSION "${CEGUI_VERSION_MAJOR}.${CEGUI_VERSION_MINOR}.${CEGUI_VERSION_PATCH}") pkg_message(CEGUI "Found CEGUI ${CEGUI_VERSION_NAME} (${CEGUI_VERSION})") else() message(SEND_ERROR "Can't found CEGUI version !") set(CEGUI_INCOMPATIBLE FALSE) endif() else () set(CEGUI_INCOMPATIBLE FALSE) endif () if ("${CEGUI_VERSION}" VERSION_GREATER "0.8.0") set(CEGUI_LIB_SUFFIX "-${CEGUI_VERSION_MAJOR}") endif () set(CEGUI_LIBRARY_NAMES "CEGUIBase${CEGUI_LIB_SUFFIX}") get_debug_names(CEGUI_LIBRARY_NAMES) find_library(CEGUI_LIBRARY_REL NAMES ${CEGUI_LIBRARY_NAMES} HINTS ${CEGUI_LIB_SEARCH_PATH} ${CEGUI_PKGC_LIBRARY_DIRS} ${CEGUI_FRAMEWORK_SEARCH_PATH} PATH_SUFFIXES "" "release" "relwithdebinfo" "minsizerel") find_library(CEGUI_LIBRARY_DBG NAMES ${CEGUI_LIBRARY_NAMES_DBG} HINTS ${CEGUI_LIB_SEARCH_PATH} ${CEGUI_PKGC_LIBRARY_DIRS} ${CEGUI_FRAMEWORK_SEARCH_PATH} PATH_SUFFIXES "" "debug") make_library_set(CEGUI_LIBRARY) if (CEGUI_INCOMPATIBLE) set(CEGUI_LIBRARY "NOTFOUND") endif () set(CEGUI_INCLUDE_DIR ${CEGUI_CONFIG_INCLUDE_DIR} ${CEGUI_INCLUDE_DIR}) list(REMOVE_DUPLICATES CEGUI_INCLUDE_DIR) findpkg_finish(CEGUI) # Starting CEGUI 0.8, the headers are in the CEGUI subdirectory, and we must include # its parent rather than directly the subdirectory. Otherwise we'll get compiler errors. if ("${CEGUI_VERSION}" VERSION_GREATER "0.8.0") add_parent_dir(CEGUI_INCLUDE_DIRS_TEMP CEGUI_INCLUDE_DIR) # we basically overwrite CEGUI_INCLUDE_DIR so that it contains only the parent directory. set(CEGUI_INCLUDE_DIR ${CEGUI_INCLUDE_DIRS_TEMP}) endif() set(CEGUI_INCLUDE_DIRS ${CEGUI_INCLUDE_DIR}) mark_as_advanced(CEGUI_CONFIG_INCLUDE_DIR) if (NOT CEGUI_FOUND) return() endif () get_filename_component(CEGUI_LIBRARY_DIR_REL "${CEGUI_LIBRARY_REL}" PATH) get_filename_component(CEGUI_LIBRARY_DIR_DBG "${CEGUI_LIBRARY_DBG}" PATH) set(CEGUI_LIBRARY_DIRS ${CEGUI_LIBRARY_DIR_REL} ${CEGUI_LIBRARY_DIR_DBG}) # find binaries if (NOT CEGUI_STATIC) if (WIN32) find_file(CEGUI_BINARY_REL NAMES "CEGUIBase${CEGUI_LIB_SUFFIX}.dll" "CEGUIBase.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} PATH_SUFFIXES "" "Release" "RelWithDebInfo" "MinSizeRel") find_file(CEGUI_BINARY_DBG NAMES "CEGUIBase${CEGUI_LIB_SUFFIX}_d.dll" "CEGUIBase_d.dll" HINTS ${CEGUI_BIN_SEARCH_PATH} PATH_SUFFIXES "" "Debug") endif() get_filename_component(CEGUI_BINARY_DIR_REL "${CEGUI_BINARY_REL}" PATH) get_filename_component(CEGUI_BINARY_DIR_DBG "${CEGUI_BINARY_DBG}" PATH) mark_as_advanced(CEGUI_BINARY_REL CEGUI_BINARY_DBG CEGUI_BINARY_DIR_REL CEGUI_BINARY_DIR_DBG) endif() if ("${CEGUI_VERSION}" VERSION_GREATER "0.8.0") # Base cegui_register_module(BASE CommonDialogs CommonDialogs/Module.h "") # WindowsRenderer cegui_register_module(WINDOWSRENDERER CoreWindowRendererSet WindowRendererSets/Core/Module.h "") # Renderer cegui_register_module(RENDERER Direct3D9Renderer RendererModules/Direct3D9/Renderer.h "") cegui_register_module(RENDERER Direct3D10Renderer RendererModules/Direct3D10/Renderer.h "") cegui_register_module(RENDERER Direct3D11Renderer RendererModules/Direct3D11/Renderer.h "") cegui_register_module(RENDERER DirectFBRenderer RendererModules/DirectFB/Renderer.h "") cegui_register_module(RENDERER IrrlichtRenderer RendererModules/Irrlicht/Renderer.h "IRRLICHT") cegui_register_module(RENDERER NullRenderer RendererModules/Null/Renderer.h "NULL") cegui_register_module(RENDERER OgreRenderer RendererModules/Ogre/Renderer.h "OGRE") cegui_register_module(RENDERER OpenGLRenderer RendererModules/OpenGL/GLRenderer.h "OPENGL") cegui_register_module(RENDERER OpenGL3Renderer RendererModules/OpenGL/GL3Renderer.h "OPENGL3") cegui_register_module(RENDERER OpenGLESRenderer RendererModules/OpenGLES/Renderer.h "") # ImageCodec cegui_register_module(IMAGECODEC CoronaImageCodec ImageCodecModules/Corona/ImageCodec.h "") cegui_register_module(IMAGECODEC DevILImageCodec ImageCodecModules/DevIL/ImageCodec.h "") cegui_register_module(IMAGECODEC FreeImageImageCodec ImageCodecModules/FreeImage/ImageCodec.h "") cegui_register_module(IMAGECODEC SILLYImageCodec ImageCodecModules/SILLY/ImageCodec.h "") cegui_register_module(IMAGECODEC STBImageCodec ImageCodecModules/STB/ImageCodec.h "") cegui_register_module(IMAGECODEC TGAImageCodec ImageCodecModules/TGA/ImageCodec.h "") cegui_register_module(IMAGECODEC PVRImageCodec ImageCodecModules/PVR/ImageCodec.h "") # Parser cegui_register_module(PARSER ExpatParser XMLParserModules/Expat/XMLParser.h "") cegui_register_module(PARSER LibXMLParser XMLParserModules/Libxml2/XMLParser.h "") cegui_register_module(PARSER RapidXMLParser XMLParserModules/RapidXML/XMLParser.h "") cegui_register_module(PARSER TinyXMLParser XMLParserModules/TinyXML/XMLParser.h "") cegui_register_module(PARSER XercesParser XMLParserModules/Xerces/XMLParser.h "") # Script cegui_register_module(SCRIPT LuaScriptModule ScriptModules/Lua/ScriptModule.h "LUA") else () # WindowsRenderer cegui_register_module(WINDOWSRENDERER FalagardWRBase "WindowRendererSets/Falagard/FalModule.h;falagard/CEGUIFalNamedArea.h" "") # Renderer cegui_register_module(RENDERER Direct3D9Renderer RendererModules/Direct3D9/CEGUIDirect3D9Renderer.h "") cegui_register_module(RENDERER Direct3D10Renderer RendererModules/Direct3D10/CEGUIDirect3D10Renderer.h "") cegui_register_module(RENDERER Direct3D11Renderer RendererModules/Direct3D11/CEGUIDirect3D11Renderer.h "") cegui_register_module(RENDERER DirectFBRenderer RendererModules/DirectFB/CEGUIDirectFBRenderer.h "") cegui_register_module(RENDERER IrrlichtRenderer RendererModules/Irrlicht/CEGUIIrrlichtRenderer.h "") cegui_register_module(RENDERER NullRenderer RendererModules/Null/CEGUINullRenderer.h "NULL") cegui_register_module(RENDERER OgreRenderer RendererModules/Ogre/CEGUIOgreRenderer.h "OGRE") cegui_register_module(RENDERER OpenGLRenderer RendererModules/OpenGL/CEGUIOpenGLRenderer.h "OPENGL") # ImageCodec cegui_register_module(IMAGECODEC CoronaImageCodec ImageCodecModules/CoronaImageCodec/CEGUICoronaImageCodec.h "") cegui_register_module(IMAGECODEC DevILImageCodec ImageCodecModules/DevILImageCodec/CEGUIDevILImageCodec.h "") cegui_register_module(IMAGECODEC FreeImageImageCodec ImageCodecModules/FreeImageImageCodec/CEGUIFreeImageImageCodec.h "") cegui_register_module(IMAGECODEC SILLYImageCodec ImageCodecModules/SILLYImageCodec/CEGUISILLYImageCodec.h "") cegui_register_module(IMAGECODEC STBImageCodec ImageCodecModules/STBImageCodec/CEGUISTBImageCodec.h "") cegui_register_module(IMAGECODEC TGAImageCodec ImageCodecModules/TGAImageCodec/CEGUITGAImageCodec.h "") # Parser cegui_register_module(PARSER ExpatParser XMLParserModules/ExpatParser/CEGUIExpatParser.h "") cegui_register_module(PARSER LibxmlParser XMLParserModules/LibxmlParser/CEGUILibxmlParser.h "") cegui_register_module(PARSER RapidXMLParser XMLParserModules/RapidXMLParser/CEGUIRapidXMLParser.h "") cegui_register_module(PARSER TinyXMLParser XMLParserModules/TinyXMLParser/CEGUITinyXMLParser.h "") cegui_register_module(PARSER XercesParser XMLParserModules/XercesParser/CEGUIXercesParser.h "") # Script cegui_register_module(SCRIPT LuaScriptModule ScriptingModules/LuaScriptModule/CEGUILua.h "") if(WIN32) cegui_register_module(SCRIPT tolua++ ScriptingModules/LuaScriptModule/support/tolua++/tolua++.h "") set(CEGUI_SCRIPT_MODULES_tolua++_CHECKNOPREFIX TRUE) else() cegui_register_module(SCRIPT toluapp ScriptingModules/LuaScriptModule/support/tolua++/tolua++.h "") endif() endif () # Register var to check change on modules set(CEGUI_RESET_MODULES_VARS "") foreach (comp ${CEGUI_MODULES}) set(CEGUI_RESET_MODULES_VARS ${CEGUI_RESET_MODULES_VARS} CEGUI_${comp}_INCLUDE_DIR CEGUI_${comp}_LIBRARY_FWK CEGUI_${comp}_LIBRARY_DBG CEGUI_${comp}_LIBRARY_REL ) endforeach (comp) set(CEGUI_PREFIX_MODULES_WATCH ${CEGUI_PREFIX_MODULES_PATH}) clear_if_changed(CEGUI_PREFIX_WATCH ${CEGUI_RESET_MODULES_VARS}) # Find modules cegui_find_modules(BASE) cegui_find_modules(WINDOWSRENDERER) cegui_find_modules(RENDERER) cegui_find_modules(IMAGECODEC) cegui_find_modules(PARSER) cegui_find_modules(SCRIPT) # Find modules if (CEGUI_STATIC) set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES_OLD}") endif() #Check change on modules clear_if_changed(CEGUI_PREFIX_WATCH) clear_if_changed(CEGUI_PREFIX_MODULES_WATCH)