aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/sphinx.mk
diff options
context:
space:
mode:
authorStanislaw Klekot <[email protected]>2017-10-30 20:39:07 +0100
committerLoïc Hoguin <[email protected]>2018-01-24 13:23:15 +0100
commitad88794506a0ccf0671dd9b909890e0a80b346cc (patch)
treebd407f6dbf3f3ac82cc82d0f485ca9938c6774cb /plugins/sphinx.mk
parentf545564473f0f92cc5b266616b289cf6266e9e28 (diff)
downloaderlang.mk-ad88794506a0ccf0671dd9b909890e0a80b346cc.tar.gz
erlang.mk-ad88794506a0ccf0671dd9b909890e0a80b346cc.tar.bz2
erlang.mk-ad88794506a0ccf0671dd9b909890e0a80b346cc.zip
Add support for Sphinx documentation builder
Diffstat (limited to 'plugins/sphinx.mk')
-rw-r--r--plugins/sphinx.mk62
1 files changed, 62 insertions, 0 deletions
diff --git a/plugins/sphinx.mk b/plugins/sphinx.mk
new file mode 100644
index 0000000..4718247
--- /dev/null
+++ b/plugins/sphinx.mk
@@ -0,0 +1,62 @@
+# Copyright 2017, Stanislaw Klekot <[email protected]>
+# This file is part of erlang.mk and subject to the terms of the ISC License.
+
+.PHONY: distclean-sphinx sphinx
+
+# Configuration.
+
+SPHINX_BUILD ?= sphinx-build
+SPHINX_SOURCE ?= doc
+SPHINX_CONFDIR ?=
+SPHINX_FORMATS ?= html
+SPHINX_DOCTREES ?= $(ERLANG_MK_TMP)/sphinx.doctrees
+SPHINX_OPTS ?=
+
+#sphinx_html_opts =
+#sphinx_html_output = html
+#sphinx_man_opts =
+#sphinx_man_output = man
+#sphinx_latex_opts =
+#sphinx_latex_output = latex
+
+# Helpers.
+
+sphinx_build_0 = @echo " SPHINX" $1; $(SPHINX_BUILD) -N -q
+sphinx_build_1 = $(SPHINX_BUILD) -N
+sphinx_build_2 = set -x; $(SPHINX_BUILD)
+sphinx_build = $(sphinx_build_$(V))
+
+define sphinx.build
+$(call sphinx_build,$1) -b $1 -d $(SPHINX_DOCTREES) $(if $(SPHINX_CONFDIR),-c $(SPHINX_CONFDIR)) $(SPHINX_OPTS) $(sphinx_$1_opts) -- $(SPHINX_SOURCE) $(call sphinx.output,$1)
+
+endef
+
+define sphinx.output
+$(if $(sphinx_$1_output),$(sphinx_$1_output),$1)
+endef
+
+# Targets.
+
+ifneq ($(wildcard $(if $(SPHINX_CONFDIR),$(SPHINX_CONFDIR),$(SPHINX_SOURCE))/conf.py),)
+docs:: sphinx
+distclean:: distclean-sphinx
+endif
+
+help::
+ $(verbose) printf "%s\n" "" \
+ "Sphinx targets:" \
+ " sphinx Generate Sphinx documentation." \
+ "" \
+ "ReST sources and 'conf.py' file are expected in directory pointed by" \
+ "SPHINX_SOURCE ('doc' by default). SPHINX_FORMATS lists formats to build (only" \
+ "'html' format is generated by default); target directory can be specified by" \
+ 'setting sphinx_$${format}_output, for example: sphinx_html_output = output/html' \
+ "Additional Sphinx options can be set in SPHINX_OPTS."
+
+# Plugin-specific targets.
+
+sphinx:
+ $(foreach F,$(SPHINX_FORMATS),$(call sphinx.build,$F))
+
+distclean-sphinx:
+ $(gen_verbose) rm -rf $(filter-out $(SPHINX_SOURCE),$(foreach F,$(SPHINX_FORMATS),$(call sphinx.output,$F)))