]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/python/Doc/Makefile
mothra: fix alt display resizing, filter control characters in panel entries, use...
[plan9front.git] / sys / src / cmd / python / Doc / Makefile
1 # Makefile for Python documentation
2 # ---------------------------------
3 #
4 # See also the README file.
5 #
6 # This is a bit of a mess.  The documents are identified by short names:
7 #   api -- Python/C API Reference Manual
8 #   doc -- Documenting Python
9 #   ext -- Extending and Embedding the Python Interpreter
10 #   lib -- Library Reference Manual
11 #   mac -- Macintosh Library Modules
12 #   ref -- Python Reference Manual
13 #   tut -- Python Tutorial
14 #   inst -- Installing Python Modules
15 #   dist -- Distributing Python Modules
16 #
17 # The LaTeX sources for each of these documents are in subdirectories
18 # with the three-letter designations above as the directory names.
19 #
20 # The main target creates HTML for each of the documents.  You can
21 # also do "make lib" (etc.) to create the HTML versions of individual
22 # documents.
23 #
24 # The document classes and styles are in the texinputs/ directory.
25 # These define a number of macros that are similar in name and intent
26 # as macros in Texinfo (e.g. \code{...} and \emph{...}), as well as a
27 # number of environments for formatting function and data definitions.
28 # Documentation for the macros is included in "Documenting Python"; see
29 # http://www.python.org/doc/current/doc/doc.html, or the sources for
30 # this document in the doc/ directory.
31 #
32 # Everything is processed by LaTeX.  See the file `README' for more
33 # information on the tools needed for processing.
34 #
35 # There's a problem with generating the index which has been solved by
36 # a sed command applied to the index file.  The shell script fix_hack
37 # does this (the Makefile takes care of calling it).
38 #
39 # Additional targets attempt to convert selected LaTeX sources to
40 # various other formats.  These are generally site specific because
41 # the tools used are all but universal.  These targets are:
42 #
43 #   ps  -- convert all documents from LaTeX to PostScript
44 #   pdf -- convert all documents from LaTeX to the
45 #               Portable Document Format
46 #
47 # See the README file for more information on these targets.
48 #
49 # The formatted output is located in subdirectories.  For PDF and
50 # PostScript, look in the paper-$(PAPER)/ directory.  For HTML, look in
51 # the html/ directory.  If you want to fix the GNU info process, look
52 # in the info/ directory; please send patches to docs@python.org.
53
54 # This Makefile only includes information on how to perform builds; for
55 # dependency information, see Makefile.deps.
56
57 # Customization -- you *may* have to edit this
58
59 # You could set this to a4:
60 PAPER=letter
61
62 # Ideally, you shouldn't need to edit beyond this point
63
64 INFODIR=        info
65 TOOLSDIR=       tools
66
67 # This is the *documentation* release, and is used to construct the
68 # file names of the downloadable tarballs.  It is initialized by the
69 # getversioninfo script to ensure that the right version number is
70 # used; the script will also write commontex/patchlevel.tex if that
71 # doesn't exist or needs to be changed.  Documents which depend on the
72 # version number should use \input{patchlevel} and include
73 # commontex/patchlevel.tex in their dependencies.
74 RELEASE=$(shell $(PYTHON) tools/getversioninfo)
75
76 PYTHON=    python
77 DVIPS=     dvips -N0 -t $(PAPER)
78
79 # This is ugly!  The issue here is that there are two different levels
80 # in the directory tree at which we execute mkhowto, so we can't
81 # define it just once using a relative path (at least not with the
82 # current implementation and Makefile structure).  We use the GNUish
83 # $(shell) function here to work around that restriction by
84 # identifying mkhowto and the commontex/ directory using absolute paths.
85 #
86 # If your doc build fails immediately, you may need to switch to GNU make.
87 # (e.g. OpenBSD needs package gmake installed; use gmake instead of make)
88 PWD=$(shell pwd)
89
90 # (The trailing colon in the value is needed; TeX places its default
91 # set of paths at the location of the empty string in the path list.)
92 TEXINPUTS=$(PWD)/commontex:
93
94 # The mkhowto script can be run from the checkout using the first
95 # version of this variable definition, or from a preferred version
96 # using the second version.  The standard documentation is typically
97 # built using the second flavor, where the preferred version is from
98 # the Python CVS trunk.
99 MKHOWTO=   TEXINPUTS=$(TEXINPUTS) $(PYTHON) $(PWD)/tools/mkhowto
100
101 MKDVI=     $(MKHOWTO) --paper=$(PAPER) --dvi
102 MKHTML=    $(MKHOWTO) --html --about html/stdabout.dat \
103                 --iconserver ../icons --favicon ../icons/pyfav.png \
104                 --address $(PYTHONDOCS) --up-link ../index.html \
105                 --up-title "Python Documentation Index" \
106                 --global-module-index "../modindex.html" --dvips-safe
107 MKISILOHTML=$(MKHOWTO) --html --about html/stdabout.dat \
108                 --iconserver ../icons \
109                 --l2h-init perl/isilo.perl --numeric --split 1 \
110                 --dvips-safe
111 MKISILO=   iSilo386 -U -y -rCR -d0
112 MKPDF=     $(MKHOWTO) --paper=$(PAPER) --pdf
113 MKPS=      $(MKHOWTO) --paper=$(PAPER) --ps
114
115 BUILDINDEX=$(TOOLSDIR)/buildindex.py
116
117 PYTHONDOCS="See <i><a href=\"about.html\">About this document...</a></i> for information on suggesting changes."
118 HTMLBASE=  file:`pwd`
119
120 # The emacs binary used to build the info docs. GNU Emacs 21 is required.
121 EMACS=     emacs
122
123 # The end of this should reflect the major/minor version numbers of
124 # the release:
125 WHATSNEW=whatsnew25
126
127 # what's what
128 MANDVIFILES=    paper-$(PAPER)/api.dvi paper-$(PAPER)/ext.dvi \
129                 paper-$(PAPER)/lib.dvi paper-$(PAPER)/mac.dvi \
130                 paper-$(PAPER)/ref.dvi paper-$(PAPER)/tut.dvi
131 HOWTODVIFILES=  paper-$(PAPER)/doc.dvi paper-$(PAPER)/inst.dvi \
132                 paper-$(PAPER)/dist.dvi paper-$(PAPER)/$(WHATSNEW).dvi
133
134 MANPDFFILES=    paper-$(PAPER)/api.pdf paper-$(PAPER)/ext.pdf \
135                 paper-$(PAPER)/lib.pdf paper-$(PAPER)/mac.pdf \
136                 paper-$(PAPER)/ref.pdf paper-$(PAPER)/tut.pdf
137 HOWTOPDFFILES=  paper-$(PAPER)/doc.pdf paper-$(PAPER)/inst.pdf \
138                 paper-$(PAPER)/dist.pdf paper-$(PAPER)/$(WHATSNEW).pdf
139
140 MANPSFILES=     paper-$(PAPER)/api.ps paper-$(PAPER)/ext.ps \
141                 paper-$(PAPER)/lib.ps paper-$(PAPER)/mac.ps \
142                 paper-$(PAPER)/ref.ps paper-$(PAPER)/tut.ps
143 HOWTOPSFILES=   paper-$(PAPER)/doc.ps paper-$(PAPER)/inst.ps \
144                 paper-$(PAPER)/dist.ps paper-$(PAPER)/$(WHATSNEW).ps
145
146 DVIFILES=       $(MANDVIFILES) $(HOWTODVIFILES)
147 PDFFILES=       $(MANPDFFILES) $(HOWTOPDFFILES)
148 PSFILES=        $(MANPSFILES) $(HOWTOPSFILES)
149
150 HTMLCSSFILES=html/api/api.css \
151         html/doc/doc.css \
152         html/ext/ext.css \
153         html/lib/lib.css \
154         html/mac/mac.css \
155         html/ref/ref.css \
156         html/tut/tut.css \
157         html/inst/inst.css \
158         html/dist/dist.css
159
160 ISILOCSSFILES=isilo/api/api.css \
161         isilo/doc/doc.css \
162         isilo/ext/ext.css \
163         isilo/lib/lib.css \
164         isilo/mac/mac.css \
165         isilo/ref/ref.css \
166         isilo/tut/tut.css \
167         isilo/inst/inst.css \
168         isilo/dist/dist.css
169
170 ALLCSSFILES=$(HTMLCSSFILES) $(ISILOCSSFILES)
171
172 INDEXFILES=html/api/api.html \
173         html/doc/doc.html \
174         html/ext/ext.html \
175         html/lib/lib.html \
176         html/mac/mac.html \
177         html/ref/ref.html \
178         html/tut/tut.html \
179         html/inst/inst.html \
180         html/dist/dist.html \
181         html/whatsnew/$(WHATSNEW).html
182
183 ALLHTMLFILES=$(INDEXFILES) html/index.html html/modindex.html html/acks.html
184
185 COMMONPERL= perl/manual.perl perl/python.perl perl/l2hinit.perl
186
187 ANNOAPI=api/refcounts.dat tools/anno-api.py
188
189 include Makefile.deps
190
191 # These must be declared phony since there
192 # are directories with matching names:
193 .PHONY: api doc ext lib mac ref tut inst dist
194 .PHONY: html info isilo
195
196
197 # Main target
198 default:        html
199 all:            html dvi ps pdf isilo
200
201 dvi:    $(DVIFILES)
202 pdf:    $(PDFFILES)
203 ps:     $(PSFILES)
204
205 world:  ps pdf html distfiles
206
207
208 # Rules to build PostScript and PDF formats
209 .SUFFIXES: .dvi .ps
210
211 .dvi.ps:
212         $(DVIPS) -o $@ $<
213
214
215 # Targets for each document:
216 # Python/C API Reference Manual
217 paper-$(PAPER)/api.dvi: $(ANNOAPIFILES)
218         cd paper-$(PAPER) && $(MKDVI) api.tex
219
220 paper-$(PAPER)/api.pdf: $(ANNOAPIFILES)
221         cd paper-$(PAPER) && $(MKPDF) api.tex
222
223 paper-$(PAPER)/api.tex: api/api.tex
224         cp api/api.tex $@
225
226 paper-$(PAPER)/abstract.tex: api/abstract.tex $(ANNOAPI)
227         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/abstract.tex
228
229 paper-$(PAPER)/concrete.tex: api/concrete.tex $(ANNOAPI)
230         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/concrete.tex
231
232 paper-$(PAPER)/exceptions.tex: api/exceptions.tex $(ANNOAPI)
233         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/exceptions.tex
234
235 paper-$(PAPER)/init.tex: api/init.tex $(ANNOAPI)
236         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/init.tex
237
238 paper-$(PAPER)/intro.tex: api/intro.tex
239         cp api/intro.tex $@
240
241 paper-$(PAPER)/memory.tex: api/memory.tex $(ANNOAPI)
242         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/memory.tex
243
244 paper-$(PAPER)/newtypes.tex: api/newtypes.tex $(ANNOAPI)
245         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/newtypes.tex
246
247 paper-$(PAPER)/refcounting.tex: api/refcounting.tex $(ANNOAPI)
248         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/refcounting.tex
249
250 paper-$(PAPER)/utilities.tex: api/utilities.tex $(ANNOAPI)
251         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/utilities.tex
252
253 paper-$(PAPER)/veryhigh.tex: api/veryhigh.tex $(ANNOAPI)
254         $(PYTHON) $(TOOLSDIR)/anno-api.py -o $@ api/veryhigh.tex
255
256 # Distributing Python Modules
257 paper-$(PAPER)/dist.dvi: $(DISTFILES)
258         cd paper-$(PAPER) && $(MKDVI) ../dist/dist.tex
259
260 paper-$(PAPER)/dist.pdf: $(DISTFILES)
261         cd paper-$(PAPER) && $(MKPDF) ../dist/dist.tex
262
263 # Documenting Python
264 paper-$(PAPER)/doc.dvi: $(DOCFILES)
265         cd paper-$(PAPER) && $(MKDVI) ../doc/doc.tex
266
267 paper-$(PAPER)/doc.pdf: $(DOCFILES)
268         cd paper-$(PAPER) && $(MKPDF) ../doc/doc.tex
269
270 # Extending and Embedding the Python Interpreter
271 paper-$(PAPER)/ext.dvi: $(EXTFILES)
272         cd paper-$(PAPER) && $(MKDVI) ../ext/ext.tex
273
274 paper-$(PAPER)/ext.pdf: $(EXTFILES)
275         cd paper-$(PAPER) && $(MKPDF) ../ext/ext.tex
276
277 # Installing Python Modules
278 paper-$(PAPER)/inst.dvi: $(INSTFILES)
279         cd paper-$(PAPER) && $(MKDVI) ../inst/inst.tex
280
281 paper-$(PAPER)/inst.pdf: $(INSTFILES)
282         cd paper-$(PAPER) && $(MKPDF) ../inst/inst.tex
283
284 # Python Library Reference
285 paper-$(PAPER)/lib.dvi: $(LIBFILES)
286         cd paper-$(PAPER) && $(MKDVI) ../lib/lib.tex
287
288 paper-$(PAPER)/lib.pdf: $(LIBFILES)
289         cd paper-$(PAPER) && $(MKPDF) ../lib/lib.tex
290
291 # Macintosh Library Modules
292 paper-$(PAPER)/mac.dvi: $(MACFILES)
293         cd paper-$(PAPER) && $(MKDVI) ../mac/mac.tex
294
295 paper-$(PAPER)/mac.pdf: $(MACFILES)
296         cd paper-$(PAPER) && $(MKPDF) ../mac/mac.tex
297
298 # Python Reference Manual
299 paper-$(PAPER)/ref.dvi: $(REFFILES)
300         cd paper-$(PAPER) && $(MKDVI) ../ref/ref.tex
301
302 paper-$(PAPER)/ref.pdf: $(REFFILES)
303         cd paper-$(PAPER) && $(MKPDF) ../ref/ref.tex
304
305 # Python Tutorial
306 paper-$(PAPER)/tut.dvi: $(TUTFILES)
307         cd paper-$(PAPER) && $(MKDVI) ../tut/tut.tex
308
309 paper-$(PAPER)/tut.pdf: $(TUTFILES)
310         cd paper-$(PAPER) && $(MKPDF) ../tut/tut.tex
311
312 # What's New in Python X.Y
313 paper-$(PAPER)/$(WHATSNEW).dvi: whatsnew/$(WHATSNEW).tex
314         cd paper-$(PAPER) && $(MKDVI) ../whatsnew/$(WHATSNEW).tex
315
316 paper-$(PAPER)/$(WHATSNEW).pdf: whatsnew/$(WHATSNEW).tex
317         cd paper-$(PAPER) && $(MKPDF) ../whatsnew/$(WHATSNEW).tex
318
319 # The remaining part of the Makefile is concerned with various
320 # conversions, as described above.  See also the README file.
321
322 info:
323         cd $(INFODIR) && $(MAKE) EMACS=$(EMACS) WHATSNEW=$(WHATSNEW)
324
325 # Targets to convert the manuals to HTML using Nikos Drakos' LaTeX to
326 # HTML converter.  For more info on this program, see
327 # <URL:http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.html>.
328
329 # Note that LaTeX2HTML inserts references to an icons directory in
330 # each page that it generates.  I have placed a copy of this directory
331 # in the distribution to simplify the process of creating a
332 # self-contained HTML distribution; for this purpose I have also added
333 # a (trivial) index.html.  Change the definition of $ICONSERVER in
334 # perl/l2hinit.perl to use a different location for the icons directory.
335
336 # If you have the standard LaTeX2HTML icons installed, the versions shipped
337 # with this documentation should be stored in a separate directory and used
338 # instead.  The standard set does *not* include all the icons used in the
339 # Python documentation.
340
341 $(ALLCSSFILES): html/style.css
342         cp $< $@
343
344 $(INDEXFILES): $(COMMONPERL) html/stdabout.dat tools/node2label.pl
345
346 html/acks.html: ACKS $(TOOLSDIR)/support.py $(TOOLSDIR)/mkackshtml
347         $(PYTHON) $(TOOLSDIR)/mkackshtml --address $(PYTHONDOCS) \
348                 --favicon icons/pyfav.png \
349                 --output html/acks.html <ACKS
350
351
352 # html/index.html is dependent on $(INDEXFILES) since we want the date
353 # on the front index to be updated whenever any of the child documents
354 # are updated and boilerplate.tex uses \today as the date.  The index
355 # files are not used to actually generate content.
356
357 BOILERPLATE=commontex/boilerplate.tex
358 html/index.html: $(INDEXFILES)
359 html/index.html: html/index.html.in $(BOILERPLATE) tools/rewrite.py
360         $(PYTHON) tools/rewrite.py $(BOILERPLATE) \
361                 RELEASE=$(RELEASE) WHATSNEW=$(WHATSNEW) \
362                 <$< >$@
363
364 html/modindex.html: $(TOOLSDIR)/support.py $(TOOLSDIR)/mkmodindex
365 html/modindex.html: html/dist/dist.html
366 html/modindex.html: html/lib/lib.html html/mac/mac.html
367         cd html && \
368          $(PYTHON) ../$(TOOLSDIR)/mkmodindex --columns 3 \
369                 --output modindex.html --address $(PYTHONDOCS) \
370                 --favicon icons/pyfav.png \
371                 dist/modindex.html \
372                 lib/modindex.html mac/modindex.html
373
374 html:   $(ALLHTMLFILES) $(HTMLCSSFILES)
375
376 api: html/api/api.html html/api/api.css
377 html/api/api.html: $(APIFILES) api/refcounts.dat
378         $(MKHTML) --dir html/api api/api.tex
379
380 doc: html/doc/doc.html html/doc/doc.css
381 html/doc/doc.html: $(DOCFILES)
382         $(MKHTML) --dir html/doc doc/doc.tex
383
384 ext: html/ext/ext.html html/ext/ext.css
385 html/ext/ext.html: $(EXTFILES)
386         $(MKHTML) --dir html/ext ext/ext.tex
387
388 lib: html/lib/lib.html html/lib/lib.css
389 html/lib/lib.html: $(LIBFILES)
390         $(MKHTML) --dir html/lib lib/lib.tex
391
392 mac: html/mac/mac.html html/mac/mac.css
393 html/mac/mac.html: $(MACFILES)
394         $(MKHTML) --dir html/mac mac/mac.tex
395
396 ref: html/ref/ref.html html/ref/ref.css
397 html/ref/ref.html: $(REFFILES)
398         $(MKHTML) --dir html/ref ref/ref.tex
399
400 tut: html/tut/tut.html html/tut/tut.css
401 html/tut/tut.html: $(TUTFILES)
402         $(MKHTML) --dir html/tut --numeric --split 3 tut/tut.tex
403
404 inst: html/inst/inst.html html/inst/inst.css
405 html/inst/inst.html: $(INSTFILES) perl/distutils.perl
406         $(MKHTML) --dir html/inst --split 4 inst/inst.tex
407
408 dist: html/dist/dist.html html/dist/dist.css
409 html/dist/dist.html: $(DISTFILES) perl/distutils.perl
410         $(MKHTML) --dir html/dist --split 4 dist/dist.tex
411
412 whatsnew: html/whatsnew/$(WHATSNEW).html
413 html/whatsnew/$(WHATSNEW).html: whatsnew/$(WHATSNEW).tex
414         $(MKHTML) --dir html/whatsnew --split 4 whatsnew/$(WHATSNEW).tex
415
416
417 # The iSilo format is used by the iSilo document reader for PalmOS devices.
418
419 ISILOINDEXFILES=isilo/api/api.html \
420         isilo/doc/doc.html \
421         isilo/ext/ext.html \
422         isilo/lib/lib.html \
423         isilo/mac/mac.html \
424         isilo/ref/ref.html \
425         isilo/tut/tut.html \
426         isilo/inst/inst.html \
427         isilo/dist/dist.html \
428         isilo/whatsnew/$(WHATSNEW).html
429
430 $(ISILOINDEXFILES): $(COMMONPERL) html/stdabout.dat perl/isilo.perl
431
432 isilo:  isilo/python-api.pdb \
433         isilo/python-doc.pdb \
434         isilo/python-ext.pdb \
435         isilo/python-lib.pdb \
436         isilo/python-mac.pdb \
437         isilo/python-ref.pdb \
438         isilo/python-tut.pdb \
439         isilo/python-dist.pdb \
440         isilo/python-inst.pdb \
441         isilo/python-whatsnew.pdb
442
443 isilo/python-api.pdb: isilo/api/api.html isilo/api/api.css
444         $(MKISILO) "-iPython/C API Reference Manual" \
445                 isilo/api/api.html $@
446
447 isilo/python-doc.pdb: isilo/doc/doc.html isilo/doc/doc.css
448         $(MKISILO) "-iDocumenting Python" \
449                 isilo/doc/doc.html $@
450
451 isilo/python-ext.pdb: isilo/ext/ext.html isilo/ext/ext.css
452         $(MKISILO) "-iExtending & Embedding Python" \
453                 isilo/ext/ext.html $@
454
455 isilo/python-lib.pdb: isilo/lib/lib.html isilo/lib/lib.css
456         $(MKISILO) "-iPython Library Reference" \
457                 isilo/lib/lib.html $@
458
459 isilo/python-mac.pdb: isilo/mac/mac.html isilo/mac/mac.css
460         $(MKISILO) "-iPython/C API Reference Manual" \
461                 isilo/mac/mac.html $@
462
463 isilo/python-ref.pdb: isilo/ref/ref.html isilo/ref/ref.css
464         $(MKISILO) "-iPython Reference Manual" \
465                 isilo/ref/ref.html $@
466
467 isilo/python-tut.pdb: isilo/tut/tut.html isilo/tut/tut.css
468         $(MKISILO) "-iPython Tutorial" \
469                 isilo/tut/tut.html $@
470
471 isilo/python-dist.pdb: isilo/dist/dist.html isilo/dist/dist.css
472         $(MKISILO) "-iDistributing Python Modules" \
473                 isilo/dist/dist.html $@
474
475 isilo/python-inst.pdb: isilo/inst/inst.html isilo/inst/inst.css
476         $(MKISILO) "-iInstalling Python Modules" \
477                 isilo/inst/inst.html $@
478
479 isilo/python-whatsnew.pdb: isilo/whatsnew/$(WHATSNEW).html isilo/whatsnew/$(WHATSNEW).css
480         $(MKISILO) "-iWhat's New in Python X.Y" \
481                 isilo/whatsnew/$(WHATSNEW).html $@
482
483 isilo/api/api.html: $(APIFILES) api/refcounts.dat
484         $(MKISILOHTML) --dir isilo/api api/api.tex
485
486 isilo/doc/doc.html: $(DOCFILES)
487         $(MKISILOHTML) --dir isilo/doc doc/doc.tex
488
489 isilo/ext/ext.html: $(EXTFILES)
490         $(MKISILOHTML) --dir isilo/ext ext/ext.tex
491
492 isilo/lib/lib.html: $(LIBFILES)
493         $(MKISILOHTML) --dir isilo/lib lib/lib.tex
494
495 isilo/mac/mac.html: $(MACFILES)
496         $(MKISILOHTML) --dir isilo/mac mac/mac.tex
497
498 isilo/ref/ref.html: $(REFFILES)
499         $(MKISILOHTML) --dir isilo/ref ref/ref.tex
500
501 isilo/tut/tut.html: $(TUTFILES)
502         $(MKISILOHTML) --dir isilo/tut tut/tut.tex
503
504 isilo/inst/inst.html: $(INSTFILES) perl/distutils.perl
505         $(MKISILOHTML) --dir isilo/inst inst/inst.tex
506
507 isilo/dist/dist.html: $(DISTFILES) perl/distutils.perl
508         $(MKISILOHTML) --dir isilo/dist dist/dist.tex
509
510 isilo/whatsnew/$(WHATSNEW).html: whatsnew/$(WHATSNEW).tex
511         $(MKISILOHTML) --dir isilo/whatsnew whatsnew/$(WHATSNEW).tex
512
513 # These are useful if you need to transport the iSilo-ready HTML to
514 # another machine to perform the conversion:
515
516 isilozip:  isilo-html-$(RELEASE).zip
517
518 isilo-html-$(RELEASE).zip:      $(ISILOINDEXFILES)
519         rm -f $@
520         cd isilo && \
521                 zip -q -9 ../$@ */*.css */*.html */*.txt
522
523
524 # webchecker needs an extra flag to process the huge index from the libref
525 WEBCHECKER=$(PYTHON) ../Tools/webchecker/webchecker.py
526 HTMLBASE=  file:`pwd`/html
527
528 webcheck: $(ALLHTMLFILES)
529         $(WEBCHECKER) $(HTMLBASE)/api/
530         $(WEBCHECKER) $(HTMLBASE)/doc/
531         $(WEBCHECKER) $(HTMLBASE)/ext/
532         $(WEBCHECKER) -m290000 $(HTMLBASE)/lib/
533         $(WEBCHECKER) $(HTMLBASE)/mac/
534         $(WEBCHECKER) $(HTMLBASE)/ref/
535         $(WEBCHECKER) $(HTMLBASE)/tut/
536         $(WEBCHECKER) $(HTMLBASE)/dist/
537         $(WEBCHECKER) $(HTMLBASE)/inst/
538         $(WEBCHECKER) $(HTMLBASE)/whatsnew/
539
540 fastwebcheck: $(ALLHTMLFILES)
541         $(WEBCHECKER) -x $(HTMLBASE)/api/
542         $(WEBCHECKER) -x $(HTMLBASE)/doc/
543         $(WEBCHECKER) -x $(HTMLBASE)/ext/
544         $(WEBCHECKER) -x -m290000 $(HTMLBASE)/lib/
545         $(WEBCHECKER) -x $(HTMLBASE)/mac/
546         $(WEBCHECKER) -x $(HTMLBASE)/ref/
547         $(WEBCHECKER) -x $(HTMLBASE)/tut/
548         $(WEBCHECKER) -x $(HTMLBASE)/dist/
549         $(WEBCHECKER) -x $(HTMLBASE)/inst/
550         $(WEBCHECKER) -x $(HTMLBASE)/whatsnew/
551
552
553 # Release packaging targets:
554
555 paper-$(PAPER)/README: $(PSFILES) $(TOOLSDIR)/getpagecounts
556         cd paper-$(PAPER) && ../$(TOOLSDIR)/getpagecounts -r $(RELEASE) >../$@
557
558 info-$(RELEASE).tgz: info
559         cd $(INFODIR) && tar cf - README python.dir python-*.info* \
560                 | gzip -9 >../$@
561
562 info-$(RELEASE).tar.bz2: info
563         cd $(INFODIR) && tar cf - README python.dir python-*.info* \
564                 | bzip2 -9 >../$@
565
566 latex-$(RELEASE).tgz:
567         $(PYTHON) $(TOOLSDIR)/mksourcepkg --gzip $(RELEASE)
568
569 latex-$(RELEASE).tar.bz2:
570         $(PYTHON) $(TOOLSDIR)/mksourcepkg --bzip2 $(RELEASE)
571
572 latex-$(RELEASE).zip:
573         rm -f $@
574         $(PYTHON) $(TOOLSDIR)/mksourcepkg --zip $(RELEASE)
575
576 pdf-$(PAPER)-$(RELEASE).tar: $(PDFFILES)
577         rm -f $@
578         mkdir Python-Docs-$(RELEASE)
579         cp paper-$(PAPER)/*.pdf Python-Docs-$(RELEASE)
580         tar cf $@ Python-Docs-$(RELEASE)
581         rm -r Python-Docs-$(RELEASE)
582
583 pdf-$(PAPER)-$(RELEASE).tgz: pdf-$(PAPER)-$(RELEASE).tar
584         gzip -9 <$? >$@
585
586 pdf-$(PAPER)-$(RELEASE).tar.bz2: pdf-$(PAPER)-$(RELEASE).tar
587         bzip2 -9 <$? >$@
588
589 pdf-$(PAPER)-$(RELEASE).zip: pdf
590         rm -f $@
591         mkdir Python-Docs-$(RELEASE)
592         cp paper-$(PAPER)/*.pdf Python-Docs-$(RELEASE)
593         zip -q -r -9 $@ Python-Docs-$(RELEASE)
594         rm -r Python-Docs-$(RELEASE)
595
596 postscript-$(PAPER)-$(RELEASE).tar: $(PSFILES) paper-$(PAPER)/README
597         rm -f $@
598         mkdir Python-Docs-$(RELEASE)
599         cp paper-$(PAPER)/*.ps Python-Docs-$(RELEASE)
600         cp paper-$(PAPER)/README Python-Docs-$(RELEASE)
601         tar cf $@ Python-Docs-$(RELEASE)
602         rm -r Python-Docs-$(RELEASE)
603
604 postscript-$(PAPER)-$(RELEASE).tar.bz2: postscript-$(PAPER)-$(RELEASE).tar
605         bzip2 -9 <$< >$@
606
607 postscript-$(PAPER)-$(RELEASE).tgz: postscript-$(PAPER)-$(RELEASE).tar
608         gzip -9 <$< >$@
609
610 postscript-$(PAPER)-$(RELEASE).zip: $(PSFILES) paper-$(PAPER)/README
611         rm -f $@
612         mkdir Python-Docs-$(RELEASE)
613         cp paper-$(PAPER)/*.ps Python-Docs-$(RELEASE)
614         cp paper-$(PAPER)/README Python-Docs-$(RELEASE)
615         zip -q -r -9 $@ Python-Docs-$(RELEASE)
616         rm -r Python-Docs-$(RELEASE)
617
618 HTMLPKGFILES=*.html */*.css */*.html */*.gif */*.png */*.txt
619
620 html-$(RELEASE).tar:    $(ALLHTMLFILES) $(HTMLCSSFILES)
621         mkdir Python-Docs-$(RELEASE)
622         -find html -name '*.gif' -size 0 | xargs rm -f
623         cd html && tar cf ../temp.tar $(HTMLPKGFILES)
624         cd Python-Docs-$(RELEASE) && tar xf ../temp.tar
625         rm temp.tar
626         tar cf html-$(RELEASE).tar Python-Docs-$(RELEASE)
627         rm -r Python-Docs-$(RELEASE)
628
629 html-$(RELEASE).tgz:    html-$(RELEASE).tar
630         gzip -9 <$? >$@
631
632 html-$(RELEASE).tar.bz2: html-$(RELEASE).tar
633         bzip2 -9 <$? >$@
634
635 html-$(RELEASE).zip:    $(ALLHTMLFILES) $(HTMLCSSFILES)
636         rm -f $@
637         mkdir Python-Docs-$(RELEASE)
638         cd html && tar cf ../temp.tar $(HTMLPKGFILES)
639         cd Python-Docs-$(RELEASE) && tar xf ../temp.tar
640         rm temp.tar
641         zip -q -r -9 $@ Python-Docs-$(RELEASE)
642         rm -r Python-Docs-$(RELEASE)
643
644 isilo-$(RELEASE).zip:   isilo
645         rm -f $@
646         mkdir Python-Docs-$(RELEASE)
647         cp isilo/python-*.pdb Python-Docs-$(RELEASE)
648         zip -q -r -9 $@ Python-Docs-$(RELEASE)
649         rm -r Python-Docs-$(RELEASE)
650
651
652 # convenience targets:
653
654 tarhtml:        html-$(RELEASE).tgz
655 tarinfo:        info-$(RELEASE).tgz
656 tarps:          postscript-$(PAPER)-$(RELEASE).tgz
657 tarpdf:         pdf-$(PAPER)-$(RELEASE).tgz
658 tarlatex:       latex-$(RELEASE).tgz
659
660 tarballs:       tarpdf tarps tarhtml
661
662 ziphtml:        html-$(RELEASE).zip
663 zipps:          postscript-$(PAPER)-$(RELEASE).zip
664 zippdf:         pdf-$(PAPER)-$(RELEASE).zip
665 ziplatex:       latex-$(RELEASE).zip
666 zipisilo:       isilo-$(RELEASE).zip
667
668 zips:           zippdf zipps ziphtml
669
670 bziphtml:       html-$(RELEASE).tar.bz2
671 bzipinfo:       info-$(RELEASE).tar.bz2
672 bzipps:         postscript-$(PAPER)-$(RELEASE).tar.bz2
673 bzippdf:        pdf-$(PAPER)-$(RELEASE).tar.bz2
674 bziplatex:      latex-$(RELEASE).tar.bz2
675
676 bzips:          bzippdf bzipps bziphtml
677
678 disthtml:       bziphtml ziphtml
679 distinfo:       bzipinfo
680 distps:         bzipps zipps
681 distpdf:        bzippdf zippdf
682 distlatex:      bziplatex ziplatex
683
684 # We use the "pkglist" target at the end of these to ensure the
685 # package list is updated after building either of these; this seems a
686 # reasonable compromise between only building it for distfiles or
687 # having to build it manually.  Doing it here allows the packages for
688 # distribution to be built using either of
689 #     make distfiles && make PAPER=a4 paperdist
690 #     make paperdist && make PAPER=a4 distfiles
691 # The small amount of additional work is a small price to pay for not
692 # having to remember which order to do it in. ;)
693 paperdist:      distpdf distps pkglist
694 edist:          disthtml pkglist
695
696 # The pkglist.html file is used as part of the download.html page on
697 # python.org; it is not used as intermediate input here or as part of
698 # the packages created.
699 pkglist:
700         $(TOOLSDIR)/mkpkglist >pkglist.html
701
702 distfiles:      paperdist edist
703         $(TOOLSDIR)/mksourcepkg --bzip2 --zip $(RELEASE)
704         $(TOOLSDIR)/mkpkglist >pkglist.html
705
706
707 # Housekeeping targets
708
709 # Remove temporary files; all except the following:
710 # - sources: .tex, .bib, .sty, *.cls
711 # - useful results: .dvi, .pdf, .ps, .texi, .info
712 clean:
713         rm -f html-$(RELEASE).tar
714         cd $(INFODIR) && $(MAKE) clean
715
716 # Remove temporaries as well as final products
717 clobber:
718         rm -f html-$(RELEASE).tar
719         rm -f html-$(RELEASE).tgz info-$(RELEASE).tgz
720         rm -f pdf-$(RELEASE).tgz postscript-$(RELEASE).tgz
721         rm -f latex-$(RELEASE).tgz html-$(RELEASE).zip
722         rm -f pdf-$(RELEASE).zip postscript-$(RELEASE).zip
723         rm -f $(DVIFILES) $(PSFILES) $(PDFFILES)
724         cd $(INFODIR) && $(MAKE) clobber
725         rm -f paper-$(PAPER)/*.tex paper-$(PAPER)/*.ind paper-$(PAPER)/*.idx
726         rm -f paper-$(PAPER)/*.l2h paper-$(PAPER)/*.how paper-$(PAPER)/README
727         rm -rf html/index.html html/modindex.html html/acks.html
728         rm -rf html/api/ html/doc/ html/ext/ html/lib/ html/mac/
729         rm -rf html/ref/ html/tut/ html/inst/ html/dist/
730         rm -rf html/whatsnew/
731         rm -rf isilo/api/ isilo/doc/ isilo/ext/ isilo/lib/ isilo/mac/
732         rm -rf isilo/ref/ isilo/tut/ isilo/inst/ isilo/dist/
733         rm -rf isilo/whatsnew/
734         rm -f isilo/python-*.pdb isilo-$(RELEASE).zip
735
736 realclean distclean:  clobber