New build procedure.
diff --git a/Modules/Makefile.pre.in b/Modules/Makefile.pre.in
index 6a3e5e5..4c6b315 100644
--- a/Modules/Makefile.pre.in
+++ b/Modules/Makefile.pre.in
@@ -6,9 +6,6 @@
 # brought up to date by running "make Makefile".  (The makesetup also
 # creates config.c from config.c.in in the source directory.)
 
-# Interpreter version number, for library destination pathnames
-VERSION=	1.5
-
 # === Variables set by makesetup ===
 
 MODOBJS=	_MODOBJS_
@@ -16,6 +13,7 @@
 
 # === Variables set by configure ===
 
+VERSION=	@VERSION@
 srcdir=		@srcdir@
 VPATH=		@srcdir@
 
@@ -92,51 +90,51 @@
 
 # === Fixed definitions ===
 
-OBJS=		$(MODOBJS)
+FIXOBJS=	config.o getpath.o main.o getbuildinfo.o
+OBJS=		$(MODOBJS) $(FIXOBJS)
 
-# XXX Should getpath.o (and may be others) be added to OBJS?
-
-ADDOBJS=	main.o config.o getpath.o getbuildinfo.o
-
-LIB=		libModules.a
-
-MYLIBS=		$(LIB) \
-		../Python/libPython.a \
-		../Objects/libObjects.a \
-		../Parser/libParser.a
+MAINOBJ=	python.o
 
 SYSLIBS=	$(LIBM) $(LIBC)
 
+LIBRARY=	../libpython$(VERSION).a
 
 # === Rules ===
 
-all:		$(LIB) ../python sharedmods
+all:		$(OBJS) sharedmods
 
+# Targets for Jim Fulton's extension Makefiles -- are these still needed?
 asharedmodule:	$(ASHAREDMODULE)$(SO)
 
 $(ASHAREDMODULE)$(SO): $(ASHAREDMODULESOBS)
 	$(LDSHARED) $(LDFLAGS) -o $(ASHAREDMODULE)$(SO) $(ASHAREDMODULESOBS) \
 	$(ASHAREDMODULESEXTRA)
 
-$(LIB):		$& $(OBJS) Makefile
-		-rm -f $(LIB)
-		$(AR) cr $(LIB) $(OBJS)
-		$(RANLIB) $(LIB)
-
-../python:	$(MYLIBS) $(ADDOBJS) Makefile buildno
+# This target is used by the master Makefile to add the objects to the library.
+# To deal with the conflict between signalmodule.o and sigcheck.o,
+# we remove the latter if we have the former.
+add2lib:	$(OBJS) buildno
 		expr `cat buildno` + 1 >@buildno
 		mv @buildno buildno
-		$(CC) -c $(CFLAGS) -DBUILD=`cat buildno` $(srcdir)/getbuildinfo.c
-		$(AR) r $(LIB) getbuildinfo.o
-		$(LINKCC) $(LDFLAGS) $(OPT) $(LINKFORSHARED) $(ADDOBJS) \
-		  $(MYLIBS) $(MODLIBS) $(LIBS) $(SYSLIBS) -o python $(LDLAST)
+		$(CC) -c $(CFLAGS) -DBUILD=`cat buildno` \
+		      $(srcdir)/getbuildinfo.c
+		$(AR) cr $(LIBRARY) $(OBJS)
+		-if ar x $(LIBRARY) signalmodule.o 2>/dev/null; \
+		then ar d $(LIBRARY) sigcheck.o 2>/dev/null; true; \
+		else true; fi
+		touch add2lib
+
+# This target is used by the master Makefile to link the final binary.
+link:		$(MAINOBJ)
+		$(LINKCC) $(LDFLAGS) $(OPT) $(LINKFORSHARED) $(MAINOBJ) \
+		  $(LIBRARY) $(MODLIBS) $(LIBS) $(SYSLIBS) -o python $(LDLAST)
 		mv python ../python
 
 buildno:
 		echo 0 >buildno
 
 clean:
-		-rm -f *.o python core *~ [@,#]* *.old *.orig *.rej
+		-rm -f *.o python core *~ [@,#]* *.old *.orig *.rej add2lib
 
 clobber:	clean
 		-rm -f *.a tags TAGS config.c glmodule.c Makefile.pre
@@ -150,7 +148,11 @@
 		      -DVPATH='"$(VPATH)"' \
 		      $(srcdir)/getpath.c
 
+# When the configuration changes, we remove the library, so that it
+# gets remade from scratch; this ensures to remove modules that are no
+# longer pertinent (but that were in a previous configuration).
 config.c Makefile: Makefile.pre config.c.in $(MAKESETUP) Setup Setup.local
+		-rm -f $(LIBRARY)
 		$(SHELL) $(MAKESETUP) Setup Setup.local
 
 Setup:
diff --git a/Objects/Makefile.in b/Objects/Makefile.in
index 2d6c087..e2dee62 100644
--- a/Objects/Makefile.in
+++ b/Objects/Makefile.in
@@ -4,6 +4,8 @@
 
 # === Variables set by config.stat ===
 
+VERSION=	@VERSION@
+
 srcdir=		@srcdir@
 VPATH=		@srcdir@
 
@@ -44,20 +46,19 @@
 		sliceobject.c stringobject.c \
 		tupleobject.c typeobject.c
 
-LIB=		libObjects.a
-
+LIBRARY=	../libpython$(VERSION).a
 
 # === Rules ===
 
-all:		$(LIB)
+all:		$(OBJS)
 
-$(LIB):		$& $(OBJS)
-		-rm -f $(LIB)
-		$(AR) cr $(LIB) $(OBJS)
-		$(RANLIB) $(LIB)
+# This target is used by the master Makefile to add the objects to the library
+add2lib:	$(OBJS)
+		$(AR) cr $(LIBRARY) $(OBJS)
+		touch add2lib
 
 clean:
-		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej
+		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej add2lib
 
 clobber:	clean
 		-rm -f *.a tags TAGS
diff --git a/Parser/Makefile.in b/Parser/Makefile.in
index 1b8f1f8..48bfebc 100644
--- a/Parser/Makefile.in
+++ b/Parser/Makefile.in
@@ -4,6 +4,8 @@
 
 # === Variables set by config.stat ===
 
+VERSION=	@VERSION@
+
 srcdir=		@srcdir@
 VPATH=		@srcdir@
 
@@ -26,35 +28,38 @@
 
 # === Fixed definitions ===
 
-PARSEROBJS=	acceler.o grammar1.o \
-		intrcheck.o listnode.o myreadline.o node.o parser.o \
+POBJS=		acceler.o grammar1.o \
+		listnode.o node.o parser.o \
 		parsetok.o tokenizer.o bitset.o \
 		firstsets.o grammar.o metagrammar.o pgen.o \
 		printgrammar.o
 
-PGENOBJS=	pgenmain.o
+OBJS=		$(POBJS) intrcheck.o myreadline.o
 
-OBJS=		$(PGENOBJS) $(PARSEROBJS)
+PGENMAIN=	pgenmain.o
+
+PGENOBJS=	$(PGENMAIN) $(POBJS)
+
+DOBJS=		$(PGENMAIN) $(OBJS)
 
 PGEN=		pgen
 
-LIB=		libParser.a
-
+LIBRARY=	../libpython$(VERSION).a
 
 # === Rules ===
 
-all:		$(LIB) $(PGEN)
+all:		$(PGEN) $(OBJS)
 
-$(LIB):		$& $(PARSEROBJS)
-		-rm -f $(LIB)
-		$(AR) cr $(LIB) $(PARSEROBJS)
-		$(RANLIB) $(LIB)
+# This target is used by the master Makefile to add the objects to the library
+add2lib:	$(OBJS)
+		$(AR) cr $(LIBRARY) $(OBJS)
+		touch add2lib
 
-$(PGEN):	$(PGENOBJS) $(LIB)
-		$(CC) $(OPT) $(PGENOBJS) $(LIB) -o $(PGEN)
+$(PGEN):	$(PGENOBJS)
+		$(CC) $(OPT) $(PGENOBJS) -o $(PGEN)
 
 clean:
-		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej
+		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej add2lib
 
 clobber:	clean
 		-rm -f $(PGEN) *.a tags TAGS
@@ -64,7 +69,7 @@
 		$(SHELL) config.status)
 
 depend:
-		$(MKDEP) $(CFLAGS) `echo $(OBJS) | tr ' ' '\012' | \
+		$(MKDEP) $(CFLAGS) `echo $(DOBJS) | tr ' ' '\012' | \
 					sed 's|\(.*\)\.o|$(srcdir)/\1.c|'`
 
 .PRECIOUS:	Makefile
diff --git a/Python/Makefile.in b/Python/Makefile.in
index 9fc2de6..de28c23 100644
--- a/Python/Makefile.in
+++ b/Python/Makefile.in
@@ -4,6 +4,8 @@
 
 # === Variables set by config.stat ===
 
+VERSION=	@VERSION@
+
 srcdir=		@srcdir@
 VPATH=		@srcdir@
 
@@ -46,22 +48,20 @@
 		traceback.o \
 		$(LIBOBJS)
 
-LIB=		libPython.a
-
-SYSLIBS=	-lm
+LIBRARY=	../libpython$(VERSION).a
 
 
 # === Rules ===
 
-all:		$(LIB)
+all:		$(OBJS)
 
-$(LIB):		$& $(OBJS)
-		-rm -f $(LIB)
-		$(AR) cr $(LIB) $(OBJS)
-		$(RANLIB) $(LIB)
+# This target is used by the master Makefile to add the objects to the library
+add2lib:	$(OBJS)
+		$(AR) cr $(LIBRARY) $(OBJS)
+		touch add2lib
 
 clean:
-		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej
+		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej add2lib
 
 clobber:	clean
 		-rm -f *.a tags TAGS