From f6ca6aa8696ff232d2c755fb97cf9264c753d036 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sat, 19 Jul 1997 19:39:57 +0000 Subject: New build procedure. --- Modules/Makefile.pre.in | 54 +++++++++++++++++++++++++------------------------ Objects/Makefile.in | 17 ++++++++-------- Parser/Makefile.in | 35 ++++++++++++++++++-------------- Python/Makefile.in | 18 ++++++++--------- 4 files changed, 66 insertions(+), 58 deletions(-) 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 @@ MODLIBS= _MODLIBS_ # === Variables set by configure === +VERSION= @VERSION@ srcdir= @srcdir@ VPATH= @srcdir@ @@ -92,51 +90,51 @@ MAKESETUP= $(srcdir)/makesetup # === Fixed definitions === -OBJS= $(MODOBJS) - -# XXX Should getpath.o (and may be others) be added to OBJS? - -ADDOBJS= main.o config.o getpath.o getbuildinfo.o +FIXOBJS= config.o getpath.o main.o getbuildinfo.o +OBJS= $(MODOBJS) $(FIXOBJS) -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 @@ getpath.o: getpath.c Makefile -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 @@ SRCS= abstract.c \ 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 @@ SHELL= /bin/sh # === 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 -PGEN= pgen +PGENOBJS= $(PGENMAIN) $(POBJS) -LIB= libParser.a +DOBJS= $(PGENMAIN) $(OBJS) + +PGEN= pgen +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 @@ Makefile: $(srcdir)/Makefile.in ../config.status $(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 @@ OBJS= \ 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 -- cgit v0.12