stk-code_catmod/cmake/FindIrrlicht.cmake
undef-in-ed fb7c95dd66 CMake: fix problem occurring with Wardje's setup
For Wardje both tests (with and without Xxf86vm) failed because of gcc
being unable to execute 'as'. His error log showed also tests executed
by FindX11 (provided by CMake itself) failed because of this.
Not sure what is broken exactly but this patch circumvents it.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10980 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-03-15 20:27:44 +00:00

81 lines
3.2 KiB
CMake

# - Find Irrlicht
# Find the Irrlicht includes and libraries
#
# Following variables are provided:
# IRRLICHT_FOUND
# True if Irrlicht has been found
# IRRLICHT_DIR
# Path to Irrlicht
# IRRLICHT_INCLUDE_DIRS
# The include directories of Irrlicht
# IRRLICHT_LIBRARIES
# Irrlicht library list
set(IRRLICHT_DIR "" CACHE PATH "Path to Irrlicht")
# Find include directory and library
find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
PATHS ${IRRLICHT_DIR}
/Library/Frameworks/IrrFramework.framework/Versions/A/Headers/
${PROJECT_SOURCE_DIR}/dependencies/include/irrlicht
PATH_SUFFIXES include irrlicht)
if(APPLE)
find_library(IRRLICHT_LIBRARY NAMES IrrFramework PATHS /Library/Frameworks/IrrFramework.framework)
else()
find_library(IRRLICHT_LIBRARY NAMES Irrlicht libIrrlicht
PATHS ${IRRLICHT_DIR}/lib/Linux ${PROJECT_SOURCE_DIR}/dependencies/lib ${PROJECT_SOURCE_DIR})
endif()
# Determine Irrlicht version
if(EXISTS ${IRRLICHT_INCLUDE_DIR}/IrrCompileConfig.h)
file(STRINGS ${IRRLICHT_INCLUDE_DIR}/IrrCompileConfig.h IRRLICHT_COMPILE_CONFIG REGEX IRRLICHT_VERSION)
string(REGEX MATCH "IRRLICHT_VERSION_MAJOR ([0-9]+)" _tmp ${IRRLICHT_COMPILE_CONFIG})
set(IRRLICHT_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "IRRLICHT_VERSION_MINOR ([0-9]+)" _tmp ${IRRLICHT_COMPILE_CONFIG})
set(IRRLICHT_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "IRRLICHT_VERSION_REVISION ([0-9]+)" _tmp ${IRRLICHT_COMPILE_CONFIG})
set(IRRLICHT_VERSION_REVISION ${CMAKE_MATCH_1})
set(IRRLICHT_VERSION "${IRRLICHT_VERSION_MAJOR}.${IRRLICHT_VERSION_MINOR}.${IRRLICHT_VERSION_REVISION}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Irrlicht
REQUIRED_VARS IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR
VERSION_VAR IRRLICHT_VERSION)
# STK uses Irrlicht/OpenGL on all platforms
find_package(OpenGL REQUIRED)
# Publish variables
set(IRRLICHT_INCLUDE_DIRS ${IRRLICHT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
set(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARY} ${OPENGL_LIBRARIES})
mark_as_advanced(IRRLICHT_INCLUDE_DIR IRRLICHT_LIBRARY)
# Check if Xxf86vm is required when building for platforms using X11
if(UNIX AND NOT APPLE AND NOT CYGWIN)
find_library(IRRLICHT_XF86VM_LIBRARY Xxf86vm)
mark_as_advanced(IRRLICHT_XF86VM_LIBRARY)
set(IRRLICHT_SNIPPET "#include <irrlicht.h>
int main() { irr::createDevice(irr::video::EDT_NULL)\; return 0\; }")
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_INCLUDES ${IRRLICHT_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${IRRLICHT_LIBRARIES})
check_cxx_source_compiles(${IRRLICHT_SNIPPET} IRRLICHT_WITHOUT_XF86VM)
# If it did not work without Xxf86vm library try with it again
if(NOT IRRLICHT_WITHOUT_XF86VM)
set(CMAKE_REQUIRED_LIBRARIES ${IRRLICHT_LIBRARIES} ${IRRLICHT_XF86VM_LIBRARY})
check_cxx_source_compiles(${IRRLICHT_SNIPPET} IRRLICHT_WITH_XF86VM)
if(NOT IRRLICHT_WITH_XF86VM)
message(WARNING "Irrlicht does not compile with and without Xxf86vm")
endif()
# Add Xxf86vm nevertheless as tests might fail under strange circumstances
set(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARIES} ${IRRLICHT_XF86VM_LIBRARY})
endif()
endif()