summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Duchateau <duchateau.olivier@gmail.com>2013-09-22 17:09:12 +0200
committerChristian Dywan <christian.dywan@canonical.com>2013-09-22 17:09:12 +0200
commitd707f7a24abf4697f6e53d21d795fcfbc10f8dbe (patch)
tree2e441232d41d2f8a5ce507197a9cb753fbb11931
parent70e19eba63a96433790d389faf27d10fb63b6af2 (diff)
downloadmidori-d707f7a24abf4697f6e53d21d795fcfbc10f8dbe.tar.gz
Add USE_APIDOCS to build API docs with CMake
-rw-r--r--CMakeLists.txt5
-rw-r--r--cmake/GtkDoc.cmake61
-rw-r--r--docs/api/CMakeLists.txt14
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 ()