| # Minimal makefile for Sphinx documentation |
| # |
| |
| # You can set these variables from the command line, and also |
| # from the environment for the first two. |
| SPHINXOPTS ?= -W --keep-going -j auto |
| SPHINXBUILD ?= sphinx-build |
| # Release notes are excluded because they contain contributor names and commit messages which can't be modified |
| VALEOPTS ?= --no-wrap --glob '!migration-guides/release-notes-*.rst' |
| VALEDOCS ?= . |
| SOURCEDIR = . |
| IMAGEDIRS = */svg |
| BUILDDIR = _build |
| DESTDIR = final |
| SVG2PNG = inkscape |
| SVG2PDF = inkscape |
| |
| ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0) |
| $(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed") |
| endif |
| |
| # Put it first so that "make" without argument is like "make help". |
| help: |
| @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
| |
| .PHONY: all help Makefile clean stylecheck publish epub latexpdf |
| |
| publish: Makefile html singlehtml |
| rm -rf $(BUILDDIR)/$(DESTDIR)/ |
| mkdir -p $(BUILDDIR)/$(DESTDIR)/ |
| cp -r $(BUILDDIR)/html/* $(BUILDDIR)/$(DESTDIR)/ |
| cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html |
| sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html |
| |
| # Build a list of SVG files to convert to PDFs |
| PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(SOURCEDIR)/$(dir)/*.svg))) |
| |
| # Build a list of SVG files to convert to PNGs |
| PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCEDIR)/$(dir)/*.svg))) |
| |
| # Pattern rule for converting SVG to PDF |
| %.pdf : %.svg |
| $(SVG2PDF) --export-filename=$@ $< |
| |
| # Pattern rule for converting SVG to PNG |
| %.png : %.svg |
| $(SVG2PNG) --export-filename=$@ $< |
| |
| clean: |
| @rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst |
| |
| stylecheck: |
| vale sync |
| vale $(VALEOPTS) $(VALEDOCS) |
| |
| sphinx-lint: |
| sphinx-lint $(SOURCEDIR) |
| |
| epub: $(PNGs) |
| $(SOURCEDIR)/set_versions.py |
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
| |
| latexpdf: $(PDFs) |
| $(SOURCEDIR)/set_versions.py |
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
| |
| all: html epub latexpdf |
| |
| # Catch-all target: route all unknown targets to Sphinx using the new |
| # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). |
| %: |
| $(SOURCEDIR)/set_versions.py |
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |