Replace most everything but the comment at the top.
diff --git a/Doc/info/Makefile b/Doc/info/Makefile
index dcad793..8a0dfff 100644
--- a/Doc/info/Makefile
+++ b/Doc/info/Makefile
@@ -1,38 +1,80 @@
 # Generate the Python "info" documentation.
 
-# These is only used for .info generation:
-EMACS=		emacs
-MAKEINFO=	makeinfo
-PYTHON=		python
-PARTPARSE=	$(PYTHON) ../tools/partparse.py
+PAPER=letter
+TOPDIR=..
+TOOLSDIR=$(TOPDIR)/tools
+PAPERDIR=$(TOPDIR)/paper-$(PAPER)
+HTMLDIR=$(TOPDIR)/html
+
+MKINFO=$(TOOLSDIR)/mkinfo
+SCRIPTS=$(TOOLSDIR)/html2texi.pl $(TOOLSDIR)/checkargs.pm $(TOOLSDIR)/mkinfo
+
+all:	python-api.info python-ext.info python-lib.info \
+	python-mac.info python-ref.info python-tut.info
 
 
-all:	python-lib.info
+python-api.info:	$(HTMLDIR)/api/api.html $(SCRIPTS)
+	$(MKINFO) $<
 
+python-ext.info:	$(HTMLDIR)/ext/ext.html $(SCRIPTS)
+	$(MKINFO) $<
 
-.PRECIOUS:	python-lib.texi
+python-lib.info:	$(HTMLDIR)/lib/lib.html $(SCRIPTS)
+	$(MKINFO) $<
 
-# The sed script in this target fixes a really nasty little condition in
-# libcgi.tex where \e has to be used in a group to get the right behavior,
-# and makeinfo can't handle a group without a leading @command.  But at
-# least the info file gets generated.
+python-mac.info:	$(HTMLDIR)/mac/mac.html $(SCRIPTS)
+	$(MKINFO) $<
 
-lib1.texi: $(LIBFILES) texipre.dat texipost.dat ../tools/partparse.py
-	$(PARTPARSE) -o $@ `../tools/whichlibs`
-	sed 's/"{\\}n{\\}n/"\\n\\n/' $@ >temp.texi
-	mv temp.texi $@
+python-ref.info:	$(HTMLDIR)/ref/ref.html $(SCRIPTS)
+	$(MKINFO) $<
 
-python-lib.texi: lib1.texi ../tools/fix.el
-	cp lib1.texi temp.texi
-	$(EMACS) -batch -l ../tools/fix.el -f save-buffer -kill
-	mv temp.texi $@
+python-tut.info:	$(HTMLDIR)/tut/tut.html $(SCRIPTS)
+	$(MKINFO) $<
 
-python-lib.info: python-lib.texi
-	$(MAKEINFO) --footnote-style end --fill-column 72 \
-		    --paragraph-indent 0 $<
 
 clean:
-	rm -f *~ *.texi
+	rm -f *.texi~ *.texi
 
 clobber: clean
-	rm -f *.texi python-???.info python-???.info-[0-9]*
+	rm -f *.texi python-*.info python-*.info-[0-9]*
+
+
+# The HTML files are dependent on the .aux files, which are dependent on the
+# LaTeX source documents.  This makes sure we can build info files from a
+# "clean" tree:
+
+$(HTMLDIR)/api/api.html:  $(PAPERDIR)/api.aux $(BUILDINDEX)
+	(cd $(TOPDIR); $(MAKE) htmlapi)
+
+$(HTMLDIR)/ext/ext.html:  $(PAPERDIR)/ext.aux
+	(cd $(TOPDIR); $(MAKE) htmlext)
+
+$(HTMLDIR)/lib/lib.html:  $(PAPERDIR)/lib.aux $(BUILDINDEX)
+	(cd $(TOPDIR); $(MAKE) htmllib)
+
+$(HTMLDIR)/mac/mac.html:  $(MACFILES) $(BUILDINDEX)
+	(cd $(TOPDIR); $(MAKE) htmlmac)
+
+$(HTMLDIR)/ref/ref.html:  $(PAPERDIR)/ref.aux $(BUILDINDEX)
+	(cd $(TOPDIR); $(MAKE) htmlref)
+
+$(HTMLDIR)/tut/tut.html:  $(PAPERDIR)/tut.aux
+	(cd $(TOPDIR); $(MAKE) htmltut)
+
+
+include ../Makefile.deps
+
+$(PAPERDIR)/api.aux: $(APIFILES)
+	(cd $(PAPERDIR); $(MAKE) PAPER=$(PAPER) api.dvi)
+
+$(PAPERDIR)/ext.aux: $(EXTFILES)
+	(cd $(PAPERDIR); $(MAKE) PAPER=$(PAPER) ext.dvi)
+
+$(PAPERDIR)/lib.aux: $(LIBFILES)
+	(cd $(PAPERDIR); $(MAKE) PAPER=$(PAPER) lib.dvi)
+
+$(PAPERDIR)/ref.aux: $(REFFILES)
+	(cd $(PAPERDIR); $(MAKE) PAPER=$(PAPER) ref.dvi)
+
+$(PAPERDIR)/tut.aux: $(TUTFILES)
+	(cd $(PAPERDIR); $(MAKE) PAPER=$(PAPER) tut.dvi)