Blame view

Documentation/Makefile 5.72 KB
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
1
2
3
  # -*- makefile -*-
  # Makefile for Sphinx documentation
  #
a1af8d71f   Masahiro Yamada   kbuild: remove tr...
4
5
  # for cleaning
  subdir- := devicetree/bindings
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
6

b1663d7e3   Mauro Carvalho Chehab   docs: Kbuild/Make...
7
8
9
10
  # Check for broken documentation file references
  ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
  $(shell $(srctree)/scripts/documentation-file-ref-check --warn)
  endif
75442fb0c   Mauro Carvalho Chehab   docs: Kconfig/Mak...
11
12
13
14
  # Check for broken ABI files
  ifeq ($(CONFIG_WARN_ABI_ERRORS),y)
  $(shell $(srctree)/scripts/get_abi.pl validate --dir $(srctree)/Documentation/ABI)
  endif
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
15
16
17
18
  # You can set these variables from the command line.
  SPHINXBUILD   = sphinx-build
  SPHINXOPTS    =
  SPHINXDIRS    = .
965fc39f7   Randy Dunlap   Documentation: so...
19
  _SPHINXDIRS   = $(sort $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst)))
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
20
21
22
23
24
  SPHINX_CONF   = conf.py
  PAPER         =
  BUILDDIR      = $(obj)/output
  PDFLATEX      = xelatex
  LATEXOPTS     = -interaction=batchmode
d94df02c4   Mauro Carvalho Chehab   docs: Makefile: h...
25
26
27
  ifeq ($(KBUILD_VERBOSE),0)
  SPHINXOPTS    += "-q"
  endif
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
28
29
30
31
32
33
34
  # 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.)
92a037f01   Mauro Carvalho Chehab   doc: Makefile: if...
35
  	@echo
6c01edd39   Jonathan Corbet   docs: look for sp...
36
  	@$(srctree)/scripts/sphinx-pre-install
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
37
38
39
  	@echo "  SKIP    Sphinx $@ target."
  
  else # HAVE_SPHINX
28f7c9942   Mauro Carvalho Chehab   docs: Makefile: u...
40
  # User-friendly check for pdflatex and latexmk
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
41
  HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi)
28f7c9942   Mauro Carvalho Chehab   docs: Makefile: u...
42
43
44
45
46
  HAVE_LATEXMK := $(shell if which latexmk >/dev/null 2>&1; then echo 1; else echo 0; fi)
  
  ifeq ($(HAVE_LATEXMK),1)
  	PDFLATEX := latexmk -$(PDFLATEX)
  endif #HAVE_LATEXMK
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  
  # 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)) || exit;
  
  # $2 sphinx builder e.g. "html"
54f38fcae   Mauro Carvalho Chehab   media: docs: move...
61
  # $3 name of the build subfolder / e.g. "userspace-api/media", used as:
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
62
63
  #    * dest folder relative to $(BUILDDIR) and
  #    * cache folder relative to $(BUILDDIR)/.doctrees
54f38fcae   Mauro Carvalho Chehab   media: docs: move...
64
  # $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
65
  # $5 reST source folder relative to $(srctree)/$(src),
54f38fcae   Mauro Carvalho Chehab   media: docs: move...
66
  #    e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
67
68
  
  quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
54f38fcae   Mauro Carvalho Chehab   media: docs: move...
69
        cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
70
71
  	PYTHONDONTWRITEBYTECODE=1 \
  	BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
51e46c7a4   Kees Cook   docs, parallelism...
72
73
  	$(PYTHON) $(srctree)/scripts/jobserver-exec \
  	$(SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
74
75
76
77
78
79
80
81
82
83
  	$(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:
18e157241   Jonathan Corbet   docs: Completely ...
84
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
85
86
87
88
89
90
  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
  
  linkcheckdocs:
  	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
  
  latexdocs:
18e157241   Jonathan Corbet   docs: Completely ...
91
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
92
93
94
95
96
97
98
99
100
101
102
  	@+$(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
18e157241   Jonathan Corbet   docs: Completely ...
103
  	@$(srctree)/scripts/sphinx-pre-install --version-check
baeb2d5cb   Mauro Carvalho Chehab   docs: Makefile: p...
104
105
106
107
108
  	$(foreach var,$(SPHINXDIRS), \
  	   $(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit; \
  	   mkdir -p $(BUILDDIR)/$(var)/pdf; \
  	   mv $(subst .tex,.pdf,$(wildcard $(BUILDDIR)/$(var)/latex/*.tex)) $(BUILDDIR)/$(var)/pdf/; \
  	)
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
109
110
111
112
  
  endif # HAVE_PDFLATEX
  
  epubdocs:
18e157241   Jonathan Corbet   docs: Completely ...
113
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
114
115
116
  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
  
  xmldocs:
18e157241   Jonathan Corbet   docs: Completely ...
117
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
118
119
120
121
122
123
  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var)))
  
  endif # HAVE_SPHINX
  
  # The following targets are independent of HAVE_SPHINX, and the rules should
  # work or silently pass without Sphinx.
e8939222d   Jani Nikula   Documentation: ad...
124
125
  refcheckdocs:
  	$(Q)cd $(srctree);scripts/documentation-file-ref-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
126
127
  cleandocs:
  	$(Q)rm -rf $(BUILDDIR)
54f38fcae   Mauro Carvalho Chehab   media: docs: move...
128
  	$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
129
130
131
132
133
134
135
136
  
  dochelp:
  	@echo  ' Linux kernel internal documentation in different formats from ReST:'
  	@echo  '  htmldocs        - HTML'
  	@echo  '  latexdocs       - LaTeX'
  	@echo  '  pdfdocs         - PDF'
  	@echo  '  epubdocs        - EPUB'
  	@echo  '  xmldocs         - XML'
a64c0440d   Geert Uytterhoeven   kbuild: Wrap long...
137
138
139
140
  	@echo  '  linkcheckdocs   - check for broken external links'
  	@echo  '                    (will connect to external hosts)'
  	@echo  '  refcheckdocs    - check for references to non-existing files under'
  	@echo  '                    Documentation'
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
141
142
143
144
145
146
147
  	@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.'
9effc8f70   Shuah Khan   doc: enhance doch...
148
149
  	@echo
  	@echo  '  Default location for the generated documents is Documentation/output'