Files
poky/documentation/Makefile
Scott Rifenbark b83c526667 Makefile: Modified to make 'pdf' target not part of 'all'
By default, making a file will not include the PDF version of the
manual.  Some manuals you can't do a PDF version anyway (i.e.
yocto-project-qs and mega-manual).  The PDF versions do not need
to be part of the mainstream make process.  If someone wants these
they can take the extra step of doing 'make pdf DOC=<manual>'.

(From yocto-docs rev: 16f605350adb1b252b94e921faf282d0634cefb6)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-02-17 15:16:47 +00:00

18 KiB

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

The Makefile needs to live in the documentation/ 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.

Note that the figures for the Yocto Project Development 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 Manual or

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

Examples:

make DOC=bsp-guide

make html DOC=yocto-project-qs

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=yocto-project-qs' 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 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.3

make publish DOC=adt-manual VER=1.3

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.3 version of both the HTML version

of the BSP Guide. The second example publishes the 1.3 version of the

HTML version of the YP Application Developer's Guide. The third example publishes

the HTML 'edison' versions of the YP Development Manual and, if applicable, the

Eclipse version. The fourth example publishes the HTML 'denzil' version and,

if applicable, the Eclipse version of the YP Development Manual.

ifeq ($(DOC),bsp-guide) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = bsp-style.css bsp-guide.html figures/bsp-title.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/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-overview-1.png figures/kernel-overview-2-generic.png
figures/source-repos.png figures/yp-download.png
figures/recipe-workflow.png
eclipse endif

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

endif

ifeq ($(DOC),yocto-project-qs) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = yocto-project-qs.html qs-style.css figures/yocto-environment.png
figures/building-an-image.png figures/using-a-pre-built-image.png
figures/yocto-project-transp.png
eclipse 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/yocto-environment.png
figures/building-an-image.png
figures/using-a-pre-built-image.png
figures/poky-title.png figures/buildhistory.png
figures/buildhistory-web.png
figures/adt-title.png figures/bsp-title.png
figures/kernel-dev-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-overview-1.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/yocto-environment-ref.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/sdk-generation.png figures/recipe-workflow.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/buildhistory.png figures/buildhistory-web.png eclipse
figures/cross-development-toolchains.png figures/layer-input.png
figures/package-feeds.png figures/source-input.png
figures/user-configuration.png figures/yocto-environment-ref.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/sdk-generation.png MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse FIGURES = figures STYLESHEET = $(DOC)/*.css endif

ifeq ($(DOC),adt-manual) XSLTOPTS = --xinclude ALLPREQ = html eclipse tarball TARFILES = adt-manual.html adt-style.css figures/adt-title.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-architecture-overview.png
eclipse MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse 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/current XSL_XHTML_URI = $(XSL_BASE_URI)/xhtml/docbook.xsl

all: $(ALLPREQ)

pdf: ifeq ($(DOC),yocto-project-qs) @echo " " @echo "ERROR: You cannot generate a yocto-project-qs PDF file." @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), adt-manual bsp-guide dev-manual kernel-dev profile-manual ref-manual yocto-project-qs),) @echo " " @echo "ERROR: You can only create eclipse documentation" @echo " of the following documentation parts:" @echo " - adt-manual" @echo " - bsp-guide" @echo " - dev-manual" @echo " - kernel-dev" @echo " - profile-manual" @echo " - ref-manual" @echo " - yocto-project-qs" @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;