diff options
author | Olivier Duchateau <duchateau.olivier@gmail.com> | 2013-09-22 17:09:12 +0200 |
---|---|---|
committer | Christian Dywan <christian.dywan@canonical.com> | 2013-09-22 17:09:12 +0200 |
commit | d707f7a24abf4697f6e53d21d795fcfbc10f8dbe (patch) | |
tree | 2e441232d41d2f8a5ce507197a9cb753fbb11931 | |
parent | 70e19eba63a96433790d389faf27d10fb63b6af2 (diff) | |
download | midori-d707f7a24abf4697f6e53d21d795fcfbc10f8dbe.tar.gz |
Add USE_APIDOCS to build API docs with CMake
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | cmake/GtkDoc.cmake | 61 | ||||
-rw-r--r-- | docs/api/CMakeLists.txt | 14 |
3 files changed, 80 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 17291cfb..97b27170 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,6 +134,7 @@ option(USE_GTK3 "Use GTK+3" OFF) option(HALF_BRO_INCOM_WEBKIT2 "Serve as a guniea pig" OFF) option(USE_ZEITGEIST "Zeitgeist history integration" ON) option(USE_GRANITE "Fancy notebook and pop-overs" OFF) +option(USE_APIDOCS "API documentation" OFF) if (USE_GRANITE) if (NOT USE_GTK3 AND NOT HALF_BRO_INCOM_WEBKIT2) @@ -239,3 +240,7 @@ add_subdirectory (data) enable_testing() add_subdirectory (tests) add_subdirectory (extensions) + +if (USE_APIDOCS) + add_subdirectory (docs/api) +endif () diff --git a/cmake/GtkDoc.cmake b/cmake/GtkDoc.cmake new file mode 100644 index 00000000..21e5cd58 --- /dev/null +++ b/cmake/GtkDoc.cmake @@ -0,0 +1,61 @@ +# GtkDoc.cmake +# +# Macros for building Midori API documentation. +# Copyright (C) 2013 Olivier Duchateau + +find_program (GTKDOC_SCAN_BIN gtkdoc-scan) +find_program (GTKDOC_MKDB_BIN gtkdoc-mkdb) +find_program (GTKDOC_MKHTML_BIN gtkdoc-mkhtml) +find_program (GTKDOC_MKTMPL_BIN gtkdoc-mktmpl) + +if (GTKDOC_SCAN_BIN AND GTKDOC_MKTMPL_BIN AND GTKDOC_MKDB_BIN + AND GTKDOC_MKHTML_BIN) + + set (GTKDOC_FOUND TRUE) + + macro (gtkdoc_build module) + add_custom_target ("gtkdoc-scan_${module}" ALL + ${GTKDOC_SCAN_BIN} --module=${module} + --source-dir="../../${module}" + --output-dir="${module}" + --rebuild-sections --rebuild-types + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") + + add_custom_target ("gtkdoc-tmpl_${module}" ALL + ${GTKDOC_MKTMPL_BIN} --module=${module} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${module}") + + add_custom_target ("gtkdoc-docbook_${module}" ALL + ${GTKDOC_MKDB_BIN} --module=${module} + --source-dir="." + --output-dir="xml" + --source-suffixes=c,h --output-format=xml + --default-includes=${module}/${module}.h + --sgml-mode --main-sgml-file=${module}.sgml + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${module}") + + add_dependencies ("gtkdoc-docbook_${module}" + "gtkdoc-tmpl_${module}" + "gtkdoc-scan_${module}") + + # Keep this target alone, otherwise build fails + add_custom_target ("gtkdoc-html_${module}" ALL + ${GTKDOC_MKHTML_BIN} ${module} + "../${module}.sgml" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${module}/html") + + add_dependencies ("gtkdoc-html_${module}" + "gtkdoc-docbook_${module}") + endmacro (gtkdoc_build module) + + macro (gtkdoc module) + file (MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${module}/html") + gtkdoc_build (${module}) + + set (DOC_DIR "html/midori-${MIDORI_MAJOR_VERSION}-${MIDORI_MINOR_VERSION}") + install (DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${module}/html/" + DESTINATION "${CMAKE_INSTALL_DATADIR}/gtk-doc/${DOC_DIR}/${module}" + PATTERN "html/*" + PATTERN "index.sgml" EXCLUDE) + endmacro (gtkdoc module) +endif () diff --git a/docs/api/CMakeLists.txt b/docs/api/CMakeLists.txt new file mode 100644 index 00000000..3ea6f397 --- /dev/null +++ b/docs/api/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright (C) 2013 Olivier Duchateau + +include (GtkDoc) + +if (GTKDOC_FOUND) + list (APPEND MODULES "katze" "midori") + foreach (MOD ${MODULES}) + if (EXISTS "${CMAKE_SOURCE_DIR}/${MOD}") + gtkdoc (${MOD}) + endif () + endforeach () +else () + message (STATUS "gtk-doc not found") +endif () |