summaryrefslogblamecommitdiff
path: root/CMake/Modules/FindGuichan.cmake
blob: dbc863e2f1e8fe0b585f17d41477581b3406ec70 (plain) (tree)


































































































                                                                                     
# - Try to find Guichan
# Once done this will define
#
#  GUICHAN_FOUND - system has Guichan
#  GUICHAN_INCLUDE_DIR - the Guichan include directory
#  GUICHAN_LIBRARIES - the libraries needed to use Guichan
#
# Supported components: SDL OpenGL
#
# TODO: Clean up the components stuff and try to add all known
# components when none are specified. May not bail out for not found
# components then, set some var instead...

# Be quiet if Guichan was already found
# We need an extra variable to have the check per component

IF (Guichan_INCLUDE_DIR AND Guichan_LIBRARY)
    SET(Guichan_QUIET TRUE)
ENDIF ()

FIND_PATH(Guichan_INCLUDE_DIR
    NAMES guichan.hpp
    PATHS /usr/include /usr/local/include
    )

FIND_LIBRARY(Guichan_LIBRARY
    NAMES guichan
    PATHS /usr/lib /usr/local/lib
    )

MARK_AS_ADVANCED(Guichan_INCLUDE_DIR Guichan_LIBRARY)

IF (Guichan_INCLUDE_DIR AND Guichan_LIBRARY)
    SET(GUICHAN_FOUND TRUE)
    SET(GUICHAN_INCLUDE_DIR ${Guichan_INCLUDE_DIR})
    SET(GUICHAN_LIBRARIES ${Guichan_LIBRARY})

    IF (NOT Guichan_FIND_QUIETLY AND NOT Guichan_QUIET)
        MESSAGE(STATUS "Found Guichan: ${Guichan_LIBRARY}")
    ENDIF ()
ENDIF ()

# Bail out if Guichan is not found but required
IF (NOT GUICHAN_FOUND AND Guichan_FIND_REQUIRED)
    MESSAGE(FATAL_ERROR "Could NOT find Guichan library ${GUICHAN_INCLUDE_DIR}")
ENDIF ()

# Check for guichan components
FOREACH (COMPONENT ${Guichan_FIND_COMPONENTS})
    SET(COMPONENT_FOUND FALSE)

    IF (COMPONENT STREQUAL "SDL")
        SET(COMPONENT_FOUND TRUE)
        SET(Guichan_HEADER "guichan/sdl.hpp")
        SET(Guichan_LIBRARY "guichan_sdl")
    ENDIF ()

    IF (COMPONENT STREQUAL "OpenGL")
        SET(COMPONENT_FOUND TRUE)
        SET(Guichan_HEADER "guichan/opengl.hpp")
        SET(Guichan_LIBRARY "guichan_opengl")
    ENDIF ()

    IF (NOT COMPONENT_FOUND)
        MESSAGE(FATAL_ERROR "Invalid Guichan component: ${COMPONENT}")
    ENDIF (NOT COMPONENT_FOUND)

    # Check if we already found this component
    IF (Guichan_LIBRARY_${COMPONENT})
        SET(Guichan_QUIET TRUE)
    ELSE ()
        SET(Guichan_QUIET FALSE)
    ENDIF ()

    FIND_LIBRARY(Guichan_LIBRARY_${COMPONENT}
        NAMES ${Guichan_LIBRARY}
        PATHS /usr/lib /usr/local/lib
        )

    MARK_AS_ADVANCED(Guichan_LIBRARY_${COMPONENT})

    IF (NOT EXISTS ${Guichan_INCLUDE_DIR}/${Guichan_HEADER} OR
            NOT Guichan_LIBRARY_${COMPONENT})
        SET(GUICHAN_FOUND FALSE)
        MESSAGE(FATAL_ERROR "Could NOT find Guichan component ${COMPONENT}")
    ENDIF ()

    # Check guichan >= 0.8.0 by searching for the widgetlistener.hpp file.
    SET(Guichan_HEADER "guichan/widgetlistener.hpp")
    IF (NOT EXISTS ${Guichan_INCLUDE_DIR}/${Guichan_HEADER})
            SET(GUICHAN_FOUND FALSE)
            MESSAGE(FATAL_ERROR "Guichan version is less than 0.8.0")
    ENDIF()

    IF (NOT Guichan_FIND_QUIETLY AND NOT Guichan_QUIET)
        MESSAGE(STATUS "Found Guichan ${COMPONENT}: ${Guichan_LIBRARY_${COMPONENT}}")
    ENDIF ()

    SET(GUICHAN_LIBRARIES ${GUICHAN_LIBRARIES} ${Guichan_LIBRARY_${COMPONENT}})
ENDFOREACH()