[evolution-data-server/wip/cmake] GtkDoc tweaks
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/wip/cmake] GtkDoc tweaks
- Date: Thu, 29 Sep 2016 13:51:24 +0000 (UTC)
commit 9ab981edcd83d464dda12ee0c8ab65497cb4d3e9
Author: Milan Crha <mcrha redhat com>
Date: Thu Sep 29 15:51:51 2016 +0200
GtkDoc tweaks
cmake/modules/GtkDoc.cmake | 84 +++++++++++++++++++++++++++++--------------
1 files changed, 56 insertions(+), 28 deletions(-)
---
diff --git a/cmake/modules/GtkDoc.cmake b/cmake/modules/GtkDoc.cmake
index 0215c9c..8545bf4 100644
--- a/cmake/modules/GtkDoc.cmake
+++ b/cmake/modules/GtkDoc.cmake
@@ -1,4 +1,19 @@
# GtkDoc.cmake
+#
+# Macros to support develper documentation build from sources with gtk-doc.
+#
+# add_gtkdoc(_module _namespace _deprecated_guards _srcdirsvar _depsvar _ignoreheadersvar)
+# Adds rules to build developer documentation using gtk-doc for some part.
+# Arguments:
+# _module - the module name, like 'camel'; it expects ${_part}-docs.sgml.in in the
CMAKE_CURRENT_SOURCE_DIR
+# _namespace - namespace for symbols
+# _deprecated_guards - define name, which guards deprecated symbols
+# _srcdirsvar - variable with dirs where the source files are located
+# _depsvar - a variable with dependencies (targets)
+# _ignoreheadersvar - a variable with a set of header files to ignore
+#
+# It also adds custom target gtkdoc-rebuild-${_module}-sgml to rebuild the sgml.in
+# file based on the current sources.
include(PrintableOptions)
@@ -18,33 +33,13 @@ if(NOT (GTKDOC_SCAN AND GTKDOC_MKDB AND GTKDOC_MKHTML AND GTKDOC_FIXXREF))
return()
endif()
-# To regenerate libical-glib-docs.xml.in from current sources use these steps:
-# a) delete ${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml
-# b) go to ${CMAKE_CURRENT_BINARY_DIR} and run command:
-# gtkdoc-scan --module=libical-glib --source-dir=../../../src/libical-glib/
-# --deprecated-guards="LIBICAL_GLIB_DISABLE_DEPRECATED"
-# --ignore-headers=libical-glib-private.h --rebuild-sections --rebuild-types
-# c) generate the libical-glib-docs.xml file with command:
-# gtkdoc-mkdb --module=libical-glib --output-format=xml
-# --source-dir=../../../src/libical-glib/ --xml-mode --name-space=i-cal
-# d) copy the newly created libical-glib-docs.xml
-# to ${CURRENT_SOURCE_DIR}/libical-glib-docs.xml.in
-# e) compare the changes in the file and return back what should be left,
-# like the replacement of the "[Insert title here]" and the <bookinfo/> content
-
-if(NOT TARGET gtkdoc)
+if(NOT TARGET gtkdocs)
add_custom_target(gtkdocs ALL)
-endif(NOT TARGET gtkdoc)
+endif(NOT TARGET gtkdocs)
-# add_gtkdoc_rules
-# Add rules to build developer documentation using gtk-doc for some part.
-# Arguments:
-# _module - the module name, like 'camel'; it expects ${_part}-docs.sgml.in in the
CMAKE_CURRENT_SOURCE_DIR
-# _namespace - namespace for symbols
-# _deprecated_guards - define name, which guards deprecated symbols
-# _srcdirsvar - variable with dirs where the source files are located
-# _depsvar - a variable with dependencies (targets)
-# _ignoreheadersvar - a variable with a set of header files to ignore
+if(NOT TARGET gtkdoc-rebuild-sgmls)
+ add_custom_target(gtkdoc-rebuild-sgmls)
+endif(NOT TARGET gtkdoc-rebuild-sgmls)
macro(add_gtkdoc _module _namespace _deprecated_guards _srcdirsvar _depsvar _ignoreheadersvar)
configure_file(
@@ -105,17 +100,50 @@ macro(add_gtkdoc _module _namespace _deprecated_guards _srcdirsvar _depsvar _ign
COMMENT "Generating ${_module} documentation"
)
- add_custom_target(${_module}-gtkdoc
+ add_custom_target(gtkdoc-${_module}
DEPENDS html/index.html
)
if(${_depsvar})
- add_dependencies(${_module}-gtkdoc ${${_depsvar}})
+ add_dependencies(gtkdoc-${_module} ${${_depsvar}})
endif(${_depsvar})
- add_dependencies(gtkdocs ${_module}-gtkdoc)
+ add_dependencies(gtkdocs gtkdoc-${_module})
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
DESTINATION ${OUTPUT_DOCDIR}
)
+
+ # ***************************************
+ # sgml.in file rebuild, unconditional
+ # ***************************************
+ add_custom_target(gtkdoc-rebuild-${_module}-sgml
+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/tmp"
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/tmp"
+
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}/tmp"
+ ${GTKDOC_SCAN}
+ --module=${_module}
+ --deprecated-guards="${_deprecated_guards}"
+ --ignore-headers="${_ignore_headers}"
+ --rebuild-sections
+ --rebuild-types
+ ${_srcdirs}
+
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}/tmp"
+ ${GTKDOC_MKDB}
+ --module=${_module}
+ --name-space=${_namespace}
+ --main-sgml-file="${CMAKE_CURRENT_BINARY_DIR}/tmp/${_module}-docs.sgml"
+ --sgml-mode
+ --output-format=xml
+ ${_srcdirs}
+
+ COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/tmp/${_module}-docs.sgml
${CMAKE_CURRENT_SOURCE_DIR}/${_module}-docs.sgml.in
+
+ COMMAND ${CMAKE_COMMAND} -E echo "File '${CMAKE_CURRENT_SOURCE_DIR}/${_module}-docs.sgml.in'
overwritten, make sure you replace generated strings with proper content before committing."
+ )
+
+ add_dependencies(gtkdoc-rebuild-sgmls gtkdoc-rebuild-${_module}-sgml)
+
endmacro(add_gtkdoc)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]