From: Tony Finch Date: Thu, 14 Feb 2008 13:49:35 +0000 (+0000) Subject: Fix parallel build (make -j). Fixes: bug #668. X-Git-Tag: DEVEL_PDKIM_START~56 X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=commitdiff_plain;h=23510047606339a2fd8433d0542145445b60ff78 Fix parallel build (make -j). Fixes: bug #668. --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 6c84133b4..7963b581e 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -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 diff --git a/src/Makefile b/src/Makefile index c1233fced..cf7968db0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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. diff --git a/src/OS/Makefile-Base b/src/OS/Makefile-Base index f3d377676..cc38cb1ee 100644 --- a/src/OS/Makefile-Base +++ b/src/OS/Makefile-Base @@ -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)"; \ diff --git a/src/src/auths/Makefile b/src/src/auths/Makefile index 3df035dd3..c26717ae9 100644 --- a/src/src/auths/Makefile +++ b/src/src/auths/Makefile @@ -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" diff --git a/src/src/lookups/Makefile b/src/src/lookups/Makefile index f19679a06..48d208d02 100644 --- a/src/src/lookups/Makefile +++ b/src/src/lookups/Makefile @@ -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" diff --git a/src/src/routers/Makefile b/src/src/routers/Makefile index 637122b1d..54e6ec989 100644 --- a/src/src/routers/Makefile +++ b/src/src/routers/Makefile @@ -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" diff --git a/src/src/transports/Makefile b/src/src/transports/Makefile index 2cbeb7c50..dff6a3686 100644 --- a/src/src/transports/Makefile +++ b/src/src/transports/Makefile @@ -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"