summaryrefslogtreecommitdiff
path: root/cmake/modules/Doxygen.cmake
blob: 675c4bceb373669f2628e144fbe56a80270a337b (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
60
61
62
63
64
65
# generate documentation on 'make doxygen-doc'
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc)

find_package(Doxygen)
set_package_properties(Doxygen PROPERTIES
    DESCRIPTION "Documentation generator"
    URL "http://doxygen.org"
    PURPOSE "Needed to generate the API documentation")

if(DOXYGEN_FOUND)
    find_program(QHELPGENERATOR_EXECUTABLE qhelpgenerator)
    mark_as_advanced(QHELPGENERATOR_EXECUTABLE)

    include(FindPackageHandleStandardArgs)
    find_package_handle_standard_args(QHELPGENERATOR DEFAULT_MSG QHELPGENERATOR_EXECUTABLE)

    set(QT_TAGS_FILE     ${QT_DOC_DIR}/qtcore/qtcore.tags)
    if(EXISTS ${QT_TAGS_FILE})
        find_package(Perl QUIET)

        if (NOT PERL_FOUND)
            message(WARNING "Perl was not found. Qt crosslinks in uploaded docs won't be valid.")
        endif ()
    else()
        message(WARNING "html/qt.tags not found in ${QT_DOC_DIR}. Set the QT_DOC_DIR variable to
point to its location to enable crosslinking.")
        unset(QT_TAGS_FILE)
    endif()

    set(abs_top_builddir ${CMAKE_BINARY_DIR})
    set(abs_top_srcdir   ${CMAKE_SOURCE_DIR})
    set(GENERATE_HTML    YES)
    set(GENERATE_RTF     NO)
    set(GENERATE_CHM     NO)
    set(GENERATE_CHI     NO)
    set(GENERATE_LATEX   NO)
    set(GENERATE_MAN     NO)
    set(GENERATE_XML     NO)
    set(GENERATE_QHP     ${QHELPGENERATOR_FOUND})
    configure_file(doxygen.cfg.in ${CMAKE_BINARY_DIR}/doxygen.cfg)
    add_custom_target(doxygen-doc
        ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/doxygen.cfg
        SOURCES
            doxygen.cfg.in
            TelepathyQt/account-capability-filter.dox
            TelepathyQt/and-filter.dox
            TelepathyQt/async-model.dox
            TelepathyQt/callbacks.dox
            TelepathyQt/examples.dox
            TelepathyQt/filter.dox
            TelepathyQt/generic-capability-filter.dox
            TelepathyQt/generic-property-filter.dox
            TelepathyQt/groups.dox
            TelepathyQt/main.dox
            TelepathyQt/method-invocation-context.dox
            TelepathyQt/not-filter.dox
            TelepathyQt/or-filter.dox
            TelepathyQt/shared-ptr.dox
    )
else()
    # Suppress cmake policy CMP0046 warnings.
    # This target is being used as a dependency in other targets,
    # so it always needs to be available, even if empty.
    add_custom_target(doxygen-doc)
endif()