blob: 7d4058ae7514712d62ff2bb3e3c0ae18f010873a [file] [log] [blame]
Andrew Geissler4ed12e12020-06-05 18:00:41 -05001#
Andrew Geissler4873add2020-11-02 18:44:49 -06002# SPDX-License-Identifier: CC-BY-2.0-UK
3#
4# This is a single Makefile to handle all generated Yocto Project documents,
5# which includes the BitBake User Manual and the Toaster User Manual.
6# The Makefile needs to live in the documents directory and all figures used
7# in any manuals must be .PNG files and live in the individual book's figures
8# directory as well as in the figures directory for the mega-manual.
9#
10# Note that the figures for the Yocto Project Development Tasks Manual
11# differ depending on the BRANCH being built.
12#
13# The Makefile has these targets:
14# all: If you leave off the target then "all" is implied.
15# You will generate HTML and a tarball of files.
16#
17# pdf: generates a PDF version of a manual. Not valid for the
18# Quick Start or the mega-manual (single, large HTML file
19# comprised of all Yocto Project manuals).
20# html: generates an HTML version of a manual.
21# tarball: creates a tarball for the doc files.
22# validate: validates
23# publish: pushes generated files to the Yocto Project website
24# clean: removes files
25#
26# The Makefile can generate an HTML and PDF version of every document except the
27# Yocto Project Quick Start and the single, HTML mega-manual, which is comprised
28# of all the individual Yocto Project manuals. You can generate these two manuals
29# in HTML form only. The variable DOC indicates the folder name for a given manual.
30# The variable VER represents the distro version of the Yocto Release for which the
31# manuals are being generated. The variable BRANCH is used to indicate the
32# branch (edison or denzil) and is used only when DOC=dev-manual or
33# DOC=mega-manual. If you do not specify a BRANCH, the default branch used
34# will be for the latest Yocto Project release. If you build for either
35# edison or denzil, you must use BRANCH. You do not need to use BRANCH for
36# any release beyond denzil.
37#
38# To build a manual, you must invoke Makefile with the DOC argument. If you
39# are going to publish the manual, then you must invoke Makefile with both the
40# DOC and the VER argument. Furthermore, if you are building or publishing
41# the edison or denzil versions of the Yocto Project Development Tasks Manual or
42# the mega-manual, you must also use the BRANCH argument.
43#
44# Examples:
45#
46# make DOC=bsp-guide
47# make html DOC=brief-yoctoprojectqs
48# make pdf DOC=ref-manual
49# make DOC=dev-manual BRANCH=edison
50# make DOC=mega-manual BRANCH=denzil
51#
52# The first example generates the HTML version of the BSP Guide.
53# The second example generates the HTML version only of the Quick Start. Note
54# that the Quick Start only has an HTML version available. So, the
55# 'make DOC=brief-yoctoprojectqs' command would be equivalent. The third example
56# generates just the PDF version of the Yocto Project Reference Manual.
57# The fourth example generates the HTML 'edison' version of the YP Development
58# Tasks Manual. The last example
59# generates the HTML version of the mega-manual and uses the 'denzil'
60# branch when choosing figures for the tarball of figures. Any example that does
61# not use the BRANCH argument builds the current version of the manual set.
62#
63# The publish target pushes the generated manuals to the Yocto Project
64# website. Unless you are a developer on the YP team, you will not succeed in
65# pushing manuals to this server. All files needed for the manual's HTML form are
66# pushed.
67#
68# Examples:
69#
70# make publish DOC=bsp-guide VER=1.7
71# make publish DOC=adt-manual VER=1.6
72# make publish DOC=dev-manual VER=1.1.1 BRANCH=edison
73# make publish DOC=dev-manual VER=1.2 BRANCH=denzil
74#
75# The first example publishes the 1.7 version of both the PDF and HTML versions of
76# the BSP Guide. The second example publishes the 1.6 version of both the PDF and
77# HTML versions of the ADT Manual. The third example publishes the 1.1.1 version of
78# the PDF and HTML YP Development Tasks Manual for the 'edison' branch. The fourth
79# example publishes the 1.2 version of the PDF and HTML YP Development Tasks Manual
80# for the 'denzil' branch.
81#
82# IN MEMORIAM: This comment is to remember Scott Rifenbark (scottrif), whom we lost
83# in January, 2020. Scott was the primary technical writer for the Yocto Project for
84# over 9 years. In that time, he contributed many thousands of patches, built this
85# documentation tree, and enabled tens of thousands of developers to succeed with
86# embedded Linux. He ran this Makefile many thousands of times. Godspeed, Dude.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050087
Andrew Geissler4873add2020-11-02 18:44:49 -060088ifeq ($(DOC),brief-yoctoprojectqs)
89XSLTOPTS = --stringparam html.stylesheet brief-yoctoprojectqs-style.css \
90 --stringparam chapter.autolabel 0 \
91 --stringparam section.autolabel 0 \
92 --stringparam section.label.includes.component.label 0 \
93 --xinclude
94ALLPREQ = html tarball
95TARFILES = brief-yoctoprojectqs-style.css brief-yoctoprojectqs.html figures/bypqs-title.png \
96 figures/yocto-project-transp.png
97MANUALS = $(DOC)/$(DOC).html
98FIGURES = figures
99STYLESHEET = $(DOC)/*.css
Brad Bishop316dfdd2018-06-25 12:45:53 -0400100
101endif
102
Andrew Geissler4873add2020-11-02 18:44:49 -0600103ifeq ($(DOC),overview-manual)
104XSLTOPTS = --xinclude
105ALLPREQ = html tarball
106TARFILES = overview-manual-style.css overview-manual.html figures/overview-manual-title.png \
107 figures/git-workflow.png figures/source-repos.png figures/index-downloads.png \
108 figures/yp-download.png figures/YP-flow-diagram.png figures/key-dev-elements.png \
109 figures/poky-reference-distribution.png figures/cross-development-toolchains.png \
110 figures/user-configuration.png figures/layer-input.png figures/source-input.png \
111 figures/package-feeds.png figures/patching.png figures/source-fetching.png \
112 figures/configuration-compile-autoreconf.png figures/analysis-for-package-splitting.png \
113 figures/image-generation.png figures/sdk-generation.png figures/images.png \
114 figures/sdk.png
115MANUALS = $(DOC)/$(DOC).html
116FIGURES = figures
117STYLESHEET = $(DOC)/*.css
Brad Bishop316dfdd2018-06-25 12:45:53 -0400118
Andrew Geissler4873add2020-11-02 18:44:49 -0600119endif
Brad Bishop316dfdd2018-06-25 12:45:53 -0400120
Andrew Geissler4873add2020-11-02 18:44:49 -0600121ifeq ($(DOC),bsp-guide)
122XSLTOPTS = --xinclude
123ALLPREQ = html tarball
124TARFILES = bsp-style.css bsp-guide.html figures/bsp-title.png \
125 figures/bsp-dev-flow.png
126MANUALS = $(DOC)/$(DOC).html
127FIGURES = figures
128STYLESHEET = $(DOC)/*.css
129
130endif
131
132ifeq ($(DOC),dev-manual)
133XSLTOPTS = --xinclude
134ALLPREQ = html tarball
135#
136# Note that the tarfile might produce the "Cannot stat: No such file or
137# directory" error message for .PNG files that are not present when building
138# a particular branch. The list of files is all-inclusive for all branches.
139# Note, if you don't provide a BRANCH option, it defaults to the latest stuff.
140# This would be appropriate for "master" branch.
141#
142
143TARFILES = dev-style.css dev-manual.html figures/buildhistory-web.png \
144 figures/dev-title.png figures/buildhistory.png \
145 figures/recipe-workflow.png figures/bitbake-build-flow.png \
146 figures/multiconfig_files.png figures/cute-files-npm-example.png
147
148MANUALS = $(DOC)/$(DOC).html
149FIGURES = figures
150STYLESHEET = $(DOC)/*.css
151
152endif
153
154ifeq ($(DOC),mega-manual)
155XSLTOPTS = --stringparam html.stylesheet mega-style.css \
156 --stringparam chapter.autolabel 1 \
157 --stringparam section.autolabel 1 \
158 --stringparam section.label.includes.component.label 1 \
159 --xinclude
160ALLPREQ = html tarball
161
162TARFILES = mega-manual.html mega-style.css \
163 figures/YP-flow-diagram.png \
164 figures/using-a-pre-built-image.png \
165 figures/poky-title.png figures/buildhistory.png \
166 figures/buildhistory-web.png \
167 figures/sdk-title.png figures/bsp-title.png \
168 figures/kernel-dev-title.png figures/kernel-architecture-overview.png \
169 figures/bsp-dev-flow.png \
170 figures/dev-title.png \
171 figures/git-workflow.png figures/index-downloads.png \
172 figures/kernel-dev-flow.png \
173 figures/kernel-overview-2-generic.png \
174 figures/source-repos.png figures/yp-download.png \
175 figures/profile-title.png figures/kernelshark-all.png \
176 figures/kernelshark-choose-events.png \
177 figures/kernelshark-i915-display.png \
178 figures/kernelshark-output-display.png \
179 figures/oprofileui-busybox.png figures/oprofileui-copy-to-user.png \
180 figures/oprofileui-downloading.png figures/oprofileui-processes.png \
181 figures/perf-probe-do_fork-profile.png \
182 figures/perf-report-cycles-u.png \
183 figures/perf-systemwide.png figures/perf-systemwide-libc.png \
184 figures/perf-wget-busybox-annotate-menu.png \
185 figures/perf-wget-busybox-annotate-udhcpc.png \
186 figures/perf-wget-busybox-debuginfo.png \
187 figures/perf-wget-busybox-dso-zoom.png \
188 figures/perf-wget-busybox-dso-zoom-menu.png \
189 figures/perf-wget-busybox-expanded-stripped.png \
190 figures/perf-wget-flat-stripped.png \
191 figures/perf-wget-g-copy-from-user-expanded-stripped.png \
192 figures/perf-wget-g-copy-to-user-expanded-debuginfo.png \
193 figures/perf-wget-g-copy-to-user-expanded-stripped.png \
194 figures/perf-wget-g-copy-to-user-expanded-stripped-unresolved-hidden.png \
195 figures/pybootchartgui-linux-yocto.png \
196 figures/pychart-linux-yocto-rpm.png \
197 figures/pychart-linux-yocto-rpm-nostrip.png \
198 figures/sched-wakeup-profile.png figures/sysprof-callers.png \
199 figures/sysprof-copy-from-user.png figures/sysprof-copy-to-user.png \
200 figures/cross-development-toolchains.png \
201 figures/user-configuration.png \
202 figures/source-input.png figures/package-feeds.png \
203 figures/layer-input.png figures/images.png figures/sdk.png \
204 figures/source-fetching.png figures/patching.png \
205 figures/configuration-compile-autoreconf.png \
206 figures/analysis-for-package-splitting.png \
207 figures/image-generation.png figures/key-dev-elements.png\
208 figures/sdk-generation.png figures/recipe-workflow.png \
209 figures/build-workspace-directory.png figures/mega-title.png \
210 figures/toaster-title.png figures/hosted-service.png figures/multiconfig_files.png \
211 figures/simple-configuration.png figures/poky-reference-distribution.png \
212 figures/compatible-layers.png figures/import-layer.png figures/new-project.png \
213 figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
214 figures/sdk-devtool-add-flow.png figures/sdk-installed-extensible-sdk-directory.png \
215 figures/sdk-devtool-modify-flow.png \
216 figures/sdk-devtool-upgrade-flow.png figures/bitbake-build-flow.png figures/bypqs-title.png \
217 figures/overview-manual-title.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png \
218 figures/bb_multiconfig_files.png figures/bitbake-title.png figures/cute-files-npm-example.png
219
220MANUALS = $(DOC)/$(DOC).html
221FIGURES = figures
222STYLESHEET = $(DOC)/*.css
223
224endif
225
226ifeq ($(DOC),ref-manual)
227XSLTOPTS = --xinclude
228ALLPREQ = html tarball
229TARFILES = ref-manual.html ref-style.css figures/poky-title.png \
230 figures/build-workspace-directory.png
231MANUALS = $(DOC)/$(DOC).html
232FIGURES = figures
233STYLESHEET = $(DOC)/*.css
234endif
235
236ifeq ($(DOC),sdk-manual)
237XSLTOPTS = --xinclude
238ALLPREQ = html tarball
239TARFILES = sdk-manual.html sdk-style.css figures/sdk-title.png \
240 figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
241 figures/sdk-installed-extensible-sdk-directory.png figures/sdk-devtool-add-flow.png \
242 figures/sdk-devtool-modify-flow.png \
243 figures/sdk-devtool-upgrade-flow.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png
244MANUALS = $(DOC)/$(DOC).html
245FIGURES = figures
246STYLESHEET = $(DOC)/*.css
247endif
248
249ifeq ($(DOC),profile-manual)
250XSLTOPTS = --xinclude
251ALLPREQ = html tarball
252TARFILES = profile-manual.html profile-manual-style.css \
253 figures/profile-title.png figures/kernelshark-all.png \
254 figures/kernelshark-choose-events.png \
255 figures/kernelshark-i915-display.png \
256 figures/kernelshark-output-display.png \
257 figures/oprofileui-busybox.png figures/oprofileui-copy-to-user.png \
258 figures/oprofileui-downloading.png figures/oprofileui-processes.png \
259 figures/perf-probe-do_fork-profile.png \
260 figures/perf-report-cycles-u.png \
261 figures/perf-systemwide.png figures/perf-systemwide-libc.png \
262 figures/perf-wget-busybox-annotate-menu.png \
263 figures/perf-wget-busybox-annotate-udhcpc.png \
264 figures/perf-wget-busybox-debuginfo.png \
265 figures/perf-wget-busybox-dso-zoom.png \
266 figures/perf-wget-busybox-dso-zoom-menu.png \
267 figures/perf-wget-busybox-expanded-stripped.png \
268 figures/perf-wget-flat-stripped.png \
269 figures/perf-wget-g-copy-from-user-expanded-stripped.png \
270 figures/perf-wget-g-copy-to-user-expanded-debuginfo.png \
271 figures/perf-wget-g-copy-to-user-expanded-stripped.png \
272 figures/perf-wget-g-copy-to-user-expanded-stripped-unresolved-hidden.png \
273 figures/pybootchartgui-linux-yocto.png \
274 figures/pychart-linux-yocto-rpm.png \
275 figures/pychart-linux-yocto-rpm-nostrip.png \
276 figures/sched-wakeup-profile.png figures/sysprof-callers.png \
277 figures/sysprof-copy-from-user.png figures/sysprof-copy-to-user.png
278MANUALS = $(DOC)/$(DOC).html
279FIGURES = figures
280STYLESHEET = $(DOC)/*.css
281endif
282
283ifeq ($(DOC),kernel-dev)
284XSLTOPTS = --xinclude
285ALLPREQ = html tarball
286TARFILES = kernel-dev.html kernel-dev-style.css \
287 figures/kernel-dev-title.png figures/kernel-overview-2-generic.png \
288 figures/kernel-architecture-overview.png figures/kernel-dev-flow.png
289MANUALS = $(DOC)/$(DOC).html
290FIGURES = figures
291STYLESHEET = $(DOC)/*.css
292endif
293
294ifeq ($(DOC),toaster-manual)
295XSLTOPTS = --xinclude
296ALLPREQ = html tarball
297TARFILES = toaster-manual.html toaster-manual-style.css \
298 figures/toaster-title.png figures/simple-configuration.png \
299 figures/hosted-service.png \
300 figures/compatible-layers.png figures/import-layer.png figures/new-project.png
301MANUALS = $(DOC)/$(DOC).html
302FIGURES = figures
303STYLESHEET = $(DOC)/*.css
304endif
305
306
307ifeq ($(DOC),test-manual)
308XSLTOPTS = --xinclude
309ALLPREQ = html tarball
310TARFILES = test-manual.html test-manual-style.css \
311 figures/test-manual-title.png figures/ab-test-cluster.png
312MANUALS = $(DOC)/$(DOC).html
313FIGURES = figures
314STYLESHEET = $(DOC)/*.css
315endif
316
317##
318# These URI should be rewritten by your distribution's xml catalog to
319# match your locally installed XSL stylesheets.
320XSL_BASE_URI = http://docbook.sourceforge.net/release/xsl/1.76.1
321XSL_XHTML_URI = $(XSL_BASE_URI)/xhtml/docbook.xsl
322
323all: $(ALLPREQ)
324
325pdf:
326ifeq ($(DOC),brief-yoctoprojectqs)
327 @echo " "
328 @echo "ERROR: You cannot generate a PDF file for brief-yoctoprojectqs."
329 @echo " "
330
331else ifeq ($(DOC),mega-manual)
332 @echo " "
333 @echo "ERROR: You cannot generate a mega-manual PDF file."
334 @echo " "
335
336else
337
338 cd $(DOC); ../tools/poky-docbook-to-pdf $(DOC).xml ../template; cd ..
339endif
340
341html:
342ifeq ($(DOC),mega-manual)
343# See http://www.sagehill.net/docbookxsl/HtmlOutput.html
344 @echo " "
345 @echo "******** Building "$(DOC)
346 @echo " "
347 cd $(DOC); xsltproc $(XSLTOPTS) -o $(DOC).html $(DOC)-customization.xsl $(DOC).xml; cd ..
348 @echo " "
349 @echo "******** Using mega-manual.sed to process external links"
350 @echo " "
351 cd $(DOC); sed -f ../tools/mega-manual.sed < mega-manual.html > mega-output.html; cd ..
352 @echo " "
353 @echo "******** Cleaning up transient file mega-output.html"
354 @echo " "
355 cd $(DOC); rm mega-manual.html; mv mega-output.html mega-manual.html; cd ..
356else
357# See http://www.sagehill.net/docbookxsl/HtmlOutput.html
358 @echo " "
359 @echo "******** Building "$(DOC)
360 @echo " "
361 cd $(DOC); xsltproc $(XSLTOPTS) -o $(DOC).html $(DOC)-customization.xsl $(DOC).xml; cd ..
362endif
363
364
365tarball: html
366 @echo " "
367 @echo "******** Creating Tarball of document files"
368 @echo " "
369 cd $(DOC); tar -cvzf $(DOC).tgz $(TARFILES); cd ..
370
371validate:
372 cd $(DOC); xmllint --postvalid --xinclude --noout $(DOC).xml; cd ..
373
374
375publish:
376 @if test -f $(DOC)/$(DOC).html; \
377 then \
378 echo " "; \
379 echo "******** Publishing "$(DOC)".html"; \
380 echo " "; \
381 scp -r $(MANUALS) $(STYLESHEET) www.yoctoproject.org:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC); \
382 cd $(DOC); scp -r $(FIGURES) www.yoctoproject.org:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC); \
383 else \
384 echo " "; \
385 echo $(DOC)".html missing. Generate the file first then try again."; \
386 echo " "; \
387 fi
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500388
389clean:
Andrew Geissler4873add2020-11-02 18:44:49 -0600390 rm -rf $(MANUALS); rm $(DOC)/$(DOC).tgz;