]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - Documentation/DocBook/Makefile
doc-rst: Remove the media docbook
[mirror_ubuntu-zesty-kernel.git] / Documentation / DocBook / Makefile
CommitLineData
1da177e4
LT
1###
2# This makefile is used to generate the kernel documentation,
3# primarily based on in-line comments in various source files.
4# See Documentation/kernel-doc-nano-HOWTO.txt for instruction in how
58ef2c4c 5# to document the SRC - and how to read it.
1da177e4
LT
6# To add a new book the only step required is to add the book to the
7# list of DOCBOOKS.
8
54721886
MCC
9ifeq ($(IGNORE_DOCBOOKS),)
10
bb8187d3 11DOCBOOKS := z8530book.xml device-drivers.xml \
ac9296f9 12 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
82c1e49c 13 writing_usb_driver.xml networking.xml \
e3e2aaf7 14 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
11c869ea 15 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
dbbea671 16 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
352de557 17 80211.xml debugobjects.xml sh.xml regulator.xml \
a76f8c6d 18 alsa-driver-api.xml writing-an-alsa-driver.xml \
43f71d93 19 tracepoint.xml gpu.xml w1.xml \
aab97877 20 writing_musb_glue_layer.xml crypto-API.xml iio.xml
42661299 21
1da177e4
LT
22###
23# The build process is as follows (targets):
2ac534bc
RD
24# (xmldocs) [by docproc]
25# file.tmpl --> file.xml +--> file.ps (psdocs) [by db2ps or xmlto]
26# +--> file.pdf (pdfdocs) [by db2pdf or xmlto]
27# +--> DIR=file (htmldocs) [by xmlto]
28# +--> man/ (mandocs) [by xmlto]
1da177e4 29
71f95cfb
MW
30
31# for PDF and PS output you can choose between xmlto and docbook-utils tools
32PDF_METHOD = $(prefer-db2x)
33PS_METHOD = $(prefer-db2x)
34
35
6f89b9c1 36targets += $(DOCBOOKS)
1da177e4 37BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
a435600e 38xmldocs: $(BOOKS)
1da177e4
LT
39sgmldocs: xmldocs
40
41PS := $(patsubst %.xml, %.ps, $(BOOKS))
42psdocs: $(PS)
43
44PDF := $(patsubst %.xml, %.pdf, $(BOOKS))
45pdfdocs: $(PDF)
46
f15a3ccd 47HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
04893043 48htmldocs: $(HTML)
e237b657 49 $(call cmd,build_main_index)
1da177e4
LT
50
51MAN := $(patsubst %.xml, %.9, $(BOOKS))
52mandocs: $(MAN)
32c1735c 53 find $(obj)/man -name '*.9' | xargs gzip -nf
1da177e4
LT
54
55installmandocs: mandocs
8b0c2d98 56 mkdir -p /usr/local/man/man9/
9ed71e7a
BH
57 find $(obj)/man -name '*.9.gz' -printf '%h %f\n' | \
58 sort -k 2 -k 1 | uniq -f 1 | sed -e 's: :/:' | \
59 xargs install -m 644 -t /usr/local/man/man9/
1da177e4 60
22cba31b
JN
61# no-op for the DocBook toolchain
62epubdocs:
63
1da177e4
LT
64###
65#External programs used
5699f871
DCLP
66KERNELDOCXMLREF = $(srctree)/scripts/kernel-doc-xml-ref
67KERNELDOC = $(srctree)/scripts/kernel-doc
68DOCPROC = $(objtree)/scripts/docproc
b479bfd0
BH
69CHECK_LC_CTYPE = $(objtree)/scripts/check-lc_ctype
70
71# Use a fixed encoding - UTF-8 if the C library has support built-in
72# or ASCII if not
73LC_CTYPE := $(call try-run, LC_CTYPE=C.UTF-8 $(CHECK_LC_CTYPE),C.UTF-8,C)
74export LC_CTYPE
8b0c2d98 75
ec3fadd6 76XMLTOFLAGS = -m $(srctree)/$(src)/stylesheet.xsl
82c1e49c 77XMLTOFLAGS += --skip-validation
1da177e4
LT
78
79###
80# DOCPROC is used for two purposes:
81# 1) To generate a dependency list for a .tmpl file
82# 2) To preprocess a .tmpl file and call kernel-doc with
83# appropriate parameters.
84# The following rules are used to generate the .xml documentation
85# required to generate the final targets. (ps, pdf, html).
86quiet_cmd_docproc = DOCPROC $@
87 cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@
88define rule_docproc
89 set -e; \
90 $(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))';) \
91 $(cmd_$(1)); \
92 ( \
93 echo 'cmd_$@ := $(cmd_$(1))'; \
94 echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; \
95 ) > $(dir $@).$(notdir $@).cmd
96endef
97
5699f871 98%.xml: %.tmpl $(KERNELDOC) $(DOCPROC) $(KERNELDOCXMLREF) FORCE
1da177e4
LT
99 $(call if_changed_rule,docproc)
100
3794f3e8
RD
101# Tell kbuild to always build the programs
102always := $(hostprogs-y)
103
71f95cfb
MW
104notfoundtemplate = echo "*** You have to install docbook-utils or xmlto ***"; \
105 exit 1
106db2xtemplate = db2TYPE -o $(dir $@) $<
107xmltotemplate = xmlto TYPE $(XMLTOFLAGS) -o $(dir $@) $<
108
109# determine which methods are available
110ifeq ($(shell which db2ps >/dev/null 2>&1 && echo found),found)
111 use-db2x = db2x
112 prefer-db2x = db2x
113else
114 use-db2x = notfound
115 prefer-db2x = $(use-xmlto)
116endif
117ifeq ($(shell which xmlto >/dev/null 2>&1 && echo found),found)
118 use-xmlto = xmlto
119 prefer-xmlto = xmlto
120else
121 use-xmlto = notfound
122 prefer-xmlto = $(use-db2x)
123endif
1da177e4 124
71f95cfb
MW
125# the commands, generated from the chosen template
126quiet_cmd_db2ps = PS $@
127 cmd_db2ps = $(subst TYPE,ps, $($(PS_METHOD)template))
1da177e4 128%.ps : %.xml
1da177e4
LT
129 $(call cmd,db2ps)
130
a34645f5 131quiet_cmd_db2pdf = PDF $@
71f95cfb 132 cmd_db2pdf = $(subst TYPE,pdf, $($(PDF_METHOD)template))
1da177e4 133%.pdf : %.xml
1da177e4
LT
134 $(call cmd,db2pdf)
135
eb81d930 136
64e3da10 137index = index.html
ec3fadd6 138main_idx = $(obj)/$(index)
e237b657
MCC
139quiet_cmd_build_main_index = HTML $(main_idx)
140 cmd_build_main_index = rm -rf $(main_idx); \
eb81d930
BP
141 echo '<h1>Linux Kernel HTML Documentation</h1>' >> $(main_idx) && \
142 echo '<h2>Kernel Version: $(KERNELVERSION)</h2>' >> $(main_idx) && \
143 cat $(HTML) >> $(main_idx)
144
a34645f5 145quiet_cmd_db2html = HTML $@
c4d79a47 146 cmd_db2html = xmlto html $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \
4fa35166 147 echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \
ec3fadd6 148 $(patsubst %.html,%,$(notdir $@))</a><p>' > $@
1da177e4 149
5699f871
DCLP
150###
151# Rules to create an aux XML and .db, and use them to re-process the DocBook XML
152# to fill internal hyperlinks
153 gen_aux_xml = :
154 quiet_gen_aux_xml = echo ' XMLREF $@'
155silent_gen_aux_xml = :
156%.aux.xml: %.xml
157 @$($(quiet)gen_aux_xml)
158 @rm -rf $@
159 @(cat $< | egrep "^<refentry id" | egrep -o "\".*\"" | cut -f 2 -d \" > $<.db)
160 @$(KERNELDOCXMLREF) -db $<.db $< > $@
161.PRECIOUS: %.aux.xml
162
163%.html: %.aux.xml
8b0c2d98 164 @(which xmlto > /dev/null 2>&1) || \
fd4a3244 165 (echo "*** You need to install xmlto ***"; \
1da177e4
LT
166 exit 1)
167 @rm -rf $@ $(patsubst %.html,%,$@)
168 $(call cmd,db2html)
169 @if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \
170 cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
171
71f95cfb 172quiet_cmd_db2man = MAN $@
9ed71e7a 173 cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man/$(*F) $< ; fi
8b0c2d98
MW
174%.9 : %.xml
175 @(which xmlto > /dev/null 2>&1) || \
fd4a3244 176 (echo "*** You need to install xmlto ***"; \
8b0c2d98 177 exit 1)
9ed71e7a 178 $(Q)mkdir -p $(obj)/man/$(*F)
8b0c2d98
MW
179 $(call cmd,db2man)
180 @touch $@
1da177e4
LT
181
182###
0f035b8e 183# Rules to generate postscripts and PNG images from .fig format files
1da177e4
LT
184quiet_cmd_fig2eps = FIG2EPS $@
185 cmd_fig2eps = fig2dev -Leps $< $@
186
187%.eps: %.fig
188 @(which fig2dev > /dev/null 2>&1) || \
189 (echo "*** You need to install transfig ***"; \
190 exit 1)
191 $(call cmd,fig2eps)
192
193quiet_cmd_fig2png = FIG2PNG $@
194 cmd_fig2png = fig2dev -Lpng $< $@
195
196%.png: %.fig
197 @(which fig2dev > /dev/null 2>&1) || \
198 (echo "*** You need to install transfig ***"; \
199 exit 1)
200 $(call cmd,fig2png)
201
202###
203# Rule to convert a .c file to inline XML documentation
759cd603
MF
204 gen_xml = :
205 quiet_gen_xml = echo ' GEN $@'
206silent_gen_xml = :
1da177e4 207%.xml: %.c
759cd603 208 @$($(quiet)gen_xml)
1da177e4
LT
209 @( \
210 echo "<programlisting>"; \
211 expand --tabs=8 < $< | \
212 sed -e "s/&/\\&amp;/g" \
213 -e "s/</\\&lt;/g" \
214 -e "s/>/\\&gt;/g"; \
215 echo "</programlisting>") > $@
216
54721886
MCC
217else
218
54721886
MCC
219htmldocs:
220pdfdocs:
221psdocs:
222xmldocs:
223installmandocs:
224
225endif # IGNORE_DOCBOOKS
226
227
1da177e4
LT
228###
229# Help targets as used by the top-level makefile
230dochelp:
ebc88ef0 231 @echo ' Linux kernel internal documentation in different formats (DocBook):'
6fc52f81 232 @echo ' htmldocs - HTML'
6fc52f81
JJ
233 @echo ' pdfdocs - PDF'
234 @echo ' psdocs - Postscript'
235 @echo ' xmldocs - XML DocBook'
2810ae8c
RD
236 @echo ' mandocs - man pages'
237 @echo ' installmandocs - install man pages generated by mandocs'
238 @echo ' cleandocs - clean all generated DocBook files'
e57f0796 239 @echo
ebc88ef0 240 @echo ' make DOCBOOKS="s1.xml s2.xml" [target] Generate only docs s1.xml s2.xml'
e57f0796 241 @echo ' valid values for DOCBOOKS are: $(DOCBOOKS)'
54721886
MCC
242 @echo
243 @echo " make IGNORE_DOCBOOKS=1 [target] Don't generate docs from Docbook"
244 @echo ' This is useful to generate only the ReST docs (Sphinx)'
e57f0796 245
1da177e4
LT
246
247###
248# Temporary files left by various tools
249clean-files := $(DOCBOOKS) \
5699f871
DCLP
250 $(patsubst %.xml, %.dvi, $(DOCBOOKS)) \
251 $(patsubst %.xml, %.aux, $(DOCBOOKS)) \
252 $(patsubst %.xml, %.tex, $(DOCBOOKS)) \
253 $(patsubst %.xml, %.log, $(DOCBOOKS)) \
254 $(patsubst %.xml, %.out, $(DOCBOOKS)) \
255 $(patsubst %.xml, %.ps, $(DOCBOOKS)) \
256 $(patsubst %.xml, %.pdf, $(DOCBOOKS)) \
257 $(patsubst %.xml, %.html, $(DOCBOOKS)) \
258 $(patsubst %.xml, %.9, $(DOCBOOKS)) \
259 $(patsubst %.xml, %.aux.xml, $(DOCBOOKS)) \
260 $(patsubst %.xml, %.xml.db, $(DOCBOOKS)) \
261 $(patsubst %.xml, %.xml, $(DOCBOOKS)) \
82c1e49c 262 $(index)
1da177e4 263
42661299 264clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
4f193362 265
43f71d93 266cleandocs:
2810ae8c
RD
267 $(Q)rm -f $(call objectify, $(clean-files))
268 $(Q)rm -rf $(call objectify, $(clean-dirs))
269
4f193362
PS
270# Declare the contents of the .PHONY variable as phony. We keep that
271# information in a variable se we can use it in if_changed and friends.
272
273.PHONY: $(PHONY)