Skip to content
Snippets Groups Projects
Makefile.sphinx 1.64 KiB
# Makefile to be included by other modules, from the TOPLEVEL/docs/ dir, to
# automatically build sphinx documentation.

APIDOC_DIR = apidoc
APIDOC_OPTS = --separate
SPHINXBUILD = python3 -c 'import sphinx, sys; sys.exit(sphinx.main(sys.argv))'
SPHINXAPIDOC = python3 -c 'import sphinx.apidoc, sys; sys.exit(sphinx.apidoc.main(sys.argv))'
SPHINX_OPTS =
SPHINX_BUILDDIR = _build
SPHINX_SRCDIR = .

# relative to docs/ dir. Hence "." exclude the docs/ dir itself
APIDOC_EXCLUDES =
APIDOC_EXCLUDES += . ../setup.py
APIDOC_EXCLUDES += ../swh/*/tests ../swh/*/tests/* ../swh/*/*/tests/* ../swh/*/*/*/tests/*
APIDOC_EXCLUDES += ../swh/*/migrations ../swh/*/migrations/* ../swh/*/*/migrations/* ../swh/*/*/*/migrations/*
APIDOC_EXCLUDES += ../bin/*
APIDOC_EXCLUDES += ../utils/*
APIDOC_EXCLUDES += ../node_modules/*


html: sphinx/html
help: sphinx/help

# allow to skip apidoc generation, for modules where the overall documentation
# structure, table of contents, etc., is manually curated
ifeq ($(SKIP_APIDOC),yes)
apidoc_dep =
else
apidoc_dep = apidoc-stamp
endif

sphinx/clean:
	$(SPHINXBUILD) -M clean $(SPHINX_SRCDIR) $(SPHINX_BUILDDIR) $(SPHINXOPTS)
sphinx/%: $(apidoc_dep)
	$(SPHINXBUILD) -b $* $(SPHINX_SRCDIR) $(SPHINX_BUILDDIR)/$* $(SPHINXOPTS)

apidoc: $(apidoc_dep)
apidoc-stamp:
	$(SPHINXAPIDOC) $(APIDOC_OPTS) -o $(APIDOC_DIR) .. $(APIDOC_EXCLUDES)
	# to silent Sphinx warnings about apidoc documents not included in any toctree
	find $(shell pwd)/apidoc -name "*.rst" | xargs sed -i '1i:orphan:\n'
	touch $@

assets:

.PHONY: clean clean-apidoc
clean: sphinx/clean clean-apidoc
clean-apidoc:
	rm -rf $(APIDOC_DIR)
	rm -f *-stamp


# Local Variables:
# mode: makefile
# End: