poky/documentation/Makefile
Scott Rifenbark 70edcf9cf3 mega-manual: Updates to support BitBake User Manual
Fixes [YOCTO #12399]

Fixes made to have the BitBake User Manual included in the build
of the mega-manual.  I placed this manual at the end of the
mega-manual.  Following changes made:

 * Makefile - Modified to include two PNG files.  All PNG files
              in a given manual are listed in the area that makes
              the mega-manual so that the tarfile is complete.

 * mega-manual.xml - Updated the front wording to tell the user
              that the BitBake User Manual is included in the
              Mega-Manual.  Also, added a last section to actually
              include the bitbake-title.png file and the *.xml
              files.  Note that I could not add the title figure
              from the same figures folder of the local "bitbake"
              folder.  Would not include in the build.  So, I
              pulled the file from the figures folder of the
              mega-manual, which is what I do for all the other
              book titles used in the mega-manual.

 * mega-manual.sed - Modified to clean out the old stuff that
              had been carried along for older books not
              supported for the release.  Modified to include
              link processing for the newly included BitBake
              User Manual.

 * New Figures - Moved copies of the "bb_multiconfig_files.png"
              and "bitbake-title.png" figures into the
              figures folder of the mega-manual.

(From yocto-docs rev: 78a1ae0ca92bb7f8a9d3a32a320299371d0ed361)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-12-27 22:53:11 +00:00

20 KiB

This is a single Makefile to handle all generated Yocto Project documents,

which includes the BitBake User Manual and the Toaster User Manual.

The Makefile needs to live in the documents directory and all figures used

in any manuals must be .PNG files and live in the individual book's figures

directory as well as in the figures directory for the mega-manual.

Some manuals are available as linked help through the Eclipse development

system. These manuals also include an "eclipse" sub-directory as part of

the make process.

Note that the figures for the Yocto Project Development Tasks Manual

differ depending on the BRANCH being built.

The Makefile has these targets:

all: If you leave off the target then "all" is implied.

You will generate HTML, eclipse help (if applicable),

and a tarball of files.

pdf: generates a PDF version of a manual. Not valid for the

Quick Start or the mega-manual (single, large HTML file

comprised of all Yocto Project manuals).

html: generates an HTML version of a manual.

eclipse: generates an HTML version of a manual that can be used as

eclipse help (including necessary metadata files).

tarball: creates a tarball for the doc files.

validate: validates

publish: pushes generated files to the Yocto Project website

clean: removes files

The Makefile can generate an HTML and PDF version of every document except the

Yocto Project Quick Start and the single, HTML mega-manual, which is comprised

of all the individual Yocto Project manuals. You can generate these two manuals

in HTML form only. The variable DOC indicates the folder name for a given manual.

The variable VER represents the distro version of the Yocto Release for which the

manuals are being generated. The variable BRANCH is used to indicate the

branch (edison or denzil) and is used only when DOC=dev-manual or

DOC=mega-manual. If you do not specify a BRANCH, the default branch used

will be for the latest Yocto Project release. If you build for either

edison or denzil, you must use BRANCH. You do not need to use BRANCH for

any release beyond denzil.

To build a manual, you must invoke Makefile with the DOC argument. If you

are going to publish the manual, then you must invoke Makefile with both the

DOC and the VER argument. Furthermore, if you are building or publishing

the edison or denzil versions of the Yocto Project Development Tasks Manual or

the mega-manual, you must also use the BRANCH argument.

Examples:

make DOC=bsp-guide

make html DOC=brief-yoctoprojectqs

make pdf DOC=ref-manual

make DOC=dev-manual BRANCH=edison

make DOC=mega-manual BRANCH=denzil

The first example generates the HTML and Eclipse help versions of the BSP Guide.

The second example generates the HTML version only of the Quick Start. Note

that the Quick Start only has an HTML version available. So, the

'make DOC=brief-yoctoprojectqs' command would be equivalent. The third example

generates just the PDF version of the Yocto Project Reference Manual.

The fourth example generates the HTML 'edison' version and (if available)

the Eclipse help version of the YP Development Tasks Manual. The last example

generates the HTML version of the mega-manual and uses the 'denzil'

branch when choosing figures for the tarball of figures. Any example that does

not use the BRANCH argument builds the current version of the manual set.

The publish target pushes the generated manuals to the Yocto Project

website. Unless you are a developer on the YP team, you will not succeed in

pushing manuals to this server. All files needed for the manual's HTML form are

pushed as well as applicable Eclipse versions.

Examples:

make publish DOC=bsp-guide VER=1.7

make publish DOC=adt-manual VER=1.6

make publish DOC=dev-manual VER=1.1.1 BRANCH=edison

make publish DOC=dev-manual VER=1.2 BRANCH=denzil

The first example publishes the 1.7 version of both the PDF and HTML versions of

the BSP Guide. The second example publishes the 1.6 version of both the PDF and

HTML versions of the ADT Manual. The third example publishes the 1.1.1 version of

the PDF and HTML YP Development Tasks Manual for the 'edison' branch. The fourth

example publishes the 1.2 version of the PDF and HTML YP Development Tasks Manual

for the 'denzil' branch.

ifeq ($(DOC),brief-yoctoprojectqs) XSLTOPTS = --stringparam html.stylesheet brief-yoctoprojectqs-style.css
--stringparam chapter.autolabel 0
--stringparam section.autolabel 0
--stringparam section.label.includes.component.label 0
--xinclude ALLPREQ = html eclipse tarball TARFILES = brief-yoctoprojectqs-style.css brief-yoctoprojectqs.html figures/bypqs-title.png
figures/yocto-project-transp.png MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css

endif

ifeq ($(DOC),overview-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = overview-manual-style.css overview-manual.html figures/overview-manual-title.png
figures/git-workflow.png figures/source-repos.png figures/index-downloads.png
figures/yp-download.png figures/YP-flow-diagram.png figures/key-dev-elements.png
figures/poky-reference-distribution.png figures/cross-development-toolchains.png
figures/user-configuration.png figures/layer-input.png figures/source-input.png
figures/package-feeds.png figures/patching.png figures/source-fetching.png
figures/configuration-compile-autoreconf.png figures/analysis-for-package-splitting.png
figures/image-generation.png figures/sdk-generation.png figures/images.png
figures/sdk.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css

endif

ifeq ($(DOC),bsp-guide) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = bsp-style.css bsp-guide.html figures/bsp-title.png
figures/bsp-dev-flow.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css

endif

ifeq ($(DOC),dev-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball

Note that the tarfile might produce the "Cannot stat: No such file or

directory" error message for .PNG files that are not present when building

a particular branch. The list of files is all-inclusive for all branches.

Note, if you don't provide a BRANCH option, it defaults to the latest stuff.

This would be appropriate for "master" branch.

ifeq ($(BRANCH),edison)

TARFILES = dev-style.css dev-manual.html
figures/app-dev-flow.png figures/bsp-dev-flow.png
figures/dev-title.png figures/git-workflow.png
figures/index-downloads.png figures/kernel-dev-flow.png
figures/kernel-example-repos-edison.png
figures/kernel-overview-1.png figures/kernel-overview-2.png
figures/kernel-overview-3-edison.png
figures/source-repos.png figures/yp-download.png
figures/wip.png else ifeq ($(BRANCH),denzil) TARFILES = dev-style.css dev-manual.html
figures/app-dev-flow.png figures/bsp-dev-flow.png
figures/dev-title.png figures/git-workflow.png
figures/index-downloads.png figures/kernel-dev-flow.png
figures/kernel-example-repos-denzil.png
figures/kernel-overview-1.png figures/kernel-overview-2.png
figures/kernel-overview-3-denzil.png
figures/source-repos.png figures/yp-download.png
figures/wip.png else TARFILES = dev-style.css dev-manual.html figures/buildhistory-web.png
figures/dev-title.png figures/buildhistory.png
figures/recipe-workflow.png figures/bitbake-build-flow.png
figures/multiconfig_files.png
eclipse endif

MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css

endif

ifeq ($(DOC),mega-manual) XSLTOPTS = --stringparam html.stylesheet mega-style.css
--stringparam chapter.autolabel 1
--stringparam section.autolabel 1
--stringparam section.label.includes.component.label 1
--xinclude ALLPREQ = html tarball

ifeq ($(BRANCH),edison)

TARFILES = mega-manual.html mega-style.css figures/yocto-environment.png
figures/building-an-image.png
figures/using-a-pre-built-image.png
figures/poky-title.png
figures/adt-title.png figures/bsp-title.png
figures/kernel-title.png figures/kernel-architecture-overview.png
figures/app-dev-flow.png figures/bsp-dev-flow.png
figures/dev-title.png figures/git-workflow.png
figures/index-downloads.png figures/kernel-dev-flow.png
figures/kernel-example-repos-edison.png
figures/kernel-overview-1.png figures/kernel-overview-2.png
figures/kernel-overview-3-edison.png
figures/source-repos.png figures/yp-download.png
figures/wip.png else ifeq ($(BRANCH),denzil) TARFILES = mega-manual.html mega-style.css figures/yocto-environment.png
figures/building-an-image.png
figures/using-a-pre-built-image.png
figures/poky-title.png
figures/adt-title.png figures/bsp-title.png
figures/kernel-title.png figures/kernel-architecture-overview.png
figures/app-dev-flow.png figures/bsp-dev-flow.png
figures/dev-title.png figures/git-workflow.png
figures/index-downloads.png figures/kernel-dev-flow.png
figures/kernel-example-repos-denzil.png
figures/kernel-overview-1.png figures/kernel-overview-2.png
figures/kernel-overview-3-denzil.png
figures/source-repos.png figures/yp-download.png
figures/wip.png else TARFILES = mega-manual.html mega-style.css
figures/YP-flow-diagram.png
figures/using-a-pre-built-image.png
figures/poky-title.png figures/buildhistory.png
figures/buildhistory-web.png
figures/sdk-title.png figures/bsp-title.png
figures/kernel-dev-title.png figures/kernel-architecture-overview.png
figures/bsp-dev-flow.png
figures/dev-title.png
figures/git-workflow.png figures/index-downloads.png
figures/kernel-dev-flow.png
figures/kernel-overview-2-generic.png
figures/source-repos.png figures/yp-download.png
figures/profile-title.png figures/kernelshark-all.png
figures/kernelshark-choose-events.png
figures/kernelshark-i915-display.png
figures/kernelshark-output-display.png figures/lttngmain0.png
figures/oprofileui-busybox.png figures/oprofileui-copy-to-user.png
figures/oprofileui-downloading.png figures/oprofileui-processes.png
figures/perf-probe-do_fork-profile.png
figures/perf-report-cycles-u.png
figures/perf-systemwide.png figures/perf-systemwide-libc.png
figures/perf-wget-busybox-annotate-menu.png
figures/perf-wget-busybox-annotate-udhcpc.png
figures/perf-wget-busybox-debuginfo.png
figures/perf-wget-busybox-dso-zoom.png
figures/perf-wget-busybox-dso-zoom-menu.png
figures/perf-wget-busybox-expanded-stripped.png
figures/perf-wget-flat-stripped.png
figures/perf-wget-g-copy-from-user-expanded-stripped.png
figures/perf-wget-g-copy-to-user-expanded-debuginfo.png
figures/perf-wget-g-copy-to-user-expanded-stripped.png
figures/perf-wget-g-copy-to-user-expanded-stripped-unresolved-hidden.png
figures/pybootchartgui-linux-yocto.png
figures/pychart-linux-yocto-rpm.png
figures/pychart-linux-yocto-rpm-nostrip.png
figures/sched-wakeup-profile.png figures/sysprof-callers.png
figures/sysprof-copy-from-user.png figures/sysprof-copy-to-user.png
figures/cross-development-toolchains.png
figures/user-configuration.png
figures/source-input.png figures/package-feeds.png
figures/layer-input.png figures/images.png figures/sdk.png
figures/source-fetching.png figures/patching.png
figures/configuration-compile-autoreconf.png
figures/analysis-for-package-splitting.png
figures/image-generation.png figures/key-dev-elements.png
figures/sdk-generation.png figures/recipe-workflow.png
figures/build-workspace-directory.png figures/mega-title.png
figures/toaster-title.png figures/hosted-service.png figures/multiconfig_files.png
figures/simple-configuration.png figures/poky-reference-distribution.png
figures/compatible-layers.png figures/import-layer.png figures/new-project.png
figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png
figures/sdk-devtool-add-flow.png figures/sdk-installed-extensible-sdk-directory.png
figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png
figures/sdk-devtool-upgrade-flow.png figures/bitbake-build-flow.png figures/bypqs-title.png
figures/overview-manual-title.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png
figures/bb_multiconfig_files.png figures/bitbake-title.png endif

MANUALS = $(DOC)/$(DOC).html FIGURES = figures STYLESHEET = $(DOC)/*.css

endif

ifeq ($(DOC),ref-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = ref-manual.html ref-style.css figures/poky-title.png
figures/build-workspace-directory.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css endif

ifeq ($(DOC),sdk-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = sdk-manual.html sdk-style.css figures/sdk-title.png
figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png
figures/sdk-installed-extensible-sdk-directory.png figures/sdk-devtool-add-flow.png
figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png
figures/sdk-devtool-upgrade-flow.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css endif

ifeq ($(DOC),profile-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = profile-manual.html profile-manual-style.css
figures/profile-title.png figures/kernelshark-all.png
figures/kernelshark-choose-events.png
figures/kernelshark-i915-display.png
figures/kernelshark-output-display.png figures/lttngmain0.png
figures/oprofileui-busybox.png figures/oprofileui-copy-to-user.png
figures/oprofileui-downloading.png figures/oprofileui-processes.png
figures/perf-probe-do_fork-profile.png
figures/perf-report-cycles-u.png
figures/perf-systemwide.png figures/perf-systemwide-libc.png
figures/perf-wget-busybox-annotate-menu.png
figures/perf-wget-busybox-annotate-udhcpc.png
figures/perf-wget-busybox-debuginfo.png
figures/perf-wget-busybox-dso-zoom.png
figures/perf-wget-busybox-dso-zoom-menu.png
figures/perf-wget-busybox-expanded-stripped.png
figures/perf-wget-flat-stripped.png
figures/perf-wget-g-copy-from-user-expanded-stripped.png
figures/perf-wget-g-copy-to-user-expanded-debuginfo.png
figures/perf-wget-g-copy-to-user-expanded-stripped.png
figures/perf-wget-g-copy-to-user-expanded-stripped-unresolved-hidden.png
figures/pybootchartgui-linux-yocto.png
figures/pychart-linux-yocto-rpm.png
figures/pychart-linux-yocto-rpm-nostrip.png
figures/sched-wakeup-profile.png figures/sysprof-callers.png
figures/sysprof-copy-from-user.png figures/sysprof-copy-to-user.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css endif

ifeq ($(DOC),kernel-dev) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = kernel-dev.html kernel-dev-style.css
figures/kernel-dev-title.png figures/kernel-overview-2-generic.png
figures/kernel-architecture-overview.png figures/kernel-dev-flow.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css endif

ifeq ($(DOC),toaster-manual) XSLTOPTS = --xinclude ALLPREQ = html tarball TARFILES = toaster-manual.html toaster-manual-style.css
figures/toaster-title.png figures/simple-configuration.png
figures/hosted-service.png
figures/compatible-layers.png figures/import-layer.png figures/new-project.png MANUALS = $(DOC)/$(DOC).html FIGURES = figures STYLESHEET = $(DOC)/*.css endif

These URI should be rewritten by your distribution's xml catalog to

match your locally installed XSL stylesheets.

XSL_BASE_URI = http://docbook.sourceforge.net/release/xsl/1.76.1 XSL_XHTML_URI = $(XSL_BASE_URI)/xhtml/docbook.xsl

all: $(ALLPREQ)

pdf: ifeq ($(DOC),brief-yoctoprojectqs) @echo " " @echo "ERROR: You cannot generate a PDF file for brief-yoctoprojectqs." @echo " "

else ifeq ($(DOC),mega-manual) @echo " " @echo "ERROR: You cannot generate a mega-manual PDF file." @echo " "

else

cd $(DOC); ../tools/poky-docbook-to-pdf $(DOC).xml ../template; cd ..

endif

html: ifeq ($(DOC),mega-manual)

See http://www.sagehill.net/docbookxsl/HtmlOutput.html

@echo " "
@echo "******** Building "$(DOC)
@echo " "
cd $(DOC); xsltproc $(XSLTOPTS) -o $(DOC).html $(DOC)-customization.xsl $(DOC).xml; cd ..
@echo " "
@echo "******** Using mega-manual.sed to process external links"
@echo " "
cd $(DOC); sed -f ../tools/mega-manual.sed < mega-manual.html > mega-output.html; cd ..
@echo " "
@echo "******** Cleaning up transient file mega-output.html"
@echo " "
cd $(DOC); rm mega-manual.html; mv mega-output.html mega-manual.html; cd ..

else

See http://www.sagehill.net/docbookxsl/HtmlOutput.html

@echo " "
@echo "******** Building "$(DOC)
@echo " "
cd $(DOC); xsltproc $(XSLTOPTS) -o $(DOC).html $(DOC)-customization.xsl $(DOC).xml; cd ..

endif

eclipse: BASE_DIR = html/$(DOC)/

eclipse: eclipse-generate eclipse-resolve-links

.PHONY : eclipse-generate eclipse-resolve-links

eclipse-generate: ifeq ($(filter $(DOC), overview-manual sdk-manual bsp-guide dev-manual kernel-dev profile-manual ref-manual brief-yoctoprojectqs),) @echo " " @echo "ERROR: You can only create eclipse documentation" @echo " of the following documentation parts:" @echo " - overview-manual" @echo " - sdk-manual" @echo " - bsp-guide" @echo " - dev-manual" @echo " - kernel-dev" @echo " - profile-manual" @echo " - ref-manual" @echo " - brief-yoctoprojectqs" @echo " " else @echo " " @echo "******** Building eclipse help of "$(DOC) @echo " " cd $(DOC) &&
xsltproc $(XSLTOPTS)
--stringparam base.dir '$(BASE_DIR)'
-o eclipse/$(DOC).html
$(DOC)-eclipse-customization.xsl $(DOC).xml &&
mv eclipse/toc.xml eclipse/$(DOC)-toc.xml &&
cp -rf $(FIGURES) eclipse/$(BASE_DIR) &&
cd ..;

$(call modify-eclipse)

endif

eclipse-resolve-links: @echo " " @echo "******** Using eclipse-help.sed to process external links" @echo " " $(foreach FILE,
$(wildcard $(DOC)/eclipse/html/$(DOC)/*.html),
$(shell sed -i -f tools/eclipse-help.sed $(FILE)))

tarball: html @echo " " @echo "******** Creating Tarball of document files" @echo " " cd $(DOC); tar -cvzf $(DOC).tgz $(TARFILES); cd ..

validate: cd $(DOC); xmllint --postvalid --xinclude --noout $(DOC).xml; cd ..

publish: @if test -f $(DOC)/$(DOC).html;
then
echo " ";
echo "******** Publishing "$(DOC)".html";
echo " ";
scp -r $(MANUALS) $(STYLESHEET) docs.yp:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC);
cd $(DOC); scp -r $(FIGURES) docs.yp:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC);
else
echo " ";
echo $(DOC)".html missing. Generate the file first then try again.";
echo " ";
fi

clean: rm -rf $(MANUALS); rm $(DOC)/$(DOC).tgz;