Commit eb7fe4f5 authored by Fred Drake's avatar Fred Drake

Massive cleanup: Use Makefiles in subdirs properly, move most of the

detailed build rules to the subdirs.  Allow pretty much every useful target
to be built directly from the top dir (no change in output location).
parent 07b12f24
...@@ -43,281 +43,104 @@ ...@@ -43,281 +43,104 @@
# The formatted output is located in subdirectories. For PDF and # The formatted output is located in subdirectories. For PDF and
# PostScript, look in the paper-$(PAPER)/ directory. For HTML, look in # PostScript, look in the paper-$(PAPER)/ directory. For HTML, look in
# the html/ directory. If you want to fix the GNU info process, look # the html/ directory. If you want to fix the GNU info process, look
# in the info/ directory. # in the info/ directory; please send patches to python-docs@python.org.
# Customizations -- you *may* have to edit these # Customizations -- you *may* have to edit these
# you could set this to a4 # you could set this to a4
PAPER=letter PAPER=letter
# Where are the various programs? # Ideally, you shouldn't need to edit beyond this point
LATEX= latex
PDFLATEX= pdflatex
DVIPS= dvips -N0 -t $(PAPER)
KPSEWHICH= TEXINPUTS=$(TEXINPUTS) kpsewhich tex
MAKEINDEX= makeindex -s $(srcdir)/texinputs/myindex.ist
ACROREAD= acroread
L2HARGS=
# HTMLDIR should not be '.'!
HTMLDIR= html
PYTHON= python
WEBCHECKER= $(PYTHON) $(srcdir)/../Tools/webchecker/webchecker.py
# Install destination -- not used now but might be useful some time...
DESTDIR= /usr/local
LIBDESTDIR= $DESTDIR/lib
LIBDEST= $LIBDESTDIR/python$(VERSION)
DOCDESTDIR= $LIBDEST/doc
HTMLDIR= html
INFODIR= info INFODIR= info
TOOLSDIR= tools
srcdir=.
VPATH=.
# Ideally, you shouldn't need to edit beyond this point
RELEASE=1.5.2a1 RELEASE=1.5.2a1
VERSION=1.5 VERSION=1.5
MANDVIFILES= api.dvi ext.dvi lib.dvi ref.dvi tut.dvi # These must be declared phony since there
HOWTODVIFILES= mac.dvi # are directories with matching names:
.PHONY: api ext lib mac ref tut
MANPDFFILES= api.pdf ext.pdf lib.pdf ref.pdf tut.pdf .PHONY: html info
HOWTOPDFFILES= mac.pdf
MANPSFILES= api.ps ext.ps lib.ps ref.ps tut.ps
HOWTOPSFILES= mac.ps
DVIFILES= $(MANDVIFILES) $(HOWTODVIFILES)
PDFFILES= $(MANPDFFILES) $(HOWTOPDFFILES)
PSFILES= $(MANPSFILES) $(HOWTOPSFILES)
# Be careful when messing with this one!
TEXINPUTS= .:../texinputs:
MKDVI= TEXINPUTS=$(TEXINPUTS) $(srcdir)/tools/mkdvi.sh
MKHOWTO= $(srcdir)/tools/mkhowto.sh --keep
MKHTML= PAPER=$(PAPER) $(srcdir)/tools/mkhtml.sh
MKPDF= TEXINPUTS=$(TEXINPUTS) $(srcdir)/tools/mkdvi.sh --pdf
# Main target # Main target
all: ps all: ps
dvi: dvi:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) dvi)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile do-dvi)
pdf: pdf:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) pdf)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile do-pdf)
ps: ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile do-ps)
world: ps pdf html tarballs world: ps pdf html tarballs
# Targets for each document: # Targets for each document:
.PHONY: api ext lib mac ref tut api api.ps:
(cd paper-$(PAPER); $(MAKE) api.ps)
api: ext ext.ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) ext.ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile api.ps)
ext: lib lib.ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) lib.ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile ext.ps)
lib: mac mac.ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) mac.ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile lib.ps)
mac: ref ref.ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) ref.ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile mac.ps)
ref: tut tut.ps:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) tut.ps)
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile ref.ps)
tut:
(cd paper-$(PAPER); \
$(MAKE) srcdir=.. VPATH=.. TEXINPUTS=$(TEXINPUTS) \
-f ../Makefile tut.ps)
api.dvi:
(cd paper-$(PAPER); $(MAKE) api.dvi)
# Internal targets: ext.dvi:
(cd paper-$(PAPER); $(MAKE) ext.dvi)
do-dvi: $(DVIFILES) lib.dvi:
do-pdf: $(PDFFILES) (cd paper-$(PAPER); $(MAKE) lib.dvi)
do-ps: $(PSFILES)
# This target gets both the PDF and PS files updated. mac.dvi:
# (cd paper-$(PAPER); $(MAKE) mac.dvi)
all-formats: $(PSFILES) $(PDFFILES)
ref.dvi:
(cd paper-$(PAPER); $(MAKE) ref.dvi)
# Rules to build PostScript and PDF formats
.SUFFIXES: .dvi .ps .pdf tut.dvi:
(cd paper-$(PAPER); $(MAKE) tut.dvi)
.dvi.ps:
$(DVIPS) -o $@ $<
api.pdf:
#.pdf.ps: (cd paper-$(PAPER); $(MAKE) api.pdf)
# $(ACROREAD) -toPostScript $<
ext.pdf:
(cd paper-$(PAPER); $(MAKE) ext.pdf)
# Dependencies
# We really need some support of dependency generator for this... lib.pdf:
(cd paper-$(PAPER); $(MAKE) lib.pdf)
COMMONSTYLES=texinputs/python.sty texinputs/pypaper.sty texinputs/myindex.ist
COMMONTEX=texinputs/copyright.tex texinputs/boilerplate.tex mac.pdf:
(cd paper-$(PAPER); $(MAKE) mac.pdf)
MANSTYLES=texinputs/fncychap.sty texinputs/manual.cls $(COMMONSTYLES)
HOWTOSTYLES=texinputs/howto.cls $(COMMONSTYLES) ref.pdf:
(cd paper-$(PAPER); $(MAKE) ref.pdf)
$(DVIFILES): tools/fix_hack tools/mkdvi.sh $(COMMONTEX) tut.pdf:
$(PDFFILES): tools/fix_hack tools/mkdvi.sh $(COMMONTEX) (cd paper-$(PAPER); $(MAKE) tut.pdf)
$(MANDVIFILES): $(MANSTYLES)
$(MANPDFFILES): $(MANSTYLES)
$(HOWTODVIFILES): tools/mkhowto.sh $(HOWTOSTYLES)
$(HOWTOPDFFILES): tools/mkhowto.sh $(HOWTOSTYLES)
REFFILES = ref/ref1.tex ref/ref2.tex ref/ref3.tex ref/ref4.tex \
ref/ref5.tex ref/ref6.tex ref/ref7.tex ref/ref8.tex \
ref/ref.tex
# LaTeX source files for the Python Library Reference
LIBFILES = lib/lib.tex \
lib/libintro.tex lib/libobjs.tex lib/libstdtypes.tex \
lib/libexcs.tex lib/libfuncs.tex lib/libpython.tex lib/libsys.tex \
lib/libtypes.tex lib/libtraceback.tex lib/libpickle.tex \
lib/libshelve.tex lib/libcopy.tex lib/libmarshal.tex \
lib/libimp.tex lib/libparser.tex lib/libbltin.tex lib/libmain.tex \
lib/libstrings.tex lib/libstring.tex lib/libregex.tex \
lib/libregsub.tex lib/libstruct.tex lib/libmisc.tex \
lib/libmath.tex lib/librand.tex lib/libwhrandom.tex \
lib/libarray.tex lib/liballos.tex lib/libos.tex lib/libtime.tex \
lib/libgetopt.tex lib/libtempfile.tex lib/liberrno.tex \
lib/libsomeos.tex lib/libsignal.tex lib/libsocket.tex \
lib/libselect.tex lib/libthread.tex lib/libunix.tex \
lib/libposix.tex lib/libposixpath.tex lib/libpwd.tex \
lib/libgrp.tex lib/libcrypt.tex lib/libdbm.tex lib/libgdbm.tex \
lib/libtermios.tex lib/libfcntl.tex lib/libposixfile.tex \
lib/libsyslog.tex lib/libpdb.tex lib/libprofile.tex \
lib/libcgi.tex lib/liburllib.tex lib/libhttplib.tex \
lib/libftplib.tex lib/libgopherlib.tex lib/libnntplib.tex \
lib/liburlparse.tex lib/libhtmllib.tex lib/libsgmllib.tex \
lib/librfc822.tex lib/libmimetools.tex lib/libbinascii.tex \
lib/libmm.tex lib/libaudioop.tex lib/libimageop.tex \
lib/libaifc.tex lib/libjpeg.tex lib/librgbimg.tex \
lib/libcrypto.tex lib/libmd5.tex lib/libmpz.tex lib/librotor.tex \
lib/libstdwin.tex lib/libsgi.tex lib/libal.tex lib/libcd.tex \
lib/libfl.tex lib/libfm.tex lib/libgl.tex lib/libimgfile.tex \
lib/libsun.tex lib/libxdrlib.tex lib/libimghdr.tex \
lib/librestricted.tex lib/librexec.tex lib/libbastion.tex \
lib/libformatter.tex lib/liboperator.tex lib/libsoundex.tex \
lib/libresource.tex lib/libstat.tex lib/libstringio.tex \
lib/libtoken.tex lib/libundoc.tex lib/libmailcap.tex \
lib/libglob.tex lib/libuser.tex lib/libanydbm.tex \
lib/librandom.tex lib/libsite.tex lib/libwhichdb.tex \
lib/libbase64.tex lib/libfnmatch.tex lib/libquopri.tex \
lib/libzlib.tex lib/libsocksvr.tex lib/libmailbox.tex \
lib/libcommands.tex lib/libcmath.tex lib/libgzip.tex \
lib/libpprint.tex lib/libcode.tex lib/libmimify.tex lib/libre.tex \
lib/libuserdict.tex lib/libdis.tex lib/libxmllib.tex \
lib/libqueue.tex lib/liblocale.tex lib/libbasehttp.tex \
lib/libcopyreg.tex lib/libsymbol.tex lib/libbinhex.tex \
lib/libuu.tex lib/libsunaudio.tex lib/libfileinput.tex \
lib/libimaplib.tex lib/libpoplib.tex lib/libcalendar.tex \
lib/libpopen2.tex lib/libbisect.tex lib/libmimetypes.tex \
lib/libsmtplib.tex lib/libcmd.tex lib/libmultifile.tex \
lib/libthreading.tex lib/internet.tex lib/netdata.tex \
lib/libpycompile.tex lib/libcompileall.tex
# LaTeX source files for Macintosh Library Modules.
MACLIBFILES = mac/mac.tex mac/libmac.tex mac/libctb.tex \
mac/libmacconsole.tex mac/libmacdnr.tex mac/libmacfs.tex \
mac/libmacos.tex mac/libmacostools.tex mac/libmactcp.tex \
mac/libmacspeech.tex mac/libmacui.tex mac/libmacic.tex \
mac/libframework.tex mac/libminiae.tex
# Python Library Reference
lib.dvi: tools/indfix.py $(LIBFILES)
$(srcdir)/tools/newind.py >$*.ind
$(srcdir)/tools/newind.py modindex >mod$*.ind
TEXINPUTS=$(srcdir)/lib:$(TEXINPUTS) $(LATEX) $*
$(MAKEINDEX) mod$*.idx
$(srcdir)/tools/fix_hack $*.idx
$(MAKEINDEX) $*.idx
$(srcdir)/tools/indfix.py $*.ind
TEXINPUTS=$(srcdir)/lib:$(TEXINPUTS) $(LATEX) $*
lib.pdf: tools/indfix.py $(LIBFILES)
$(srcdir)/tools/newind.py >$*.ind
$(srcdir)/tools/newind.py modindex >mod$*.ind
TEXINPUTS=$(srcdir)/lib:$(TEXINPUTS) $(PDFLATEX) $*
$(MAKEINDEX) mod$*.idx
$(srcdir)/tools/fix_hack $*.idx
$(MAKEINDEX) $*.idx
$(srcdir)/tools/indfix.py $*.ind
$(srcdir)/tools/toc2bkm.py $*
TEXINPUTS=$(srcdir)/lib:$(TEXINPUTS) $(PDFLATEX) $*
# Python/C API Reference Manual
api.dvi: api/api.tex
$(MKDVI) api
api.pdf: api/api.tex
$(MKPDF) api
# Extending and Embedding the Python Interpreter
ext.dvi: ext/ext.tex
$(MKDVI) ext
ext.pdf: ext/ext.tex
$(MKPDF) ext
# Macintosh Library Modules
mac.dvi: $(MACLIBFILES)
$(MKHOWTO) --dvi $(srcdir)/$*/$*.tex
mac.pdf: $(MACLIBFILES)
$(MKHOWTO) --pdf $(srcdir)/$*/$*.tex
# Python Reference Manual
ref.dvi: $(REFFILES)
$(MKDVI) ref
ref.pdf: $(REFFILES)
$(MKPDF) ref
# Python Tutorial
tut.dvi: tut/tut.tex
$(MKDVI) tut
tut.pdf: tut/tut.tex
$(MKPDF) tut
# The remaining part of the Makefile is concerned with various # The remaining part of the Makefile is concerned with various
# conversions, as described above. See also the README file. # conversions, as described above. See also the README file.
.PHONY: html l2h info
info: info:
(cd $(INFODIR); $(MAKE)) (cd $(INFODIR); $(MAKE))
...@@ -332,54 +155,51 @@ info: ...@@ -332,54 +155,51 @@ info:
# a (trivial) index.html. Change the definition of $ICONSERVER in # a (trivial) index.html. Change the definition of $ICONSERVER in
# perl/l2hinit.perl to use a different location for the icons directory. # perl/l2hinit.perl to use a different location for the icons directory.
COMMONPERL=perl/manual.perl perl/python.perl # If you have the standard LaTeX2HTML icons installed, the versions shipped
# with this documentation should be stored in a separate directory and used
# instead. The standard set does *not* include all the icons used in the
# Python documentation.
l2h html: html:
(TOPDIR=`pwd`; cd $(HTMLDIR); \ (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile)
$(MAKE) TOPDIR=$$TOPDIR \
TEXINPUTS=../paper-$(PAPER):../texinputs: \
-f $$TOPDIR/html/Makefile)
l2hapi: $(COMMONPERL) api/api.tex htmlapi:
$(MKHTML) api $(L2HARGS) (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile api)
l2hext: $(COMMONPERL) ext/ext.tex htmlext:
$(MKHTML) ext $(L2HARGS) (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile ext)
l2hlib: $(COMMONPERL) $(LIBFILES) htmllib:
$(srcdir)/tools/fix_libaux.sed <`$(KPSEWHICH) lib.aux` >lib1.aux (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile lib)
mv lib1.aux `$(KPSEWHICH) lib.aux`
$(MKHTML) lib $(L2HARGS)
l2hmac: $(COMMONPERL) $(MACLIBFILES) htmlmac:
$(srcdir)/tools/mkhowto.sh --html $(srcdir)/mac/mac.tex (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile mac)
l2href: $(COMMONPERL) $(REFFILES) htmlref:
$(MKHTML) ref $(L2HARGS) (cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile ref)
htmltut:
(cd $(HTMLDIR); $(MAKE) PAPER=$(PAPER) -f ../html/Makefile tut)
l2htut: $(COMMONPERL) tut/tut.tex
$(MKHTML) tut $(L2HARGS)
# webchecker needs an extra flag to process the huge index from the libref # webchecker needs an extra flag to process the huge index from the libref
webcheck: webcheck:
$(WEBCHECKER) file:`pwd`/$(HTMLDIR)/api/ (cd $(HTMLDIR); $(MAKE) -f ../html/Makefile webcheck)
$(WEBCHECKER) file:`pwd`/$(HTMLDIR)/ext/
$(WEBCHECKER) -m290000 file:`pwd`/$(HTMLDIR)/lib/
$(WEBCHECKER) file:`pwd`/$(HTMLDIR)/mac/ # Release packaging targets:
$(WEBCHECKER) file:`pwd`/$(HTMLDIR)/ref/
$(WEBCHECKER) file:`pwd`/$(HTMLDIR)/tut/
lib-info-$(RELEASE).tgz: info lib-info-$(RELEASE).tgz: info
(cd $(INFODIR); tar cf - python-???.info*) | gzip -9 >$@ (cd $(INFODIR); tar cf - python-???.info*) | gzip -9 >$@
latex-$(RELEASE).tgz: latex-$(RELEASE).tgz:
$(srcdir)/tools/mktarball.sh $(RELEASE) $(TOOLSDIR)/mktarball.sh $(RELEASE)
pdf-$(PAPER)-$(RELEASE).tgz: pdf pdf-$(PAPER)-$(RELEASE).tgz: pdf
(cd paper-$(PAPER); tar cf - $(PDFFILES)) | gzip -9 >$@ (cd paper-$(PAPER); tar cf - *.pdf) | gzip -9 >$@
postscript-$(PAPER)-$(RELEASE).tgz: ps postscript-$(PAPER)-$(RELEASE).tgz: ps
(cd paper-$(PAPER); tar cf - $(PSFILES)) | gzip -9 >$@ (cd paper-$(PAPER); tar cf - *.ps) | gzip -9 >$@
html-$(RELEASE).tgz: $(HTMLDIR)/api/api.html $(HTMLDIR)/ext/ext.html \ html-$(RELEASE).tgz: $(HTMLDIR)/api/api.html $(HTMLDIR)/ext/ext.html \
$(HTMLDIR)/lib/lib.html $(HTMLDIR)/mac/mac.html \ $(HTMLDIR)/lib/lib.html $(HTMLDIR)/mac/mac.html \
...@@ -392,13 +212,9 @@ html-$(RELEASE).tgz: ...@@ -392,13 +212,9 @@ html-$(RELEASE).tgz:
# convenience targets: # convenience targets:
tarhtml: html-$(RELEASE).tgz tarhtml: html-$(RELEASE).tgz
tarinfo: lib-info-$(RELEASE).tgz tarinfo: lib-info-$(RELEASE).tgz
tarps: postscript-$(PAPER)-$(RELEASE).tgz tarps: postscript-$(PAPER)-$(RELEASE).tgz
tarpdf: pdf-$(PAPER)-$(RELEASE).tgz tarpdf: pdf-$(PAPER)-$(RELEASE).tgz
tarlatex: latex-$(RELEASE).tgz tarlatex: latex-$(RELEASE).tgz
tarballs: tarpdf tarps tarhtml tarlatex tarballs: tarpdf tarps tarhtml tarlatex
...@@ -410,20 +226,20 @@ tarballs: tarpdf tarps tarhtml tarlatex ...@@ -410,20 +226,20 @@ tarballs: tarpdf tarps tarhtml tarlatex
# - sources: .tex, .bib, .sty, *.cls # - sources: .tex, .bib, .sty, *.cls
# - useful results: .dvi, .pdf, .ps, .texi, .info # - useful results: .dvi, .pdf, .ps, .texi, .info
clean: clean:
(cd paper-$(PAPER); \ (cd paper-$(PAPER); $(MAKE) clean)
rm -f *~ *.aux *.idx *.ilg *.ind *.log *.toc *.bkm *.syn) (cd $(HTMLDIR); $(MAKE) clean)
(cd $(INFODIR); $(MAKE) clean) (cd $(INFODIR); $(MAKE) clean)
(cd $(HTMLDIR); rm -f @webchecker.pickle)
rm -f html-$(RELEASE).tgz info-$(RELEASE).tgz
rm -f pdf-$(RELEASE).tgz postscript-$(RELEASE).tgz
rm -f latex-$(RELEASE).tgz
l2hclean: l2hclean:
(cd $(HTMLDIR); rm -rf api ext lib ref tut) (cd $(HTMLDIR); rm -rf api ext lib ref tut)
# Remove temporaries as well as final products # Remove temporaries as well as final products
clobber: clean l2hclean clobber: l2hclean
(cd paper-$(PAPER); rm -f $(DVIFILES) $(PSFILES) $(PDFFILES)) rm -f html-$(RELEASE).tgz info-$(RELEASE).tgz
rm -f pdf-$(RELEASE).tgz postscript-$(RELEASE).tgz
rm -f latex-$(RELEASE).tgz
(cd paper-$(PAPER); $(MAKE) clobber)
(cd $(HTMLDIR); $(MAKE) clobber)
(cd $(INFODIR); $(MAKE) clobber) (cd $(INFODIR); $(MAKE) clobber)
realclean: clobber realclean: clobber
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment