Revised Makefile to handle the new directories correctly.
diff --git a/Doc/Makefile b/Doc/Makefile
index f71aed6..ea094ca 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -46,28 +46,27 @@
 # Customizations -- you *may* have to edit these
 
 # Where are the various programs?
-LATEX=		latex
-PDFLATEX=	pdflatex
-BIBTEX=		bibtex
+LATEX=		TEXINPUTS=$(TEXINPUTS) latex
+PDFLATEX=	TEXINPUTS=$(TEXINPUTS) pdflatex
+TEXINPUTS=	texinputs:
 DVIPS=		dvips -f -N0
 DISTILL=	distill
 MAKEINDEX=	makeindex
-L2H=		latex2html
+L2H=		TEXINPUTS=$(TEXINPUTS) latex2html -init_file perl/l2hinit.perl
 L2HARGS=	-address $$LOGNAME@`domainname`
+WEBCHECKER=	$(PYTHON) ../Tools/webchecker/webchecker.py
 
 # Install destination -- not used now but might be useful some time...
 DESTDIR=	/usr/local
 LIBDESTDIR=	$DESTDIR/lib
-LIBDEST=	$LIBDESTDIR/python
+LIBDEST=	$LIBDESTDIR/python$(VERSION)
 DOCDESTDIR=	$LIBDEST/doc
 
 # This is only used for .info generation:
 EMACS=		emacs
 PYTHON=		python
 MAKEINFO=	makeinfo
-# When debugging partparse.py, make this the pyc file:
-PARTPARSEOBJ=	partparse.pyc
-PARTPARSE=	$(PYTHON) $(PARTPARSEOBJ)
+PARTPARSE=	$(PYTHON) tools/partparse.py
 
 # Ideally, you shouldn't need to edit beyond this point
 
@@ -78,9 +77,13 @@
 PDFFILES=	api.pdf ext.pdf lib.pdf tut.pdf
 PSFILES=	api.ps ext.ps lib.ps tut.ps
 
+MANSTYLES=texinputs/fncychap.sty texinputs/manual.cls texinputs/python.sty
+
 # Main target
 all:	all-ps
 
+world:	all-ps all-pdf l2h lib.info tarballs
+
 all-dvi: $(DVIFILES)
 all-pdf: $(PDFFILES)
 all-ps:	 $(PSFILES)
@@ -121,13 +124,15 @@
 # This rule avoids creation of the intermediate PostScript files and uses
 # only free software.
 #
-.dvi.pdf:
+.dvi.pdf: $*.bkm
+	$(PYTHON) tools/toc2bkm.py $*
 	$(PDFLATEX) $*
 
 # Dependencies
-COMMONTEX=python.sty manual.cls copyright.tex boilerplate.tex
+COMMONTEX=$(MANSTYLES) copyright.tex boilerplate.tex
+COMMONPERL=perl/manual.perl perl/python.perl
 
-$(DVIFILES): fix_hack $(COMMONTEX)
+$(DVIFILES): tools/fix_hack $(COMMONTEX)
 
 # LaTeX source files for the Python Library Reference
 LIBFILES = lib.tex \
@@ -163,14 +168,14 @@
     libframework.tex libminiae.tex libbinhex.tex libuu.tex libsunaudio.tex
 
 # Library document
-lib.dvi: modindex.py indfix.py $(LIBFILES)
-	./newind.py >$*.ind
-	./newind.py modindex >mod$*.ind
+lib.dvi: tools/modindex.py tools/indfix.py $(LIBFILES)
+	tools/newind.py >$*.ind
+	tools/newind.py modindex >mod$*.ind
 	$(LATEX) $*
-	./modindex.py mod$*.idx
-	./fix_hack $*.idx
+	tools/modindex.py mod$*.idx
+	tools/fix_hack $*.idx
 	$(MAKEINDEX) $*.idx
-	./indfix.py $*.ind
+	tools/indfix.py $*.ind
 	$(LATEX) $*
 
 # Tutorial document
@@ -181,9 +186,9 @@
 # Extending & Embedding, Python/C API documents.
 # Done this way to avoid repeated command sets.
 .tex.dvi:
-	./newind.py >$*.ind
+	tools/newind.py >$*.ind
 	$(LATEX) $*
-	./fix_hack $*.idx
+	tools/fix_hack $*.idx
 	$(MAKEINDEX) $*.idx
 	$(LATEX) $*
 
@@ -191,14 +196,6 @@
 # The remaining part of the Makefile is concerned with various
 # conversions, as described above.  See also the README file.
 
-.SUFFIXES: .py .pyc .pyo
-
-.py.pyo:
-	$(PYTHON) -O -c "import $*"
-
-.py.pyc:
-	$(PYTHON) -c "import $*"
-
 .PRECIOUS:	python-lib.texi
 
 # The sed script in this target fixes a really nasty little condition in
@@ -207,13 +204,13 @@
 # least the info file gets generated.
 
 lib1.texi: $(LIBFILES) texipre.dat texipost.dat $(PARTPARSEOBJ)
-	$(PARTPARSE) -o $@ `./whichlibs`
+	$(PARTPARSE) -o $@ `tools/whichlibs`
 	sed 's/"{\\}n{\\}n/"\\n\\n/' $@ >temp.texi
 	mv temp.texi $@
 
-python-lib.texi: lib1.texi fix.el
+python-lib.texi: lib1.texi tools/fix.el
 	cp lib1.texi temp.texi
-	$(EMACS) -batch -l fix.el -f save-buffer -kill
+	$(EMACS) -batch -l tools/fix.el -f save-buffer -kill
 	mv temp.texi $@
 
 python-lib.info: python-lib.texi
@@ -241,40 +238,43 @@
 
 l2h: l2hapi l2hext l2hlib l2htut
 
-l2htut: tut.dvi manual.perl python.perl
+l2htut: tut.dvi $(COMMONPERL)
 	$(L2H) $(L2HARGS) tut.tex
-	(cd tut; ../node2label.pl *.html)
-	ln -s tut.html tut/index.html || true
+	(cd tut; ../tools/node2label.pl *.html)
 
-l2hext: ext.dvi manual.perl python.perl
+l2hext: ext.dvi $(COMMONPERL)
 	$(L2H) $(L2HARGS) ext.tex
-	(cd ext; ../node2label.pl *.html)
-	ln -s ext.html ext/index.html || true
+	(cd ext; ../tools/node2label.pl *.html)
 
-l2hlib: lib.dvi manual.perl python.perl
-	./fix_libaux.sed <lib.aux >lib1.aux
+l2hlib: lib.dvi $(COMMONPERL)
+	tools/fix_libaux.sed <lib.aux >lib1.aux
 	mv lib1.aux lib.aux
-	if [ -d lib ] ; then rm -f lib/*.html ; fi
+	if test -d lib ; then rm -f lib/*.html ; fi
 	$(L2H) $(L2HARGS) lib.tex
-	(cd lib; ../node2label.pl *.html)
-	ln -s lib.html lib/index.html || true
+	(cd lib; ../tools/node2label.pl *.html)
 
-l2hapi: api.dvi manual.perl python.perl
+l2hapi: api.dvi $(COMMONPERL)
 	$(L2H) $(L2HARGS) api.tex
-	(cd api; ../node2label.pl *.html)
-	ln -s api.html api/index.html || true
+	(cd api; ../tools/node2label.pl *.html)
 
-info-$(VERSION).tar.gz: $(INFOFILES)
+# webchecker needs an extra flag to process the huge index from the libref
+webcheck:
+	$(WEBCHECKER) file:`pwd`/api/
+	$(WEBCHECKER) file:`pwd`/ext/
+	$(WEBCHECKER) -m290000 file:`pwd`/lib/
+	$(WEBCHECKER) file:`pwd`/tut/
+
+lib-info-$(VERSION).tar.gz: $(INFOFILES)
 	tar cf - python-???.info* | gzip -9 >$@
 
 latex-$(VERSION).tar.gz:
-	./mktarball.sh
+	tools/mktarball.sh
 
 # This snags a PDF version if available, but doesn't fail if not.
 pdf-$(VERSION).tar.gz: $(PDFFILES)
-	if [ -f ref/ref.pdf ] ; then cp ref/ref.pdf . ; else true ; fi
+	if test -f ref/ref.pdf ; then cp ref/ref.pdf . ; else true ; fi
 	tar cf - ???.pdf | gzip -9 >$@
-	if [ -f ref.pdf ] ; then rm ref.pdf ; else true ; fi
+	if test -f ref.pdf ; then rm ref.pdf ; else true ; fi
 
 postscript-$(VERSION).tar.gz: $(PSFILES) ref/ref.ps
 	cp ref/ref.ps .
@@ -288,7 +288,7 @@
 
 # convenience targets:
 
-tarinfo:  info-$(VERSION).tar.gz
+tarinfo:  lib-info-$(VERSION).tar.gz
 
 tarps:	postscript-$(VERSION).tar.gz
 
@@ -304,7 +304,7 @@
 # Remove temporary files; all except the following:
 # - sources: .tex, .bib, .sty, *.cls
 # - useful results: .dvi, .pdf, .ps, .texi, .info
-clean:	l2hclean
+clean:
 	rm -f @* *~ *.aux *.idx *.ilg *.ind *.log *.toc *.blg *.bbl *.py[co]
 	rm -f *.bak *.orig lib1.texi *.out
 	rm -f html-$(VERSION).tar.gz info-$(VERSION).tar.gz
@@ -315,8 +315,8 @@
 	rm -rf api ext lib tut
 
 # Remove temporaries as well as final products
-clobber: clean
-	 rm -f *.dvi *.pdf *.ps *.texi *.info *.info-[0-9]*
+clobber: clean l2hclean
+	 rm -f *.dvi *.pdf *.ps *.texi python-*.info python-*.info-[0-9]*
 
 realclean:  clobber
 distclean:  clobber