##------------------------------------------------------------- ## HACK: stuff to avoid making the print docs if installing the ## tools to do so is impractical / too difficult ##------------------------------------------------------------- # Comment out the next line to skip building print docs. The default # is not to skip building print docs. Note, after changing it # you need to re-run autogen.sh and configure to make it take effect. BUILD_ALL_DOCS=yes # Whether to run xmlto pdf --with-fop # This is de fault, set to empty to use the default fo to pdf # processor that xmlto uses (which might be pdfxmltex, which is # known to be broken). WITH_FOP=--with-fop ##------------------------------------------------------------- ## END OF HACK ##------------------------------------------------------------- EXTRA_DIST = \ README \ images/home.png \ images/next.png \ images/prev.png \ images/up.png \ images/kcachegrind_xtree.png \ images/dh-tree.png \ internals/3_0_BUGSTATUS.txt \ internals/3_1_BUGSTATUS.txt \ internals/3_2_BUGSTATUS.txt \ internals/3_3_BUGSTATUS.txt \ internals/3_4_BUGSTATUS.txt \ internals/3_5_BUGSTATUS.txt \ internals/3_7_BUGSTATUS.txt \ internals/3_8_BUGSTATUS.txt \ internals/3_9_BUGSTATUS.txt \ internals/3_10_BUGSTATUS.txt \ internals/3_11_BUGSTATUS.txt \ internals/3_12_BUGSTATUS.txt \ internals/3_13_BUGSTATUS.txt \ internals/3_14_BUGSTATUS.txt \ internals/3_15_BUGSTATUS.txt \ internals/MERGE_3_10_1.txt \ internals/arm_thumb_notes_gdbserver.txt \ internals/avx-notes.txt \ internals/BIG_APP_NOTES.txt \ internals/Darwin-notes.txt \ internals/SPEC-notes.txt \ internals/directory-structure.txt \ internals/howto_BUILD_KDE42.txt \ internals/howto_oprofile.txt \ internals/m_replacemalloc.txt \ internals/m_syswrap.txt \ internals/module-structure.txt \ internals/multiple-architectures.txt \ internals/notes.txt \ internals/performance.txt \ internals/porting-HOWTO.txt \ internals/mpi2entries.txt \ internals/porting-to-ARM.txt \ internals/qemu-aarch64-linux-HOWTO.txt \ internals/qemu-mips64-linux-HOWTO.txt \ internals/register-uses.txt \ internals/release-HOWTO.txt \ internals/segments-seginfos.txt \ internals/t-chaining-notes.txt \ internals/threads-syscalls-signals.txt \ internals/tm-mutexstates.dot \ internals/tm-threadstates.dot \ internals/tracking-fn-entry-exit.txt \ internals/why-no-libc.txt \ internals/xml-output.txt \ internals/xml-output-protocol4.txt \ lib/line-wrap.xsl \ lib/vg_basic.css \ lib/vg-fo.xsl \ lib/vg-faq2txt.xsl \ lib/vg-html-chunk.xsl \ lib/vg-html-website.xsl \ lib/vg-html-common.xsl \ xml/FAQ.xml \ xml/dist-docs.xml \ xml/index.xml \ xml/licenses.xml \ xml/manpages-index.xml \ xml/manual.xml \ xml/manual-intro.xml \ xml/manual-core.xml \ xml/manual-core-adv.xml \ xml/manual-writing-tools.xml \ xml/design-impl.xml \ xml/quick-start-guide.xml \ xml/tech-docs.xml \ xml/valgrind-manpage.xml \ xml/vg-entities.xml \ xml/xml_help.txt ##------------------------------------------------------------------- ## Below here is more ordinary make stuff... ##------------------------------------------------------------------- myxmldir = $(top_srcdir)/docs/xml myimgdir = $(top_srcdir)/docs/images mylibdir = $(top_srcdir)/docs/lib myhtmldir = $(top_builddir)/docs/html myprintdir = $(top_builddir)/docs/print websitedir = $(top_builddir)/docs/website valkyriedir = $(top_builddir)/docs/vg-html downloadsdir = $(top_builddir)/docs/downloads vgdir = $(top_builddir)/docs/valgrind XML_CATALOG_FILES = /etc/xml/catalog # file to log print output to LOGFILE = print.log # validation stuff XMLLINT = xmllint XMLLINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent # stylesheet processor XSLTPROC = xsltproc XSLTPROC_FLAGS = --nonet --xinclude # stylesheets XSL_HTML_CHUNK_STYLE = $(mylibdir)/vg-html-chunk.xsl XSL_FO_STYLE = $(mylibdir)/vg-fo.xsl XSL_TEXT_STYLE = $(mylibdir)/vg-faq2txt.xsl XSL_WEBSITE_STYLE = $(mylibdir)/vg-html-website.xsl XSL_MAN_STYLES = \ /usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl \ /usr/share/xml/docbook/stylesheet/nwalsh/current/manpages/docbook.xsl \ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl # Input files for valid-manual and valid-manpages MANUAL_XML_FILES = $(myxmldir)/index.xml \ $(myxmldir)/vg-entities.xml \ $(myxmldir)/quick-start-guide.xml \ $(myxmldir)/manual.xml \ $(myxmldir)/manual-intro.xml \ $(myxmldir)/manual-core.xml \ $(myxmldir)/manual-core-adv.xml \ $(top_srcdir)/*/docs/*-manual.xml \ $(myxmldir)/quick-start-guide.xml \ $(myxmldir)/FAQ.xml \ $(myxmldir)/tech-docs.xml \ $(myxmldir)/design-impl.xml \ $(myxmldir)/manual-writing-tools.xml \ $(top_srcdir)/callgrind/docs/cl-format.xml \ $(myxmldir)/dist-docs.xml \ $(top_srcdir)/AUTHORS \ $(top_srcdir)/NEWS \ $(top_srcdir)/NEWS.old \ $(top_srcdir)/README \ $(top_srcdir)/README_MISSING_SYSCALL_OR_IOCTL \ $(top_srcdir)/README_DEVELOPERS \ $(top_srcdir)/README_PACKAGERS \ $(top_srcdir)/README.s390 \ $(top_srcdir)/README.android \ $(top_srcdir)/README.android_emulator \ $(top_srcdir)/README.mips \ $(top_srcdir)/README.solaris \ $(myxmldir)/licenses.xml \ $(top_srcdir)/COPYING \ $(top_srcdir)/COPYING.DOCS MANPAGES_XML_FILES = $(myxmldir)/manpages-index.xml \ $(myxmldir)/valgrind-manpage.xml \ $(myxmldir)/manual-core.xml \ $(top_srcdir)/*/docs/*-manual.xml all-docs: FAQ.txt man-pages html-docs print-docs valid-manual: $(MANUAL_XML_FILES) if type $(XMLLINT) 2>/dev/null; then \ $(XMLLINT) $(XMLLINT_FLAGS) $(myxmldir)/index.xml && \ touch $@; \ fi valid-manpages: $(MANPAGES_XML_FILES) if type $(XMLLINT) 2>/dev/null; then \ $(XMLLINT) $(XMLLINT_FLAGS) $(myxmldir)/manpages-index.xml && \ touch $@; \ fi check-local: valid-manual valid-manpages # The text version of the FAQ. FAQ.txt: @echo "Generating the text version of the FAQ ..." export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ $(XSLTPROC) $(XSLTPROC_FLAGS) -o ./FAQ.txt $(XSL_TEXT_STYLE) $(myxmldir)/FAQ.xml # the valgrind manpages man-pages: set -e; \ for x in $(XSL_MAN_STYLES) ; do \ if test -f $$x; then \ echo "Using manpage stylesheet: $$x"; \ export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ $(XSLTPROC) $(XSLTPROC_FLAGS) -o ./ $$x $(myxmldir)/manpages-index.xml; \ exit 0; \ fi; \ done; \ echo ""; \ echo "Error: I can't find the XSL_MAN_STYLE file"; \ echo "Please check where it lives on your system, and" \ "amend the line 'XSL_MAN_STYLES = ' in this Makefile."; \ exit 1; # chunked html, on a chapter-by-chapter basis html-docs: @echo "Generating html files..." export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ mkdir -p $(myhtmldir) && \ /bin/rm -fr $(myhtmldir)/ && \ mkdir -p $(myhtmldir)/ && \ mkdir -p $(myhtmldir)/images && \ cp $(mylibdir)/vg_basic.css $(myhtmldir)/ && \ cp $(myimgdir)/*.png $(myhtmldir)/images && \ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(myhtmldir)/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml # pdf and postscript print-docs: @echo "Generating PDF file: $(myprintdir)/index.pdf (please be patient)..."; export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ mkdir -p $(myprintdir) && \ mkdir -p $(myprintdir)/images && \ cp $(myimgdir)/*.png $(myprintdir)/images && \ xmlto -v $(WITH_FOP) --stringparam=keep.relative.image.uris="1" \ -x $(XSL_FO_STYLE) \ --searchpath print pdf $(myxmldir)/index.xml &> $(LOGFILE) && \ echo "Generating PS file: $(myprintdir)/index.ps ..." && \ pdftops index.pdf && \ mv index.pdf index.ps $(myprintdir) && \ rm $(LOGFILE) # If the docs have been built, install them. But don't worry if they have # not -- developers do 'make install' not from a 'make dist'-ified distro all # the time. # # Note: this is done at 'make install' time. # Note 2: the ifeq/else/endif have to be indented one space # because otherwise it seems that automake thinks it should # be the one to handle the else/endif parts, not GNU make # as we intend. install-data-hook: set -e; \ if test -r html ; then \ mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ cp -r html $(DESTDIR)$(datadir)/doc/valgrind; \ fi for f in *.1 ; do \ if test -r $$f ; then \ mkdir -p $(DESTDIR)$(mandir)/man1; \ cp $$f $(DESTDIR)$(mandir)/man1; \ fi \ done ifeq ($(BUILD_ALL_DOCS),yes) set -e; \ if test -r index.pdf ; then \ mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ cp index.pdf $(DESTDIR)$(datadir)/doc/valgrind/valgrind_manual.pdf; \ fi set -e; \ if test -r index.ps ; then \ mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ cp index.ps $(DESTDIR)$(datadir)/doc/valgrind/valgrind_manual.ps; \ fi endif # This is done at 'make dist' time. It builds the html docs, print # docs and man pages and copies them into the docs/ directory in the # tarball. ifeq ($(BUILD_ALL_DOCS),yes) dist-hook: FAQ.txt html-docs man-pages print-docs cp -r html $(distdir) cp FAQ.txt $(distdir)/.. cp *.1 $(distdir) cp print/index.pdf $(distdir) cp print/index.ps $(distdir) else dist-hook: FAQ.txt html-docs man-pages cp -r html $(distdir) cp FAQ.txt $(distdir)/.. cp *.1 $(distdir) endif distclean-local: rm -rf html print rm -f FAQ.txt rm -f $(top_builddir)/FAQ.txt $(top_builddir)/docs/*.1 clean-local: rm -f valid-manual valid-manpages # ----------------------------------------------------------------------- # Note: the rest of this file is nothing to do with the normal build # tree. The stuff below contains special targets for web-site # artefacts. # chunked html with no html/body tags, css, or top nav, to fit into the website website-docs: @echo "Generating website html files ..." export XML_CATALOG_FILES=$(XML_CATALOG_FILES) /bin/rm -fr $(websitedir) mkdir -p $(websitedir) $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(websitedir)/ $(XSL_WEBSITE_STYLE) $(myxmldir)/index.xml # valkyrie carries around her own copy of the valgrind manual valkyrie-docs: @echo "Generating a set of valgrind docs for valkyrie..." export XML_CATALOG_FILES=$(XML_CATALOG_FILES) /bin/rm -fr $(valkyriedir) mkdir -p $(valkyriedir) mkdir -p $(valkyriedir)/images cp $(mylibdir)/vg_basic.css $(valkyriedir)/ cp $(myimgdir)/*.png $(valkyriedir)/images/ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(valkyriedir)/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml # html.tar.bz2, .pdf, .ps.bz2 files for downloading from the website download-docs: export XML_CATALOG_FILES=$(XML_CATALOG_FILES) /bin/rm -fr $(downloadsdir) mkdir -p $(downloadsdir) @echo "" @echo "Generating valgrind_manual.html.tar.bz2 ..." export XML_CATALOG_FILES=$(XML_CATALOG_FILES) /bin/rm -fr $(vgdir) mkdir -p $(vgdir) mkdir -p $(vgdir)/html mkdir -p $(vgdir)/html/images cp $(mylibdir)/vg_basic.css $(vgdir)/html/ cp $(myimgdir)/*.png $(vgdir)/html/images/ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(vgdir)/html/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml (cd $(top_builddir)/docs/ && \ (tar cfj $(downloadsdir)/valgrind_manual.html.tar.bz2 ./valgrind/html/ ) ) /bin/rm -fr $(vgdir)/html/ @echo "" @echo "Generating valgrind_manual.pdf ..." mkdir -p $(vgdir)/print mkdir -p $(vgdir)/print/images cp $(myimgdir)/*.png $(vgdir)/print/images/ xmlto -v $(WITH_FOP) --stringparam=keep.relative.image.uris="1" \ -x $(XSL_FO_STYLE) \ --searchpath print pdf $(myxmldir)/index.xml &> $(LOGFILE) mv index.pdf $(vgdir)/print/manual.pdf @echo "" @echo "Generating valgrind_manual.ps.bz2 ..." (cd $(vgdir)/print/ && \ ( pdftops manual.pdf ) ) mv $(vgdir)/print/manual.pdf $(downloadsdir)/valgrind_manual.pdf mv $(vgdir)/print/manual.ps $(downloadsdir)/valgrind_manual.ps bzip2 $(downloadsdir)/valgrind_manual.ps /bin/rm -fr $(vgdir) $(LOGFILE)