commit: 117147f43ceec694083a3c4749a6ecde64f76ade
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 21 10:18:08 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 21 10:18:08 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=117147f4
eclass/docs: add doxygen support
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 54 insertions(+), 1 deletion(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index c3fb6e3..b97f346 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -89,6 +89,15 @@ esac
#
# Defaults to ${DOCDIR}/_build/html
+# @ECLASS-VARIABLE: DOCS_CONFIG_NAME
+# @DESCRIPTION:
+# Name of the doc builder config file.
+#
+# Only relevant for doxygen, as it allows
+# config files with non-standard names
+#
+# Defaults to Doxyfile for doxygen
+
if [[ ! ${_DOCS} ]]; then
# For the python based DOCBUILDERS we need to inherit python-any-r1
@@ -108,6 +117,10 @@ case "${DOCBUILDER}" in
inherit python-any-r1
fi
;;
+ "doxygen")
+ # do not need to inherit anything for doxygen
+ true
+ ;;
"")
die "DOCBUILDER unset, should be set to use ${ECLASS}"
;;
@@ -243,6 +256,40 @@ mkdocs_compile() {
rm "${OUTDIR}"/*.gz || die
}
+# @FUNCTION: doxygen_setup
+# @DESCRIPTION:
+# Sets dependencies for doxygen
+doxygen_setup() {
+ debug-print-function ${FUNCNAME}
+
+ DOCDEPEND="app-doc/doxygen
+ ${DOCDEPEND}"
+}
+
+# @FUNCTION: mkdocs_compile
+# @DESCRIPTION:
+# Calls mkdocs to build docs.
+#
+# If you overwrite src_compile or python_compile_all
+# do not call this function, call docs_compile instead
+doxygen_compile() {
+ debug-print-function ${FUNCNAME}
+ use doc || return
+
+ : ${DOCS_CONFIG_NAME:="Doxyfile"}
+
+ local doxyfile=${DOCDIR}/${DOCS_CONFIG_NAME}
+ [[ -f ${doxyfile} ]] ||
+ die "${doxyfile} not found, DOCDIR=${DOCDIR} or
DOCS_CONFIG_NAME=${DOCS_CONFIG_NAME} wrong"
+
+ # doxygen wants the HTML_OUTPUT dir to already exist
+ mkdir -p "${OUTDIR}"
+
+ pushd "${DOCDIR}"
+ (cat "${doxyfile}" ; echo "HTML_OUTPUT=${OUTDIR}") | doxygen - || die
+ popd
+}
+
# @FUNCTION: docs_compile
# @DESCRIPTION:
# Calls DOCBUILDER and sets HTML_DOCS
@@ -270,6 +317,9 @@ docs_compile() {
"mkdocs")
mkdocs_compile
;;
+ "doxygen")
+ doxygen_compile
+ ;;
esac
HTML_DOCS+=( "${OUTDIR}/." )
@@ -294,6 +344,9 @@ case "${DOCBUILDER}" in
python_append_deps
mkdocs_setup
;;
+ "doxygen")
+ doxygen_setup
+ ;;
esac
if [[ ${EAPI} == [56] ]]; then
@@ -305,7 +358,7 @@ fi
# If this is a python package using distutils-r1
# then put the compile function in the specific
# python function, else just put it in src_compile
-if [[ ${_DISTUTILS_R1} ]]; then
+if [[ ${_DISTUTILS_R1} && ( ${DOCBUILDER}="mkdocs" || ${DOCBUILDER}="sphinx" )
]]; then
python_compile_all() { docs_compile; }
else
src_compile() { docs_compile; }