From bca3caeaeafc3c9c412ef33b1a9a3ef99b04baf1 Mon Sep 17 00:00:00 2001 From: Michael Opdenacker Date: Wed, 6 Oct 2021 14:17:46 +0200 Subject: Makefile: allow epub and latexpdf outputs to use diagrams from SVG sources html output is great when directly using SVG epub output has to use exported PNG because of issues using SVG directly latexpdf output cannot use SVG, it needs exported PDF instead This adds rules to generate PNG and PDF formats from new SVG sources. Newly added diagrams have be stored in svg/ subdirectories so that PNG and PDF files generated from SVG can be "gitignored" without ignoring the original PNG diagrams that have no SVG source. Note: had to remove the dependency to "Makefile" in the final "catch-all" target, otherwise it was also catching the SVG to PNG and SVG to PDF targets. (From yocto-docs rev: cd9bbd41d323bc124057396f142010509c65bbaf) Signed-off-by: Michael Opdenacker Reviewed-by: Nicolas Dechesne Signed-off-by: Quentin Schulz Signed-off-by: Richard Purdie --- documentation/.gitignore | 2 ++ documentation/Makefile | 29 ++++++++++++++++++++++++++--- documentation/README | 4 ++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/documentation/.gitignore b/documentation/.gitignore index c44580b088..35ead8af66 100644 --- a/documentation/.gitignore +++ b/documentation/.gitignore @@ -1,3 +1,5 @@ _build/ Pipfile.lock .vscode/ +*/svg/*.png +*/svg/*.pdf diff --git a/documentation/Makefile b/documentation/Makefile index 996f01b7d5..f015026562 100644 --- a/documentation/Makefile +++ b/documentation/Makefile @@ -6,8 +6,11 @@ SPHINXOPTS ?= -W --keep-going -j auto SPHINXBUILD ?= sphinx-build 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") @@ -17,7 +20,7 @@ endif help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -.PHONY: help Makefile clean publish +.PHONY: help Makefile clean publish epub latexpdf publish: Makefile html singlehtml rm -rf $(BUILDDIR)/$(DESTDIR)/ @@ -26,10 +29,30 @@ publish: Makefile html singlehtml 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) + @rm -rf $(BUILDDIR) $(PNGs) $(PDFs) + +epub: $(PNGs) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +latexpdf: $(PDFs) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile +%: @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/documentation/README b/documentation/README index 1e7b4f0e65..2d9eb887b2 100644 --- a/documentation/README +++ b/documentation/README @@ -113,6 +113,10 @@ To install all required packages run: $ pip3 install sphinx sphinx_rtd_theme pyyaml +Also install the "inkscape" package from your distribution. +Inkscape is need to convert SVG graphics to PNG (for EPUB +export) and to PDF (for PDF export). + To build the documentation locally, run: $ cd documentation -- cgit v1.2.3-54-g00ecf