aboutsummaryrefslogtreecommitdiff
path: root/find-modules/FindDocBookXML.cmake
blob: b6d623e4e5ca40cdda4c895a19a0dc273831703a (plain)
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
# Try to find DocBook XML DTDs
# Once done, it will define:
#
#  DocBookXML_FOUND - system has the required DocBook XML DTDs
#  DocBookXML_CURRENTDTD_VERSION - the version of currently used DocBook XML
#     DTD
#  DocBookXML_CURRENTDTD_DIR - the directory containing the definition of
#     the currently used DocBook XML version

# Copyright (c) 2010, Luigi Toscano, <luigi.toscano@tiscali.it>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

set (DocBookXML_CURRENTDTD_VERSION "4.2"
     CACHE INTERNAL "Required version of XML DTDs")

set (DTD_PATH_LIST
    share/xml/docbook/schema/dtd/${DocBookXML_CURRENTDTD_VERSION}
    share/xml/docbook/xml-dtd-${DocBookXML_CURRENTDTD_VERSION}
    share/sgml/docbook/xml-dtd-${DocBookXML_CURRENTDTD_VERSION}
    share/xml/docbook/${DocBookXML_CURRENTDTD_VERSION}
)

find_path (DocBookXML_CURRENTDTD_DIR docbookx.dtd
    PATHS ${CMAKE_SYSTEM_PREFIX_PATH}
    PATH_SUFFIXES ${DTD_PATH_LIST}
)

if (NOT DocBookXML_CURRENTDTD_DIR)
    # hacks for systems that use the package version in the DTD dirs,
    # e.g. Fedora, OpenSolaris
    set (DTD_PATH_LIST)
    foreach (DTD_PREFIX_ITER ${CMAKE_SYSTEM_PREFIX_PATH})
        file(GLOB DTD_SUFFIX_ITER RELATIVE ${DTD_PREFIX_ITER}
            ${DTD_PREFIX_ITER}/share/sgml/docbook/xml-dtd-${DocBookXML_CURRENTDTD_VERSION}-*
        )
        if (DTD_SUFFIX_ITER)
            list (APPEND DTD_PATH_LIST ${DTD_SUFFIX_ITER})
        endif ()
    endforeach ()

    find_path (DocBookXML_CURRENTDTD_DIR docbookx.dtd
        PATHS ${CMAKE_SYSTEM_PREFIX_PATH}
        PATH_SUFFIXES ${DTD_PATH_LIST}
    )
endif ()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args (DocBookXML
    REQUIRED_VARS DocBookXML_CURRENTDTD_DIR DocBookXML_CURRENTDTD_VERSION
    FOUND_VAR DocBookXML_FOUND)

#maintain backwards compatibility
set(DOCBOOKXML_FOUND ${DocBookXML_FOUND})
set(DOCBOOKXML_CURRENTDTD_DIR ${DocBookXML_CURRENTDTD_DIR})
set(DOCBOOKXML_CURRENTDTD_VERSION ${DocBookXML_CURRENTDTD_VERSION})

mark_as_advanced (DocBookXML_CURRENTDTD_DIR DocBookXML_CURRENTDTD_VERSION)