]> granicus.if.org Git - python/commitdiff
New build procedure.
authorGuido van Rossum <guido@python.org>
Sat, 19 Jul 1997 19:39:57 +0000 (19:39 +0000)
committerGuido van Rossum <guido@python.org>
Sat, 19 Jul 1997 19:39:57 +0000 (19:39 +0000)
Modules/Makefile.pre.in
Objects/Makefile.in
Parser/Makefile.in
Python/Makefile.in

index 6a3e5e57ecf950393705feb26f0ffa3131482334..4c6b3154545de1c6851673f6569abe593d857df2 100644 (file)
@@ -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:
index 2d6c087083dd4dc8852fce15bc8810ea920c8356..e2dee628447a53db1b461c9f314fb3feaff15e5f 100644 (file)
@@ -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
index 1b8f1f8b63e7ff301cc9bb94a803e110ac83604f..48bfebc1e394a235aaa8cdc3c1316c7d25068054 100644 (file)
@@ -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
index 9fc2de6d0c5c6d2a8a097c2ef3fac4a82f5db8a1..de28c230eb628c1d8121ef3963098ff887bbbe67 100644 (file)
@@ -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