summaryrefslogtreecommitdiff
path: root/m4m/gp-documentation.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4m/gp-documentation.m4')
-rw-r--r--m4m/gp-documentation.m4149
1 files changed, 149 insertions, 0 deletions
diff --git a/m4m/gp-documentation.m4 b/m4m/gp-documentation.m4
new file mode 100644
index 0000000..c355f06
--- /dev/null
+++ b/m4m/gp-documentation.m4
@@ -0,0 +1,149 @@
+dnl
+dnl check where to install documentation
+dnl
+dnl determines documentation "root directory", i.e. the directory
+dnl where all documentation will be placed in
+dnl
+
+AC_DEFUN([GP_DOC_GENERAL],[dnl
+AC_MSG_CHECKING([whether to build any docs])
+AC_ARG_ENABLE([docs], [dnl
+AS_HELP_STRING([--disable-docs], [whether to create any documentation])], [dnl
+case "$enableval" in
+ yes|true|on) gp_build_docs="yes" ;;
+ *) gp_build_docs="no" ;;
+esac
+],[dnl
+gp_build_docs="yes"
+])dnl
+AC_MSG_RESULT([${gp_build_docs}])
+AM_CONDITIONAL([BUILD_DOCS], [test "x${gp_build_docs}" = "xyes"])
+])dnl
+
+AC_DEFUN([GP_CHECK_DOC_DIR],
+[
+AC_REQUIRE([GP_DOC_GENERAL])dnl
+AC_BEFORE([$0], [GP_BUILD_GTK_DOCS])dnl
+AC_BEFORE([$0], [GP_CHECK_DOXYGEN])dnl
+
+AC_ARG_WITH([doc-dir],
+[AS_HELP_STRING([--with-doc-dir=PATH],
+[Where to install docs [default=autodetect]])])
+
+# check for the main ("root") documentation directory
+AC_MSG_CHECKING([main docdir])
+
+if test "x${with_doc_dir}" != "x"
+then # docdir is given as parameter
+ docdir="${with_doc_dir}"
+ AC_MSG_RESULT([${docdir} (from parameter)])
+else # otherwise invent a docdir hopefully compatible with system policy
+ if test -d "/usr/share/doc"
+ then
+ maindocdir='${prefix}/share/doc'
+ AC_MSG_RESULT([${maindocdir} (FHS style)])
+ elif test -d "/usr/doc"
+ then
+ maindocdir='${prefix}/doc'
+ AC_MSG_RESULT([${maindocdir} (old style)])
+ else
+ maindocdir='${datadir}/doc'
+ AC_MSG_RESULT([${maindocdir} (default value)])
+ fi
+ AC_MSG_CHECKING([package docdir])
+ # check whether to include package version into documentation path
+ # FIXME: doesn't work properly.
+ if ls -d /usr/{share/,}doc/make-[0-9]* > /dev/null 2>&1
+ then
+ docdir="${maindocdir}/${PACKAGE}-${VERSION}"
+ AC_MSG_RESULT([${docdir} (redhat style)])
+ else
+ docdir="${maindocdir}/${PACKAGE}"
+ AC_MSG_RESULT([${docdir} (default style)])
+ fi
+fi
+
+AC_SUBST([docdir])
+])dnl
+
+dnl
+dnl check whether to build docs and where to:
+dnl
+dnl * determine presence of prerequisites (only gtk-doc for now)
+dnl * determine destination directory for HTML files
+dnl
+
+AC_DEFUN([GP_BUILD_GTK_DOCS],
+[
+# docdir has to be determined in advance
+AC_REQUIRE([GP_CHECK_DOC_DIR])
+
+# ---------------------------------------------------------------------------
+# gtk-doc: We use gtk-doc for building our documentation. However, we
+# require the user to explicitely request the build.
+# ---------------------------------------------------------------------------
+try_gtkdoc=false
+gtkdoc_msg="no (not requested)"
+have_gtkdoc=false
+AC_ARG_ENABLE([docs],
+[AS_HELP_STRING([--enable-docs],
+[Use gtk-doc to build documentation [default=no]])],[
+ if test x$enableval = xyes; then
+ try_gtkdoc=true
+ fi
+])
+if $try_gtkdoc; then
+ AC_PATH_PROG([GTKDOC],[gtkdoc-mkdb])
+ if test -n "${GTKDOC}"; then
+ have_gtkdoc=true
+ gtkdoc_msg="yes"
+ else
+ gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)"
+ fi
+fi
+AM_CONDITIONAL([ENABLE_GTK_DOC], [$have_gtkdoc])
+GP_CONFIG_MSG([build API docs with gtk-doc],[$gtkdoc_msg])
+
+
+# ---------------------------------------------------------------------------
+# Give the user the possibility to install html documentation in a
+# user-defined location.
+# ---------------------------------------------------------------------------
+AC_ARG_WITH([html-dir],
+[AS_HELP_STRING([--with-html-dir=PATH],
+[Where to install html docs [default=autodetect]])])
+
+AC_MSG_CHECKING([for html dir])
+if test "x${with_html_dir}" = "x" ; then
+ htmldir="${docdir}/html"
+ AC_MSG_RESULT([${htmldir} (default)])
+else
+ htmldir="${with_html_dir}"
+ AC_MSG_RESULT([${htmldir} (from parameter)])
+fi
+AC_SUBST([htmldir])
+apidocdir="${htmldir}/api"
+AC_SUBST([apidocdir}])
+
+])dnl
+
+
+dnl doxygen related stuff
+dnl look for tools
+dnl define substitutions for Doxyfile.in
+AC_DEFUN([GP_CHECK_DOXYGEN],[dnl
+AC_REQUIRE([GP_CHECK_DOC_DIR])dnl
+AC_PATH_PROG([DOT], [dot], [false])
+AC_PATH_PROG([DOXYGEN], [doxygen], [false])
+AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != "xfalse"])
+AM_CONDITIONAL([HAVE_DOT], [test "x$DOT" != "xfalse"])
+if test "x$DOT" != "xfalse"; then
+ AC_SUBST([HAVE_DOT],[YES])
+else
+ AC_SUBST([HAVE_DOT],[NO])
+fi
+AC_SUBST([HTML_APIDOC_DIR], ["${PACKAGE_TARNAME}-api.html"])
+AC_SUBST([DOXYGEN_OUTPUT_DIR], [doxygen-output])
+AC_SUBST([HTML_APIDOC_INTERNALS_DIR], ["${PACKAGE_TARNAME}-internals.html"])
+])dnl
+