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