| .. | .. |
|---|
| 2 | 2 | # Makefile for Sphinx documentation |
|---|
| 3 | 3 | # |
|---|
| 4 | 4 | |
|---|
| 5 | | -subdir-y := |
|---|
| 5 | +# for cleaning |
|---|
| 6 | +subdir- := devicetree/bindings |
|---|
| 7 | + |
|---|
| 8 | +# Check for broken documentation file references |
|---|
| 9 | +ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y) |
|---|
| 10 | +$(shell $(srctree)/scripts/documentation-file-ref-check --warn) |
|---|
| 11 | +endif |
|---|
| 12 | + |
|---|
| 13 | +# Check for broken ABI files |
|---|
| 14 | +ifeq ($(CONFIG_WARN_ABI_ERRORS),y) |
|---|
| 15 | +$(shell $(srctree)/scripts/get_abi.pl validate --dir $(srctree)/Documentation/ABI) |
|---|
| 16 | +endif |
|---|
| 6 | 17 | |
|---|
| 7 | 18 | # You can set these variables from the command line. |
|---|
| 8 | 19 | SPHINXBUILD = sphinx-build |
|---|
| 9 | 20 | SPHINXOPTS = |
|---|
| 10 | 21 | SPHINXDIRS = . |
|---|
| 11 | | -_SPHINXDIRS = $(patsubst $(srctree)/Documentation/%/conf.py,%,$(wildcard $(srctree)/Documentation/*/conf.py)) |
|---|
| 22 | +_SPHINXDIRS = $(sort $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst))) |
|---|
| 12 | 23 | SPHINX_CONF = conf.py |
|---|
| 13 | 24 | PAPER = |
|---|
| 14 | 25 | BUILDDIR = $(obj)/output |
|---|
| 15 | 26 | PDFLATEX = xelatex |
|---|
| 16 | 27 | LATEXOPTS = -interaction=batchmode |
|---|
| 28 | + |
|---|
| 29 | +ifeq ($(KBUILD_VERBOSE),0) |
|---|
| 30 | +SPHINXOPTS += "-q" |
|---|
| 31 | +endif |
|---|
| 17 | 32 | |
|---|
| 18 | 33 | # User-friendly check for sphinx-build |
|---|
| 19 | 34 | HAVE_SPHINX := $(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi) |
|---|
| .. | .. |
|---|
| 23 | 38 | .DEFAULT: |
|---|
| 24 | 39 | $(warning The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed and in PATH, or set the SPHINXBUILD make variable to point to the full path of the '$(SPHINXBUILD)' executable.) |
|---|
| 25 | 40 | @echo |
|---|
| 26 | | - @./scripts/sphinx-pre-install |
|---|
| 41 | + @$(srctree)/scripts/sphinx-pre-install |
|---|
| 27 | 42 | @echo " SKIP Sphinx $@ target." |
|---|
| 28 | 43 | |
|---|
| 29 | 44 | else # HAVE_SPHINX |
|---|
| 30 | 45 | |
|---|
| 31 | | -# User-friendly check for pdflatex |
|---|
| 46 | +# User-friendly check for pdflatex and latexmk |
|---|
| 32 | 47 | HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi) |
|---|
| 48 | +HAVE_LATEXMK := $(shell if which latexmk >/dev/null 2>&1; then echo 1; else echo 0; fi) |
|---|
| 49 | + |
|---|
| 50 | +ifeq ($(HAVE_LATEXMK),1) |
|---|
| 51 | + PDFLATEX := latexmk -$(PDFLATEX) |
|---|
| 52 | +endif #HAVE_LATEXMK |
|---|
| 33 | 53 | |
|---|
| 34 | 54 | # Internal variables. |
|---|
| 35 | 55 | PAPEROPT_a4 = -D latex_paper_size=a4 |
|---|
| .. | .. |
|---|
| 44 | 64 | loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit; |
|---|
| 45 | 65 | |
|---|
| 46 | 66 | # $2 sphinx builder e.g. "html" |
|---|
| 47 | | -# $3 name of the build subfolder / e.g. "media", used as: |
|---|
| 67 | +# $3 name of the build subfolder / e.g. "userspace-api/media", used as: |
|---|
| 48 | 68 | # * dest folder relative to $(BUILDDIR) and |
|---|
| 49 | 69 | # * cache folder relative to $(BUILDDIR)/.doctrees |
|---|
| 50 | | -# $4 dest subfolder e.g. "man" for man pages at media/man |
|---|
| 70 | +# $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man |
|---|
| 51 | 71 | # $5 reST source folder relative to $(srctree)/$(src), |
|---|
| 52 | | -# e.g. "media" for the linux-tv book-set at ./Documentation/media |
|---|
| 72 | +# e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media |
|---|
| 53 | 73 | |
|---|
| 54 | 74 | quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4) |
|---|
| 55 | | - cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \ |
|---|
| 75 | + cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \ |
|---|
| 56 | 76 | PYTHONDONTWRITEBYTECODE=1 \ |
|---|
| 57 | 77 | BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \ |
|---|
| 78 | + $(PYTHON) $(srctree)/scripts/jobserver-exec \ |
|---|
| 79 | + $(SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \ |
|---|
| 58 | 80 | $(SPHINXBUILD) \ |
|---|
| 59 | 81 | -b $2 \ |
|---|
| 60 | 82 | -c $(abspath $(srctree)/$(src)) \ |
|---|
| .. | .. |
|---|
| 65 | 87 | $(abspath $(BUILDDIR)/$3/$4) |
|---|
| 66 | 88 | |
|---|
| 67 | 89 | htmldocs: |
|---|
| 90 | + @$(srctree)/scripts/sphinx-pre-install --version-check |
|---|
| 68 | 91 | @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var))) |
|---|
| 69 | 92 | |
|---|
| 70 | 93 | linkcheckdocs: |
|---|
| 71 | 94 | @$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var))) |
|---|
| 72 | 95 | |
|---|
| 73 | 96 | latexdocs: |
|---|
| 97 | + @$(srctree)/scripts/sphinx-pre-install --version-check |
|---|
| 74 | 98 | @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,latex,$(var),latex,$(var))) |
|---|
| 75 | 99 | |
|---|
| 76 | 100 | ifeq ($(HAVE_PDFLATEX),0) |
|---|
| .. | .. |
|---|
| 82 | 106 | else # HAVE_PDFLATEX |
|---|
| 83 | 107 | |
|---|
| 84 | 108 | pdfdocs: latexdocs |
|---|
| 85 | | - $(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX=$(PDFLATEX) LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit;) |
|---|
| 109 | + @$(srctree)/scripts/sphinx-pre-install --version-check |
|---|
| 110 | + $(foreach var,$(SPHINXDIRS), \ |
|---|
| 111 | + $(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit; \ |
|---|
| 112 | + mkdir -p $(BUILDDIR)/$(var)/pdf; \ |
|---|
| 113 | + mv $(subst .tex,.pdf,$(wildcard $(BUILDDIR)/$(var)/latex/*.tex)) $(BUILDDIR)/$(var)/pdf/; \ |
|---|
| 114 | + ) |
|---|
| 86 | 115 | |
|---|
| 87 | 116 | endif # HAVE_PDFLATEX |
|---|
| 88 | 117 | |
|---|
| 89 | 118 | epubdocs: |
|---|
| 119 | + @$(srctree)/scripts/sphinx-pre-install --version-check |
|---|
| 90 | 120 | @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var))) |
|---|
| 91 | 121 | |
|---|
| 92 | 122 | xmldocs: |
|---|
| 123 | + @$(srctree)/scripts/sphinx-pre-install --version-check |
|---|
| 93 | 124 | @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var))) |
|---|
| 94 | 125 | |
|---|
| 95 | 126 | endif # HAVE_SPHINX |
|---|
| .. | .. |
|---|
| 102 | 133 | |
|---|
| 103 | 134 | cleandocs: |
|---|
| 104 | 135 | $(Q)rm -rf $(BUILDDIR) |
|---|
| 105 | | - $(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean |
|---|
| 136 | + $(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean |
|---|
| 106 | 137 | |
|---|
| 107 | 138 | dochelp: |
|---|
| 108 | 139 | @echo ' Linux kernel internal documentation in different formats from ReST:' |
|---|
| .. | .. |
|---|
| 111 | 142 | @echo ' pdfdocs - PDF' |
|---|
| 112 | 143 | @echo ' epubdocs - EPUB' |
|---|
| 113 | 144 | @echo ' xmldocs - XML' |
|---|
| 114 | | - @echo ' linkcheckdocs - check for broken external links (will connect to external hosts)' |
|---|
| 115 | | - @echo ' refcheckdocs - check for references to non-existing files under Documentation' |
|---|
| 145 | + @echo ' linkcheckdocs - check for broken external links' |
|---|
| 146 | + @echo ' (will connect to external hosts)' |
|---|
| 147 | + @echo ' refcheckdocs - check for references to non-existing files under' |
|---|
| 148 | + @echo ' Documentation' |
|---|
| 116 | 149 | @echo ' cleandocs - clean all generated files' |
|---|
| 117 | 150 | @echo |
|---|
| 118 | 151 | @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' |
|---|