~unity-team/libusermetrics/trunk

« back to all changes in this revision

Viewing changes to cmake/UseDoxygen.cmake

  • Committer: Bileto Bot
  • Author(s): Pete Woods
  • Date: 2016-12-08 10:50:56 UTC
  • mfrom: (233.1.7 trunk)
  • Revision ID: ci-train-bot@canonical.com-20161208105056-teqkoq2t6ktx9d2e
Compatibility with unversioned cmake-extras modules

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
        # - Run Doxygen
2
 
#
3
 
# Adds a doxygen target that runs doxygen to generate the html
4
 
# and optionally the LaTeX API documentation.
5
 
# The doxygen target is added to the doc target as a dependency.
6
 
# i.e.: the API documentation is built with:
7
 
#  make doc
8
 
#
9
 
# USAGE: GLOBAL INSTALL
10
 
#
11
 
# Install it with:
12
 
#  cmake ./ && sudo make install
13
 
# Add the following to the CMakeLists.txt of your project:
14
 
#  include(UseDoxygen OPTIONAL)
15
 
# Optionally copy Doxyfile.in in the directory of CMakeLists.txt and edit it.
16
 
#
17
 
# USAGE: INCLUDE IN PROJECT
18
 
#
19
 
#  set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
20
 
#  include(UseDoxygen)
21
 
# Add the Doxyfile.in and UseDoxygen.cmake files to the projects source directory.
22
 
#
23
 
#
24
 
# CONFIGURATION
25
 
#
26
 
# To configure Doxygen you can edit Doxyfile.in and set some variables in cmake.
27
 
# Variables you may define are:
28
 
#  DOXYFILE_SOURCE_DIR - Path where the Doxygen input files are.
29
 
#       Defaults to the current source directory.
30
 
#  DOXYFILE_EXTRA_SOURCES - Additional source diretories/files for Doxygen to scan.
31
 
#       The Paths should be in double quotes and separated by space. e.g.:
32
 
#        "${CMAKE_CURRENT_BINARY_DIR}/foo.c" "${CMAKE_CURRENT_BINARY_DIR}/bar/"
33
 
#  
34
 
#  DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored.
35
 
#       Defaults to "${CMAKE_CURRENT_BINARY_DIR}/doc".
36
 
#  
37
 
#  DOXYFILE_LATEX - ON/OFF; Set to "ON" if you want the LaTeX documentation
38
 
#       to be built.
39
 
#  DOXYFILE_LATEX_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where
40
 
#       the Doxygen LaTeX output is stored. Defaults to "latex".
41
 
#  
42
 
#  DOXYFILE_HTML_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where
43
 
#       the Doxygen html output is stored. Defaults to "html".
44
 
#
45
 
 
46
 
#
47
 
#  Copyright (c) 2009, 2010, 2011 Tobias Rautenkranz <tobias@rautenkranz.ch>
48
 
#
49
 
#  Redistribution and use is allowed according to the terms of the New
50
 
#  BSD license.
51
 
#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
52
 
#
53
 
 
54
 
option(
55
 
  BUILD_DOXYGEN
56
 
  "Build Doxygen documentation as part of the default build"
57
 
  OFF
58
 
)
59
 
 
60
 
macro(usedoxygen_set_default name value type docstring)
61
 
        if(NOT DEFINED "${name}")
62
 
                set("${name}" "${value}" CACHE "${type}" "${docstring}")
63
 
        endif()
64
 
endmacro()
65
 
 
66
 
find_package(Doxygen)
67
 
 
68
 
if(DOXYGEN_FOUND)
69
 
        find_file(DOXYFILE_IN "Doxyfile.in"
70
 
                        PATHS ${CMAKE_MODULE_PATH} "${CMAKE_ROOT}/Modules/"
71
 
                        NO_DEFAULT_PATH
72
 
                        DOC "Path to the doxygen configuration template file")
73
 
        set(DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
74
 
        include(FindPackageHandleStandardArgs)
75
 
        find_package_handle_standard_args(DOXYFILE_IN DEFAULT_MSG "DOXYFILE_IN")
76
 
endif()
77
 
 
78
 
if(DOXYGEN_FOUND AND DOXYFILE_IN_FOUND)
79
 
        usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc"
80
 
                PATH "Doxygen output directory")
81
 
        usedoxygen_set_default(DOXYFILE_HTML_DIR "html"
82
 
                STRING "Doxygen HTML output directory")
83
 
        usedoxygen_set_default(DOXYFILE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
84
 
                PATH "Input files source directory")
85
 
        usedoxygen_set_default(DOXYFILE_EXTRA_SOURCE_DIRS ""
86
 
                STRING "Additional source files/directories separated by space")
87
 
        set(DOXYFILE_SOURCE_DIRS "\"${DOXYFILE_SOURCE_DIR}\" ${DOXYFILE_EXTRA_SOURCES}")
88
 
 
89
 
        usedoxygen_set_default(DOXYFILE_LATEX YES BOOL "Generate LaTeX API documentation" OFF)
90
 
        usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex" STRING "LaTex output directory")
91
 
 
92
 
        mark_as_advanced(DOXYFILE_OUTPUT_DIR DOXYFILE_HTML_DIR DOXYFILE_LATEX_DIR
93
 
                DOXYFILE_SOURCE_DIR DOXYFILE_EXTRA_SOURCE_DIRS DOXYFILE_IN)
94
 
 
95
 
 
96
 
        set_property(DIRECTORY 
97
 
                APPEND PROPERTY
98
 
                ADDITIONAL_MAKE_CLEAN_FILES
99
 
                "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}")
100
 
 
101
 
        add_custom_target(doxygen
102
 
                COMMAND "${DOXYGEN_EXECUTABLE}"
103
 
                        "${DOXYFILE}" 
104
 
                COMMENT "Writing documentation to ${DOXYFILE_OUTPUT_DIR}..."
105
 
                WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
106
 
 
107
 
        set(DOXYFILE_DOT "NO")
108
 
        if(DOXYGEN_DOT_EXECUTABLE)
109
 
                set(DOXYFILE_DOT "YES")
110
 
        endif()
111
 
 
112
 
        ## LaTeX
113
 
        set(DOXYFILE_PDFLATEX "NO")
114
 
 
115
 
        set_property(DIRECTORY APPEND PROPERTY
116
 
                ADDITIONAL_MAKE_CLEAN_FILES
117
 
                "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
118
 
 
119
 
        if(DOXYFILE_LATEX STREQUAL "ON")
120
 
                set(DOXYFILE_GENERATE_LATEX "YES")
121
 
                find_package(LATEX)
122
 
                find_program(DOXYFILE_MAKE make)
123
 
                mark_as_advanced(DOXYFILE_MAKE)
124
 
                if(LATEX_COMPILER AND MAKEINDEX_COMPILER AND DOXYFILE_MAKE)
125
 
                        if(PDFLATEX_COMPILER)
126
 
                                set(DOXYFILE_PDFLATEX "YES")
127
 
                        endif()
128
 
 
129
 
                        add_custom_command(TARGET doxygen
130
 
                                POST_BUILD
131
 
                                COMMAND "${DOXYFILE_MAKE}"
132
 
                                COMMENT "Running LaTeX for Doxygen documentation in ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}..."
133
 
                                WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
134
 
                else()
135
 
                        set(DOXYGEN_LATEX "NO")
136
 
                endif()
137
 
        else()
138
 
                set(DOXYFILE_GENERATE_LATEX "NO")
139
 
        endif()
140
 
 
141
 
 
142
 
        configure_file("${DOXYFILE_IN}" "${DOXYFILE}" @ONLY)
143
 
 
144
 
        if (BUILD_DOXYGEN)
145
 
                set(ALL "ALL")
146
 
        endif()
147
 
 
148
 
        get_target_property(DOC_TARGET doc TYPE)
149
 
        if(NOT DOC_TARGET)
150
 
                add_custom_target(doc ${ALL})
151
 
        endif()
152
 
 
153
 
        add_dependencies(doc doxygen)
154
 
endif()