About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / Makefile




Custom Search

Based on kernel version 4.13.3. Page generated on 2017-09-23 13:55 EST.

1	# -*- makefile -*-
2	# Makefile for Sphinx documentation
3	#
4	
5	subdir-y :=
6	
7	# You can set these variables from the command line.
8	SPHINXBUILD   = sphinx-build
9	SPHINXOPTS    =
10	SPHINXDIRS    = .
11	_SPHINXDIRS   = $(patsubst $(srctree)/Documentation/%/conf.py,%,$(wildcard $(srctree)/Documentation/*/conf.py))
12	SPHINX_CONF   = conf.py
13	PAPER         =
14	BUILDDIR      = $(obj)/output
15	PDFLATEX      = xelatex
16	LATEXOPTS     = -interaction=batchmode
17	
18	# User-friendly check for sphinx-build
19	HAVE_SPHINX := $(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi)
20	
21	ifeq ($(HAVE_SPHINX),0)
22	
23	.DEFAULT:
24		$(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		@echo "  SKIP    Sphinx $@ target."
26	
27	else # HAVE_SPHINX
28	
29	# User-friendly check for pdflatex
30	HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi)
31	
32	# Internal variables.
33	PAPEROPT_a4     = -D latex_paper_size=a4
34	PAPEROPT_letter = -D latex_paper_size=letter
35	KERNELDOC       = $(srctree)/scripts/kernel-doc
36	KERNELDOC_CONF  = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
37	ALLSPHINXOPTS   =  $(KERNELDOC_CONF) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
38	# the i18n builder cannot share the environment and doctrees with the others
39	I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
40	
41	# commands; the 'cmd' from scripts/Kbuild.include is not *loopable*
42	loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
43	
44	# $2 sphinx builder e.g. "html"
45	# $3 name of the build subfolder / e.g. "media", used as:
46	#    * dest folder relative to $(BUILDDIR) and
47	#    * cache folder relative to $(BUILDDIR)/.doctrees
48	# $4 dest subfolder e.g. "man" for man pages at media/man
49	# $5 reST source folder relative to $(srctree)/$(src),
50	#    e.g. "media" for the linux-tv book-set at ./Documentation/media
51	
52	quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
53	      cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \
54		PYTHONDONTWRITEBYTECODE=1 \
55		BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
56		$(SPHINXBUILD) \
57		-b $2 \
58		-c $(abspath $(srctree)/$(src)) \
59		-d $(abspath $(BUILDDIR)/.doctrees/$3) \
60		-D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \
61		$(ALLSPHINXOPTS) \
62		$(abspath $(srctree)/$(src)/$5) \
63		$(abspath $(BUILDDIR)/$3/$4)
64	
65	htmldocs:
66		@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
67	
68	linkcheckdocs:
69		@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
70	
71	latexdocs:
72		@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,latex,$(var),latex,$(var)))
73	
74	ifeq ($(HAVE_PDFLATEX),0)
75	
76	pdfdocs:
77		$(warning The '$(PDFLATEX)' command was not found. Make sure you have it installed and in PATH to produce PDF output.)
78		@echo "  SKIP    Sphinx $@ target."
79	
80	else # HAVE_PDFLATEX
81	
82	pdfdocs: latexdocs
83		$(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX=$(PDFLATEX) LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit;)
84	
85	endif # HAVE_PDFLATEX
86	
87	epubdocs:
88		@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
89	
90	xmldocs:
91		@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var)))
92	
93	endif # HAVE_SPHINX
94	
95	# The following targets are independent of HAVE_SPHINX, and the rules should
96	# work or silently pass without Sphinx.
97	
98	# no-ops for the Sphinx toolchain
99	sgmldocs:
100		@:
101	psdocs:
102		@:
103	mandocs:
104		@:
105	installmandocs:
106		@:
107	
108	cleandocs:
109		$(Q)rm -rf $(BUILDDIR)
110		$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean
111	
112	dochelp:
113		@echo  ' Linux kernel internal documentation in different formats from ReST:'
114		@echo  '  htmldocs        - HTML'
115		@echo  '  latexdocs       - LaTeX'
116		@echo  '  pdfdocs         - PDF'
117		@echo  '  epubdocs        - EPUB'
118		@echo  '  xmldocs         - XML'
119		@echo  '  linkcheckdocs   - check for broken external links (will connect to external hosts)'
120		@echo  '  cleandocs       - clean all generated files'
121		@echo
122		@echo  '  make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
123		@echo  '  valid values for SPHINXDIRS are: $(_SPHINXDIRS)'
124		@echo
125		@echo  '  make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build'
126		@echo  '  configuration. This is e.g. useful to build with nit-picking config.'
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.