Blame view

doc/Makefile 4.41 KB
78a88f793   Mario Six   doc: Replace DocB...
1
2
3
4
5
6
7
8
9
10
  # -*- makefile -*-
  # Makefile for Sphinx documentation
  #
  
  subdir-y :=
  
  # You can set these variables from the command line.
  SPHINXBUILD   = sphinx-build
  SPHINXOPTS    =
  SPHINXDIRS    = .
656d8da9d   Breno Matheus Lima   doc: Remove dupli...
11
  _SPHINXDIRS   = $(patsubst $(srctree)/doc/%/conf.py,%,$(wildcard $(srctree)/doc/*/conf.py))
78a88f793   Mario Six   doc: Replace DocB...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  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
  	@./scripts/sphinx-pre-install
  	@echo "  SKIP    Sphinx $@ target."
  
  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)) || 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),
656d8da9d   Breno Matheus Lima   doc: Remove dupli...
52
  #    e.g. "media" for the linux-tv book-set at ./doc/media
78a88f793   Mario Six   doc: Replace DocB...
53
54
  
  quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
656d8da9d   Breno Matheus Lima   doc: Remove dupli...
55
        cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=doc/media $2 && \
78a88f793   Mario Six   doc: Replace DocB...
56
57
58
  	PYTHONDONTWRITEBYTECODE=1 \
  	BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
  	$(SPHINXBUILD) \
f3957b69f   Heinrich Schuchardt   doc/Makefile: tur...
59
  	-W \
78a88f793   Mario Six   doc: Replace DocB...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  	-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)))
  
  linkcheckdocs:
  	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(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 || exit;)
  
  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)))
  
  endif # HAVE_SPHINX
  
  # The following targets are independent of HAVE_SPHINX, and the rules should
  # work or silently pass without Sphinx.
  
  refcheckdocs:
  	$(Q)cd $(srctree);scripts/documentation-file-ref-check
  
  cleandocs:
  	$(Q)rm -rf $(BUILDDIR)
656d8da9d   Breno Matheus Lima   doc: Remove dupli...
106
  	$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=doc/media clean
78a88f793   Mario Six   doc: Replace DocB...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  
  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)'
  	@echo  '  refcheckdocs    - check for references to non-existing files under Documentation'
  	@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.'
  	@echo
656d8da9d   Breno Matheus Lima   doc: Remove dupli...
125
  	@echo  '  Default location for the generated documents is doc/output'