CMake: workaround for Xxf86vm when building on X11 platforms

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10974 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
undef-in-ed 2012-03-15 12:49:44 +00:00
parent 6e148e2aaf
commit 9c1d373c4b
2 changed files with 38 additions and 11 deletions

View File

@ -40,10 +40,6 @@ include_directories(${STK_SOURCE_DIR})
find_package(Irrlicht 1.8 REQUIRED)
include_directories(${IRRLICHT_INCLUDE_DIRS})
# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
# OpenAL
if(MSVC)
find_library(OPENAL_LIBRARY OpenAL32 REQUIRED PATHS "${PROJECT_SOURCE_DIR}/dependencies/lib")
@ -144,10 +140,9 @@ else()
# Build the final executable
add_executable(supertuxkart ${STK_SOURCES} ${STK_HEADERS})
if(CYGWIN)
target_link_libraries(supertuxkart pthread)
elseif(UNIX)
target_link_libraries(supertuxkart pthread Xxf86vm)
if(UNIX OR CYGWIN)
target_link_libraries(supertuxkart pthread)
endif()
endif()

View File

@ -30,7 +30,9 @@ endif()
# 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
PATHS ${IRRLICHT_DIR}
/Library/Frameworks/IrrFramework.framework/Versions/A/Headers/
${PROJECT_SOURCE_DIR}/dependencies/include/irrlicht
PATH_SUFFIXES include irrlicht)
if(APPLE)
@ -58,7 +60,37 @@ 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})
set(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARY})
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 does not work without Xxf86vm library...
if(NOT IRRLICHT_WITHOUT_XF86VM)
set(CMAKE_REQUIRED_LIBRARIES ${IRRLICHT_LIBRARIES} ${IRRLICHT_XF86VM_LIBRARY})
check_cxx_source_compiles(${IRRLICHT_SNIPPET} IRRLICHT_WITH_XF86VM)
# ... but with Xxf86vm, then add this library to Irrlicht dependencies
if(IRRLICHT_WITH_XF86VM)
set(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARIES} ${IRRLICHT_XF86VM_LIBRARY})
else()
message(WARNING "Irrlicht does not compile with and without Xxf86vm")
endif()
endif()
endif()