summaryrefslogtreecommitdiff
path: root/CMake/Modules/FindGuichan.cmake
blob: dbc863e2f1e8fe0b585f17d41477581b3406ec70 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# - 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()