Fix parallel build (make -j). Fixes: bug #668.
authorTony Finch <dot@dot.at>
Thu, 14 Feb 2008 13:49:35 +0000 (13:49 +0000)
committerTony Finch <dot@dot.at>
Thu, 14 Feb 2008 13:49:35 +0000 (13:49 +0000)
doc/doc-txt/ChangeLog
src/Makefile
src/OS/Makefile-Base
src/src/auths/Makefile
src/src/lookups/Makefile
src/src/routers/Makefile
src/src/transports/Makefile

index 6c84133b4ed578089e702f5b4998ef89d3926c56..7963b581eac730a86ee44cf23f2dc0085a370098 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.544 2008/02/12 12:52:51 nm4 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.545 2008/02/14 13:49:35 fanf2 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -32,6 +32,7 @@ TF/03 Bugzilla 615: When checking the local_parts router precondition
 NM/05 Bugzilla 521: Integrated SPF Best Guess support contributed by
       Robert Millan.  Documentation is in experimental-spec.txt
 
+TF/04 Bugzilla 668: Fix parallel build (make -j).
 
 
 Exim version 4.69
index c1233fced619cdaceb3b1534ce80f8f6b6c20e68..cf7968db0f3a7e1c09ca03a0ada529767a0302d3 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/Makefile,v 1.4 2005/09/12 13:55:54 ph10 Exp $
+# $Cambridge: exim/src/Makefile,v 1.5 2008/02/14 13:49:35 fanf2 Exp $
 
 # Top-level makefile for Exim; handles creating a build directory with
 # appropriate links, and then creating and running the main makefile in that
@@ -27,7 +27,8 @@ buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`}
 # The default target checks for the existence of Local/Makefile, that the main
 # makefile is built and up-to-date, and then it runs it.
 
-all: Local/Makefile configure go
+all: Local/Makefile configure
+       @cd build-$(buildname); $(MAKE) SHELL=$(SHELL) $(MFLAGS)
 
 Local/Makefile:
        @echo ""
@@ -62,10 +63,6 @@ makefile: build-directory
        @cd build-$(buildname); $(RM_COMMAND) -f Makefile; \
          build=$(build) $(SHELL) ../scripts/Configure-Makefile
 
-# Go to the build directory and do the business
-
-go:; @cd build-$(buildname); $(MAKE) SHELL=$(SHELL) $(MFLAGS)
-
 # The installation commands are kept in a separate script, which expects
 # to be run from inside the build directory.
 
index f3d377676324e09b05f591efe048e9512cf41261..cc38cb1ee444544e1ab385d74d720aafe2a3b542 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/OS/Makefile-Base,v 1.14 2008/01/17 13:03:35 tom Exp $
+# $Cambridge: exim/src/OS/Makefile-Base,v 1.15 2008/02/14 13:49:35 fanf2 Exp $
 
 # This file is the basis of the main makefile for Exim and friends. The
 # makefile at the top level arranges to build the main makefile by calling
@@ -525,7 +525,7 @@ util-os.o:       $(HDRS) os.c
 # The local scan module depends only on its own special header, and is compiled
 # from a source whose location is set by configuration.
 
-local_scan.o:    Makefile local_scan.h ../$(LOCAL_SCAN_SOURCE)
+local_scan.o:    Makefile config.h local_scan.h ../$(LOCAL_SCAN_SOURCE)
        @echo "$(CC) local_scan.c"
        $(FE)$(CC) -c $(CFLAGS) -I. $(INCLUDE) -o local_scan.o ../$(LOCAL_SCAN_SOURCE)
 
@@ -634,22 +634,11 @@ $(MONBIN): $(HDRS)
                   ../exim_monitor/`echo $@ | sed 's/o$$/c/'`
 
 
-# Targets for the various libraries that Exim uses. This coding is tedious,
-# because different versions of "make" behave in different ways with regard
-# to rebuilding. If these target names are of the form pcre/libpcre.a, for
-# example, then a forcing mechanism is required to get them obeyed each time.
-# That's fine on Solaris and other systems; the rebuilding of the exim target
-# happens only if the libraries are actually rebuilt. However, on IRIX, if
-# the target is forced, the exim target gets unnecessarily rebuilt even if
-# the .a file is not. Contrariwise, if we use dummy names, they don't interact
-# with the building of exim (and eximon.bin), but for libpcre Exim doesn't get
-# rebuilt when it should. (For the others it does, because they remove
-# drtables.o when they rebuild.) To get round this, we forcibly remove the
-# binary when it needs to be rebuilt.
+# Targets for the various libraries that Exim uses.
 
 # The lookups library.
 
-buildlookups:
+buildlookups lookups/lookups.a: config.h
         @cd lookups; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
           FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
           INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) $(LOOKUP_INCLUDE)"; \
@@ -657,7 +646,7 @@ buildlookups:
 
 # The routers library.
 
-buildrouters:
+buildrouters routers/routers.a: config.h
         @cd routers; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
           FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
           INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
@@ -665,7 +654,7 @@ buildrouters:
 
 # The transports library.
 
-buildtransports:
+buildtransports transports/transports.a: config.h
         @cd transports; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
           FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
           INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
@@ -673,7 +662,7 @@ buildtransports:
 
 # The library of authorization modules
 
-buildauths:
+buildauths auths/auths.a: config.h
         @cd auths; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
           FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
           INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
index 3df035dd39dabcf00a1d2f690639fa8fee040b74..c26717ae9d43a0d1ca56f8ee4dfe3cf839cd8a8b 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/src/auths/Makefile,v 1.5 2006/10/16 15:44:36 ph10 Exp $
+# $Cambridge: exim/src/src/auths/Makefile,v 1.6 2008/02/14 13:49:35 fanf2 Exp $
 
 # Make file for building a library containing all the available authorization
 # methods, and calling it auths.a. In addition, there are functions that are
@@ -17,7 +17,6 @@ auths.a:         $(OBJ)
                 @echo "$(AR) auths.a"
                 $(FE)$(AR) auths.a $(OBJ)
                 $(RANLIB) $@
-                @$(RM_COMMAND) -rf ../drtables.o
 
 .SUFFIXES:       .o .c
 .c.o:;           @echo "$(CC) $*.c"
index f19679a06c914feae3cee64c18215f8738158491..48d208d0221aa7cabe2e0f28e5280cb3f662a0fc 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/src/lookups/Makefile,v 1.7 2007/09/28 12:21:57 tom Exp $
+# $Cambridge: exim/src/src/lookups/Makefile,v 1.8 2008/02/14 13:49:35 fanf2 Exp $
 
 # Make file for building a library containing all the available lookups and
 # calling it lookups.a. This is called from the main make file, after cd'ing
@@ -14,7 +14,6 @@ lookups.a:       $(OBJ)
                 @echo "$(AR) lookups.a"
                 @$(AR) lookups.a $(OBJ)
                 $(RANLIB) $@
-                @$(RM_COMMAND) -rf ../drtables.o
 
 .SUFFIXES:       .o .c
 .c.o:;           @echo "$(CC) $*.c"
index 637122b1d75991a6278b1193c671f7b9aa61da01..54e6ec989a26109bce0c6d707c77e18539b8a5e7 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/src/routers/Makefile,v 1.3 2005/09/12 13:50:03 ph10 Exp $
+# $Cambridge: exim/src/src/routers/Makefile,v 1.4 2008/02/14 13:49:35 fanf2 Exp $
 
 # Make file for building a library containing all the available routers and
 # calling it routers.a. This is called from the main make file, after cd'ing
@@ -18,7 +18,6 @@ routers.a:       $(OBJ)
                 @echo "$(AR) routers.a"
                 @$(AR) routers.a $(OBJ)
                 $(RANLIB) $@
-                @$(RM_COMMAND) -rf ../drtables.o
 
 .SUFFIXES:       .o .c
 .c.o:;           @echo "$(CC) $*.c"
index 2cbeb7c50e8702ec87e111bd2c9a71304ddb8a1d..dff6a3686a22a6eec6adcc239bd779da3194853b 100644 (file)
@@ -1,4 +1,4 @@
-# $Cambridge: exim/src/src/transports/Makefile,v 1.3 2005/09/12 13:50:04 ph10 Exp $
+# $Cambridge: exim/src/src/transports/Makefile,v 1.4 2008/02/14 13:49:35 fanf2 Exp $
 
 # Make file for building a library containing all the available transports and
 # calling it transports.a. This is called from the main make file, after cd'ing
@@ -11,7 +11,6 @@ transports.a:    $(OBJ)
                 @echo "$(AR) transports.a"
                 @$(AR) transports.a $(OBJ)
                 $(RANLIB) $@
-                @$(RM_COMMAND) -rf ../drtables.o
 
 .SUFFIXES:       .o .c
 .c.o:;           @echo "$(CC) $*.c"