2a0f4038a4
Use PYTHONDONTWRITEBYTECODE=1 to prevent python from creating .pyc files in the source tree. Python 3.2 has a __pycache__ scheme [1], but before that the only alternative seems to be to copy the source files to the build tree to ensure the .pyc files are created there too. Just prevent .pyc file generation for simplicity. Considering the small amount of python code to compile (assuming sphinx itself has .pyc around), the impact on build is neglible. [1] http://stackoverflow.com/questions/3522079/changing-the-directory-where-pyc-files-are-created References: http://lkml.kernel.org/r/CAMuHMdVxqpH7-9XJ+YE_pgoA+-fe0969cSkOehYh3uubYcrhZA@mail.gmail.com Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> References: http://lkml.kernel.org/r/1485816692.2900.17.camel@decadent.org.uk Reported-by: Ben Hutchings <ben@decadent.org.uk> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
120 lines
4.1 KiB
Makefile
120 lines
4.1 KiB
Makefile
# -*- makefile -*-
|
|
# Makefile for Sphinx documentation
|
|
#
|
|
|
|
# You can set these variables from the command line.
|
|
SPHINXBUILD = sphinx-build
|
|
SPHINXOPTS =
|
|
SPHINXDIRS = .
|
|
_SPHINXDIRS = $(patsubst $(srctree)/Documentation/%/conf.py,%,$(wildcard $(srctree)/Documentation/*/conf.py))
|
|
SPHINX_CONF = conf.py
|
|
PAPER =
|
|
BUILDDIR = $(obj)/output
|
|
PDFLATEX = xelatex
|
|
LATEXOPTS = -interaction=batchmode
|
|
|
|
# User-friendly check for sphinx-build
|
|
HAVE_SPHINX := $(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
|
|
|
ifeq ($(HAVE_SPHINX),0)
|
|
|
|
.DEFAULT:
|
|
$(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.)
|
|
@echo " SKIP Sphinx $@ target."
|
|
|
|
else ifneq ($(DOCBOOKS),)
|
|
|
|
# Skip Sphinx build if the user explicitly requested DOCBOOKS.
|
|
.DEFAULT:
|
|
@echo " SKIP Sphinx $@ target (DOCBOOKS specified)."
|
|
|
|
else # HAVE_SPHINX
|
|
|
|
# User-friendly check for pdflatex
|
|
HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
|
|
|
# Internal variables.
|
|
PAPEROPT_a4 = -D latex_paper_size=a4
|
|
PAPEROPT_letter = -D latex_paper_size=letter
|
|
KERNELDOC = $(srctree)/scripts/kernel-doc
|
|
KERNELDOC_CONF = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
|
|
ALLSPHINXOPTS = $(KERNELDOC_CONF) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
|
|
# the i18n builder cannot share the environment and doctrees with the others
|
|
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
|
|
|
# commands; the 'cmd' from scripts/Kbuild.include is not *loopable*
|
|
loop_cmd = $(echo-cmd) $(cmd_$(1))
|
|
|
|
# $2 sphinx builder e.g. "html"
|
|
# $3 name of the build subfolder / e.g. "media", used as:
|
|
# * dest folder relative to $(BUILDDIR) and
|
|
# * cache folder relative to $(BUILDDIR)/.doctrees
|
|
# $4 dest subfolder e.g. "man" for man pages at media/man
|
|
# $5 reST source folder relative to $(srctree)/$(src),
|
|
# e.g. "media" for the linux-tv book-set at ./Documentation/media
|
|
|
|
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
|
|
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2;\
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
|
|
$(SPHINXBUILD) \
|
|
-b $2 \
|
|
-c $(abspath $(srctree)/$(src)) \
|
|
-d $(abspath $(BUILDDIR)/.doctrees/$3) \
|
|
-D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \
|
|
$(ALLSPHINXOPTS) \
|
|
$(abspath $(srctree)/$(src)/$5) \
|
|
$(abspath $(BUILDDIR)/$3/$4);
|
|
|
|
htmldocs:
|
|
@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
|
|
|
|
latexdocs:
|
|
@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,latex,$(var),latex,$(var)))
|
|
|
|
ifeq ($(HAVE_PDFLATEX),0)
|
|
|
|
pdfdocs:
|
|
$(warning The '$(PDFLATEX)' command was not found. Make sure you have it installed and in PATH to produce PDF output.)
|
|
@echo " SKIP Sphinx $@ target."
|
|
|
|
else # HAVE_PDFLATEX
|
|
|
|
pdfdocs: latexdocs
|
|
$(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX=$(PDFLATEX) LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex;)
|
|
|
|
endif # HAVE_PDFLATEX
|
|
|
|
epubdocs:
|
|
@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
|
|
|
|
xmldocs:
|
|
@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var)))
|
|
|
|
# no-ops for the Sphinx toolchain
|
|
sgmldocs:
|
|
psdocs:
|
|
mandocs:
|
|
installmandocs:
|
|
|
|
cleandocs:
|
|
$(Q)rm -rf $(BUILDDIR)
|
|
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) -C Documentation/media clean
|
|
|
|
endif # HAVE_SPHINX
|
|
|
|
dochelp:
|
|
@echo ' Linux kernel internal documentation in different formats (Sphinx):'
|
|
@echo ' htmldocs - HTML'
|
|
@echo ' latexdocs - LaTeX'
|
|
@echo ' pdfdocs - PDF'
|
|
@echo ' epubdocs - EPUB'
|
|
@echo ' xmldocs - XML'
|
|
@echo ' cleandocs - clean all generated files'
|
|
@echo
|
|
@echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
|
|
@echo ' valid values for SPHINXDIRS are: $(_SPHINXDIRS)'
|
|
@echo
|
|
@echo ' make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build'
|
|
@echo ' configuration. This is e.g. useful to build with nit-picking config.'
|