Blame view

Documentation/Makefile 5.26 KB
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
1
2
3
  # -*- makefile -*-
  # Makefile for Sphinx documentation
  #
4f0e3a57d   Rob Herring   kbuild: Add suppo...
4
  subdir-y := devicetree/bindings/
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
5

b1663d7e3   Mauro Carvalho Chehab   docs: Kbuild/Make...
6
7
8
9
  # Check for broken documentation file references
  ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
  $(shell $(srctree)/scripts/documentation-file-ref-check --warn)
  endif
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  # 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.)
92a037f01   Mauro Carvalho Chehab   doc: Makefile: if...
28
  	@echo
6c01edd39   Jonathan Corbet   docs: look for sp...
29
  	@$(srctree)/scripts/sphinx-pre-install
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
30
31
32
  	@echo "  SKIP    Sphinx $@ target."
  
  else # HAVE_SPHINX
cf08508d2   Mauro Carvalho Chehab   docs: by default,...
33
  export SPHINXOPTS = $(shell perl -e 'open IN,"sphinx-build --version 2>&1 |"; while (<IN>) { if (m/([\d\.]+)/) { print "-jauto" if ($$1 >= "1.7") } ;} close IN')
28f7c9942   Mauro Carvalho Chehab   docs: Makefile: u...
34
  # User-friendly check for pdflatex and latexmk
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
35
  HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi)
28f7c9942   Mauro Carvalho Chehab   docs: Makefile: u...
36
37
38
39
40
  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...
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  
  # 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"
  # $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:
18e157241   Jonathan Corbet   docs: Completely ...
76
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
77
78
79
80
81
82
  	@+$(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 ...
83
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
84
85
86
87
88
89
90
91
92
93
94
  	@+$(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 ...
95
  	@$(srctree)/scripts/sphinx-pre-install --version-check
28f7c9942   Mauro Carvalho Chehab   docs: Makefile: u...
96
  	$(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit;)
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
97
98
99
100
  
  endif # HAVE_PDFLATEX
  
  epubdocs:
18e157241   Jonathan Corbet   docs: Completely ...
101
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
102
103
104
  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
  
  xmldocs:
18e157241   Jonathan Corbet   docs: Completely ...
105
  	@$(srctree)/scripts/sphinx-pre-install --version-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
106
107
108
109
110
111
  	@+$(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...
112
113
  refcheckdocs:
  	$(Q)cd $(srctree);scripts/documentation-file-ref-check
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
114
115
116
117
118
119
120
121
122
123
124
125
  cleandocs:
  	$(Q)rm -rf $(BUILDDIR)
  	$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean
  
  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'
  	@echo  '  linkcheckdocs   - check for broken external links (will connect to external hosts)'
e8939222d   Jani Nikula   Documentation: ad...
126
  	@echo  '  refcheckdocs    - check for references to non-existing files under Documentation'
cb43fb577   Mauro Carvalho Chehab   docs: remove DocB...
127
128
129
130
131
132
133
  	@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...
134
135
  	@echo
  	@echo  '  Default location for the generated documents is Documentation/output'