From dfca97b2fb4638ee07e8db5e26c62cd8668bfc0b Mon Sep 17 00:00:00 2001 From: giraffedata Date: Wed, 24 Sep 2008 17:43:33 +0000 Subject: Make parallel make work git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@733 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- GNUmakefile | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'GNUmakefile') diff --git a/GNUmakefile b/GNUmakefile index 33a01b43..bb9db4fe 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -59,7 +59,8 @@ VPATH=.:$(SRCDIR) include $(BUILDDIR)/Makefile.config -PRODUCT_SUBDIRS = lib converter analyzer editor generator other +PROG_SUBDIRS = converter analyzer editor generator other +PRODUCT_SUBDIRS = lib $(PROG_SUBDIRS) SUPPORT_SUBDIRS = urt buildtools SUBDIRS = $(PRODUCT_SUBDIRS) $(SUPPORT_SUBDIRS) @@ -87,6 +88,18 @@ all: nonmerge .PHONY: nonmerge nonmerge: $(PRODUCT_SUBDIRS:%=%/all) +# Parallel make (make --jobs) is not smart enough to coordinate builds +# between submakes, so a naive parallel make would cause certain +# targets to get built multiple times simultaneously. That is usually +# unacceptable. So we introduce extra dependencies here just to make +# sure such targets are already up to date before the submake starts, +# for the benefit of parallel make. Note that we ensure that parallel +# make works for 'make all' in the top directory, but it may still fail +# for the aforementioned reason for other invocations. + +$(SUBDIRS:%=%/all): pm_config.h inttypes_netpbm.h version.h +$(PROG_SUBDIRS:%=%/all): lib/all $(SUPPORT_SUBDIRS:%=%/all) + OMIT_CONFIG_RULE = 1 OMIT_VERSION_H_RULE = 1 OMIT_INTTYPES_RULE = 1 -- cgit 1.4.1