summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2014-04-10 11:28:22 +0200
committerAndreas Schneider <asn@cryptomilk.org>2014-04-10 11:28:22 +0200
commit93cd14ba4cd46626313ced8582f76a1b1bceb349 (patch)
tree75598a896167dedabc88f34e3d9a354f81b44386
parent14ee9c684e69bb00eaeb0043d06cde7d58effe33 (diff)
downloadcmocka-93cd14ba4cd46626313ced8582f76a1b1bceb349.tar.gz
cmocka-93cd14ba4cd46626313ced8582f76a1b1bceb349.tar.bz2
cmocka-93cd14ba4cd46626313ced8582f76a1b1bceb349.zip
cmake: Update UseDoxygen.cmake.
-rw-r--r--cmake/Modules/UseDoxygen.cmake174
-rw-r--r--doc/Doxyfile.in (renamed from doc/doxy.config.in)0
2 files changed, 107 insertions, 67 deletions
diff --git a/cmake/Modules/UseDoxygen.cmake b/cmake/Modules/UseDoxygen.cmake
index 723220b..72c384d 100644
--- a/cmake/Modules/UseDoxygen.cmake
+++ b/cmake/Modules/UseDoxygen.cmake
@@ -2,10 +2,18 @@
#
# Adds a doxygen target that runs doxygen to generate the html
# and optionally the LaTeX API documentation.
-# The doxygen target is added to the doc target as dependency.
+# The doxygen target is added to the doc target as a dependency.
# i.e.: the API documentation is built with:
# make doc
#
+# USAGE: GLOBAL INSTALL
+#
+# Install it with:
+# cmake ./ && sudo make install
+# Add the following to the CMakeLists.txt of your project:
+# include(UseDoxygen OPTIONAL)
+# Optionally copy Doxyfile.in in the directory of CMakeLists.txt and edit it.
+#
# USAGE: INCLUDE IN PROJECT
#
# set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
@@ -13,88 +21,120 @@
# Add the Doxyfile.in and UseDoxygen.cmake files to the projects source directory.
#
#
-# Variables you may define are:
-# DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored. Defaults to "doc".
+# CONFIGURATION
#
-# DOXYFILE_LATEX_DIR - Directory where the Doxygen LaTeX output is stored. Defaults to "latex".
-#
-# DOXYFILE_HTML_DIR - Directory where the Doxygen html output is stored. Defaults to "html".
+# To configure Doxygen you can edit Doxyfile.in and set some variables in cmake.
+# Variables you may define are:
+# DOXYFILE_SOURCE_DIR - Path where the Doxygen input files are.
+# Defaults to the current source directory.
+# DOXYFILE_EXTRA_SOURCES - Additional source diretories/files for Doxygen to scan.
+# The Paths should be in double quotes and separated by space. e.g.:
+# "${CMAKE_CURRENT_BINARY_DIR}/foo.c" "${CMAKE_CURRENT_BINARY_DIR}/bar/"
+#
+# DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored.
+# Defaults to "${CMAKE_CURRENT_BINARY_DIR}/doc".
+#
+# DOXYFILE_LATEX - ON/OFF; Set to "ON" if you want the LaTeX documentation
+# to be built.
+# DOXYFILE_LATEX_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where
+# the Doxygen LaTeX output is stored. Defaults to "latex".
+#
+# DOXYFILE_HTML_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where
+# the Doxygen html output is stored. Defaults to "html".
#
#
-# Copyright (c) 2009-2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
-# Copyright (c) 2010 Andreas Schneider <mail@cynapses.org>
+# Copyright (c) 2009, 2010, 2011 Tobias Rautenkranz <tobias@rautenkranz.ch>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
-macro(usedoxygen_set_default name value)
- if(NOT DEFINED "${name}")
- set("${name}" "${value}")
- endif()
+macro(usedoxygen_set_default name value type docstring)
+ if(NOT DEFINED "${name}")
+ set("${name}" "${value}" CACHE "${type}" "${docstring}")
+ endif()
endmacro()
find_package(Doxygen)
if(DOXYGEN_FOUND)
- find_file(DOXYFILE_IN
- NAMES
- doxy.config.in
- PATHS
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_ROOT}/Modules/
- NO_DEFAULT_PATH)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(DOXYFILE_IN DEFAULT_MSG "DOXYFILE_IN")
+ find_file(DOXYFILE_IN "Doxyfile.in"
+ PATHS "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ROOT}/Modules/"
+ NO_DEFAULT_PATH
+ DOC "Path to the doxygen configuration template file")
+ set(DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(DOXYFILE_IN DEFAULT_MSG "DOXYFILE_IN")
endif()
if(DOXYGEN_FOUND AND DOXYFILE_IN_FOUND)
- add_custom_target(doxygen ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxy.config)
-
- usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
- usedoxygen_set_default(DOXYFILE_HTML_DIR "html")
-
- set_property(DIRECTORY APPEND PROPERTY
- ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}")
-
- set(DOXYFILE_LATEX FALSE)
- set(DOXYFILE_PDFLATEX FALSE)
- set(DOXYFILE_DOT FALSE)
-
- #find_package(LATEX)
- #if(LATEX_COMPILER AND MAKEINDEX_COMPILER)
- # set(DOXYFILE_LATEX TRUE)
- # usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex")
-
- # set_property(DIRECTORY APPEND PROPERTY
- # ADDITIONAL_MAKE_CLEAN_FILES
- # "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
-
- # if(PDFLATEX_COMPILER)
- # set(DOXYFILE_PDFLATEX TRUE)
- # endif()
- # if(DOXYGEN_DOT_EXECUTABLE)
- # set(DOXYFILE_DOT TRUE)
- # endif()
-
- # add_custom_command(TARGET doxygen
- # POST_BUILD
- # COMMAND ${CMAKE_MAKE_PROGRAM}
- # WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
- #endif()
-
- configure_file(${DOXYFILE_IN} ${CMAKE_CURRENT_BINARY_DIR}/doxy.config ESCAPE_QUOTES IMMEDIATE @ONLY)
- if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/doxy.trac.in)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy.trac.in ${CMAKE_CURRENT_BINARY_DIR}/doxy.trac ESCAPE_QUOTES IMMEDIATE @ONLY)
- add_custom_target(doxygen-trac ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxy.trac)
- endif()
-
- get_target_property(DOC_TARGET doc TYPE)
- if(NOT DOC_TARGET)
- add_custom_target(doc)
- endif()
-
- add_dependencies(doc doxygen)
+ usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc"
+ PATH "Doxygen output directory")
+ usedoxygen_set_default(DOXYFILE_HTML_DIR "html"
+ STRING "Doxygen HTML output directory")
+ usedoxygen_set_default(DOXYFILE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
+ PATH "Input files source directory")
+ usedoxygen_set_default(DOXYFILE_EXTRA_SOURCE_DIRS ""
+ STRING "Additional source files/directories separated by space")
+ set(DOXYFILE_SOURCE_DIRS "\"${DOXYFILE_SOURCE_DIR}\" ${DOXYFILE_EXTRA_SOURCES}")
+
+ usedoxygen_set_default(DOXYFILE_LATEX YES BOOL "Generate LaTeX API documentation" OFF)
+ usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex" STRING "LaTex output directory")
+
+ mark_as_advanced(DOXYFILE_OUTPUT_DIR DOXYFILE_HTML_DIR DOXYFILE_LATEX_DIR
+ DOXYFILE_SOURCE_DIR DOXYFILE_EXTRA_SOURCE_DIRS DOXYFILE_IN)
+
+
+ set_property(DIRECTORY
+ APPEND PROPERTY
+ ADDITIONAL_MAKE_CLEAN_FILES
+ "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}")
+
+ add_custom_target(doxygen
+ COMMAND "${DOXYGEN_EXECUTABLE}"
+ "${DOXYFILE}"
+ COMMENT "Writing documentation to ${DOXYFILE_OUTPUT_DIR}..."
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
+
+ set(DOXYFILE_DOT "NO")
+ if(DOXYGEN_DOT_EXECUTABLE)
+ set(DOXYFILE_DOT "YES")
+ endif()
+
+ ## LaTeX
+ set(DOXYFILE_PDFLATEX "NO")
+
+ set_property(DIRECTORY APPEND PROPERTY
+ ADDITIONAL_MAKE_CLEAN_FILES
+ "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
+
+ if(DOXYFILE_LATEX STREQUAL "ON")
+ set(DOXYFILE_GENERATE_LATEX "YES")
+ find_package(LATEX)
+ find_program(DOXYFILE_MAKE make)
+ mark_as_advanced(DOXYFILE_MAKE)
+ if(LATEX_COMPILER AND MAKEINDEX_COMPILER AND DOXYFILE_MAKE)
+ if(PDFLATEX_COMPILER)
+ set(DOXYFILE_PDFLATEX "YES")
+ endif()
+
+ add_custom_command(TARGET doxygen
+ POST_BUILD
+ COMMAND "${DOXYFILE_MAKE}"
+ COMMENT "Running LaTeX for Doxygen documentation in ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}..."
+ WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
+ else()
+ set(DOXYGEN_LATEX "NO")
+ endif()
+ else()
+ set(DOXYFILE_GENERATE_LATEX "NO")
+ endif()
+
+
+ configure_file("${DOXYFILE_IN}" "${DOXYFILE}" @ONLY)
+
+ add_custom_target(doc)
+ add_dependencies(doc doxygen)
endif()
diff --git a/doc/doxy.config.in b/doc/Doxyfile.in
index 5de47b1..5de47b1 100644
--- a/doc/doxy.config.in
+++ b/doc/Doxyfile.in