1 2 ##------------------------------------------------------------- 3 ## HACK: stuff to avoid making the print docs if installing the 4 ## tools to do so is impractical / too difficult 5 ##------------------------------------------------------------- 6 7 # Comment out the next line to skip building print docs. The default 8 # is not to skip building print docs. Note, after changing it 9 # you need to re-run autogen.sh and configure to make it take effect. 10 BUILD_ALL_DOCS=yes 11 12 ##------------------------------------------------------------- 13 ## END OF HACK 14 ##------------------------------------------------------------- 15 16 EXTRA_DIST = \ 17 README \ 18 images/home.png \ 19 images/next.png \ 20 images/prev.png \ 21 images/up.png \ 22 internals/3_0_BUGSTATUS.txt \ 23 internals/3_1_BUGSTATUS.txt \ 24 internals/3_2_BUGSTATUS.txt \ 25 internals/3_3_BUGSTATUS.txt \ 26 internals/3_4_BUGSTATUS.txt \ 27 internals/3_5_BUGSTATUS.txt \ 28 internals/3_7_BUGSTATUS.txt \ 29 internals/3_8_BUGSTATUS.txt \ 30 internals/3_9_BUGSTATUS.txt \ 31 internals/arm_thumb_notes_gdbserver.txt \ 32 internals/avx-notes.txt \ 33 internals/BIG_APP_NOTES.txt \ 34 internals/Darwin-notes.txt \ 35 internals/SPEC-notes.txt \ 36 internals/directory-structure.txt \ 37 internals/howto_BUILD_KDE42.txt \ 38 internals/howto_oprofile.txt \ 39 internals/m_replacemalloc.txt \ 40 internals/m_syswrap.txt \ 41 internals/module-structure.txt \ 42 internals/multiple-architectures.txt \ 43 internals/notes.txt \ 44 internals/performance.txt \ 45 internals/porting-HOWTO.txt \ 46 internals/mpi2entries.txt \ 47 internals/porting-to-ARM.txt \ 48 internals/register-uses.txt \ 49 internals/release-HOWTO.txt \ 50 internals/segments-seginfos.txt \ 51 internals/t-chaining-notes.txt \ 52 internals/threads-syscalls-signals.txt \ 53 internals/tm-mutexstates.dot \ 54 internals/tm-threadstates.dot \ 55 internals/tracking-fn-entry-exit.txt \ 56 internals/why-no-libc.txt \ 57 internals/xml-output.txt \ 58 internals/xml-output-protocol4.txt \ 59 lib/line-wrap.xsl \ 60 lib/vg_basic.css \ 61 lib/vg-fo.xsl \ 62 lib/vg-faq2txt.xsl \ 63 lib/vg-html-chunk.xsl \ 64 lib/vg-html-website.xsl \ 65 lib/vg-html-common.xsl \ 66 xml/FAQ.xml \ 67 xml/dist-docs.xml \ 68 xml/index.xml \ 69 xml/licenses.xml \ 70 xml/manpages-index.xml \ 71 xml/manual.xml \ 72 xml/manual-intro.xml \ 73 xml/manual-core.xml \ 74 xml/manual-core-adv.xml \ 75 xml/manual-writing-tools.xml \ 76 xml/design-impl.xml \ 77 xml/quick-start-guide.xml \ 78 xml/tech-docs.xml \ 79 xml/valgrind-manpage.xml \ 80 xml/vg-entities.xml \ 81 xml/xml_help.txt 82 83 84 ##------------------------------------------------------------------- 85 ## Below here is more ordinary make stuff... 86 ##------------------------------------------------------------------- 87 myxmldir = $(top_srcdir)/docs/xml 88 myimgdir = $(top_srcdir)/docs/images 89 mylibdir = $(top_srcdir)/docs/lib 90 91 myhtmldir = $(top_builddir)/docs/html 92 myprintdir = $(top_builddir)/docs/print 93 94 websitedir = $(top_builddir)/docs/website 95 valkyriedir = $(top_builddir)/docs/vg-html 96 downloadsdir = $(top_builddir)/docs/downloads 97 vgdir = $(top_builddir)/docs/valgrind 98 99 XML_CATALOG_FILES = /etc/xml/catalog 100 101 # file to log print output to 102 LOGFILE = print.log 103 104 # validation stuff 105 XMLLINT = xmllint 106 LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent 107 # validate with docbook 4.3 'cos it supports xml:base natively 108 VALID_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd 109 XMLLINT_FLAGS = $(LINT_FLAGS) $(VALID_FLAGS) 110 111 # stylesheet processor 112 XSLTPROC = xsltproc 113 XSLTPROC_FLAGS = --nonet --xinclude 114 115 # stylesheets 116 XSL_HTML_CHUNK_STYLE = $(mylibdir)/vg-html-chunk.xsl 117 XSL_FO_STYLE = $(mylibdir)/vg-fo.xsl 118 XSL_TEXT_STYLE = $(mylibdir)/vg-faq2txt.xsl 119 XSL_WEBSITE_STYLE = $(mylibdir)/vg-html-website.xsl 120 XSL_MAN_STYLES = \ 121 /usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl \ 122 /usr/share/xml/docbook/stylesheet/nwalsh/current/manpages/docbook.xsl \ 123 /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl 124 125 all-docs: FAQ.txt man-pages html-docs print-docs 126 127 valid: 128 $(XMLLINT) $(XMLLINT_FLAGS) $(myxmldir)/index.xml 129 130 # The text version of the FAQ. 131 FAQ.txt: 132 @echo "Generating the text version of the FAQ ..." 133 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ 134 $(XSLTPROC) $(XSLTPROC_FLAGS) -o ./FAQ.txt $(XSL_TEXT_STYLE) $(myxmldir)/FAQ.xml 135 136 # the valgrind manpages 137 man-pages: 138 set -e; \ 139 for x in $(XSL_MAN_STYLES) ; do \ 140 if test -f $$x; then \ 141 echo "Using manpage stylesheet: $$x"; \ 142 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ 143 $(XSLTPROC) $(XSLTPROC_FLAGS) -o ./ $$x $(myxmldir)/manpages-index.xml; \ 144 exit 0; \ 145 fi; \ 146 done; \ 147 echo ""; \ 148 echo "Error: I can't find the XSL_MAN_STYLE file"; \ 149 echo "Please check where it lives on your system, and" \ 150 "amend the line 'XSL_MAN_STYLES = ' in this Makefile."; \ 151 exit 1; 152 153 # chunked html, on a chapter-by-chapter basis 154 html-docs: 155 @echo "Generating html files..." 156 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ 157 mkdir -p $(myhtmldir) && \ 158 /bin/rm -fr $(myhtmldir)/ && \ 159 mkdir -p $(myhtmldir)/ && \ 160 mkdir -p $(myhtmldir)/images && \ 161 cp $(mylibdir)/vg_basic.css $(myhtmldir)/ && \ 162 cp $(myimgdir)/*.png $(myhtmldir)/images && \ 163 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(myhtmldir)/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml 164 165 # pdf and postscript 166 print-docs: 167 @echo "Generating PDF file: $(myprintdir)/index.pdf (please be patient)..."; 168 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ 169 mkdir -p $(myprintdir) && \ 170 mkdir -p $(myprintdir)/images && \ 171 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(myprintdir)/index.fo $(XSL_FO_STYLE) $(myxmldir)/index.xml && \ 172 (cd $(myprintdir) && \ 173 ( pdfxmltex index.fo && \ 174 pdfxmltex index.fo && \ 175 pdfxmltex index.fo ) &> $(LOGFILE) < /dev/null && \ 176 echo "Generating PS file: $(myprintdir)/index.ps ..." && \ 177 pdftops index.pdf && \ 178 rm -f *.log *.aux *.fo *.out) 179 180 # If the docs have been built, install them. But don't worry if they have 181 # not -- developers do 'make install' not from a 'make dist'-ified distro all 182 # the time. 183 # 184 # Note: this is done at 'make install' time. 185 # Note 2: the ifeq/else/endif have to be indented one space 186 # because otherwise it seems that automake thinks it should 187 # be the one to handle the else/endif parts, not GNU make 188 # as we intend. 189 install-data-hook: 190 set -e; \ 191 if test -r html ; then \ 192 mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ 193 cp -r html $(DESTDIR)$(datadir)/doc/valgrind; \ 194 fi 195 for f in *.1 ; do \ 196 if test -r $$f ; then \ 197 mkdir -p $(DESTDIR)$(mandir)/man1; \ 198 cp $$f $(DESTDIR)$(mandir)/man1; \ 199 fi \ 200 done 201 ifeq ($(BUILD_ALL_DOCS),yes) 202 set -e; \ 203 if test -r index.pdf ; then \ 204 mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ 205 cp index.pdf $(DESTDIR)$(datadir)/doc/valgrind/valgrind_manual.pdf; \ 206 fi 207 set -e; \ 208 if test -r index.ps ; then \ 209 mkdir -p $(DESTDIR)$(datadir)/doc/valgrind; \ 210 cp index.ps $(DESTDIR)$(datadir)/doc/valgrind/valgrind_manual.ps; \ 211 fi 212 endif 213 214 # This is done at 'make dist' time. It builds the html docs, print 215 # docs and man pages and copies them into the docs/ directory in the 216 # tarball. 217 ifeq ($(BUILD_ALL_DOCS),yes) 218 dist-hook: FAQ.txt html-docs man-pages print-docs 219 cp -r html $(distdir) 220 cp FAQ.txt $(distdir)/.. 221 cp *.1 $(distdir) 222 cp print/index.pdf $(distdir) 223 cp print/index.ps $(distdir) 224 else 225 dist-hook: FAQ.txt html-docs man-pages 226 cp -r html $(distdir) 227 cp FAQ.txt $(distdir)/.. 228 cp *.1 $(distdir) 229 endif 230 231 distclean-local: 232 rm -rf html print 233 rm -f FAQ.txt 234 rm -f $(top_builddir)/FAQ.txt $(top_builddir)/docs/*.1 235 236 237 238 # ----------------------------------------------------------------------- 239 # Note: the rest of this file is nothing to do with the normal build 240 # tree. The stuff below contains special targets for web-site 241 # artefacts. 242 243 # chunked html with no html/body tags, css, or top nav, to fit into the website 244 website-docs: 245 @echo "Generating website html files ..." 246 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) 247 /bin/rm -fr $(websitedir) 248 mkdir -p $(websitedir) 249 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(websitedir)/ $(XSL_WEBSITE_STYLE) $(myxmldir)/index.xml 250 251 # valkyrie carries around her own copy of the valgrind manual 252 valkyrie-docs: 253 @echo "Generating a set of valgrind docs for valkyrie..." 254 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) 255 /bin/rm -fr $(valkyriedir) 256 mkdir -p $(valkyriedir) 257 mkdir -p $(valkyriedir)/images 258 cp $(mylibdir)/vg_basic.css $(valkyriedir)/ 259 cp $(myimgdir)/*.png $(valkyriedir)/images/ 260 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(valkyriedir)/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml 261 262 # html.tar.bz2, .pdf, .ps.bz2 files for downloading from the website 263 download-docs: 264 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) 265 /bin/rm -fr $(downloadsdir) 266 mkdir -p $(downloadsdir) 267 @echo "" 268 @echo "Generating valgrind_manual.html.tar.bz2 ..." 269 export XML_CATALOG_FILES=$(XML_CATALOG_FILES) 270 /bin/rm -fr $(vgdir) 271 mkdir -p $(vgdir) 272 mkdir -p $(vgdir)/html 273 mkdir -p $(vgdir)/html/images 274 cp $(mylibdir)/vg_basic.css $(vgdir)/html/ 275 cp $(myimgdir)/*.png $(vgdir)/html/images/ 276 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(vgdir)/html/ $(XSL_HTML_CHUNK_STYLE) $(myxmldir)/index.xml 277 (cd $(top_builddir)/docs/ && \ 278 (tar cfj $(downloadsdir)/valgrind_manual.html.tar.bz2 ./valgrind/html/ ) ) 279 /bin/rm -fr $(vgdir)/html/ 280 @echo "" 281 @echo "Generating valgrind_manual.pdf ..." 282 mkdir -p $(vgdir)/print 283 mkdir -p $(vgdir)/print/images 284 $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(vgdir)/print/manual.fo $(XSL_FO_STYLE) $(myxmldir)/index.xml 285 (cd $(vgdir)/print/ && \ 286 ( pdfxmltex manual.fo && \ 287 pdfxmltex manual.fo && \ 288 pdfxmltex manual.fo ) &> $(LOGFILE) < /dev/null ) 289 @echo "" 290 @echo "Generating valgrind_manual.ps.bz2 ..." 291 (cd $(vgdir)/print/ && \ 292 ( pdftops manual.pdf ) ) 293 mv $(vgdir)/print/manual.pdf $(downloadsdir)/valgrind_manual.pdf 294 mv $(vgdir)/print/manual.ps $(downloadsdir)/valgrind_manual.ps 295 bzip2 $(downloadsdir)/valgrind_manual.ps 296 /bin/rm -fr $(vgdir) 297