about summary refs log tree commit diff
path: root/GNUmakefile
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-09-24 17:43:33 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-09-24 17:43:33 +0000
commitdfca97b2fb4638ee07e8db5e26c62cd8668bfc0b (patch)
tree281808a6860c90d531036f11812b7fedb31fc7a5 /GNUmakefile
parentb4d1d96884260e76d0cdb78ee16dd7375f0a4e54 (diff)
downloadnetpbm-mirror-dfca97b2fb4638ee07e8db5e26c62cd8668bfc0b.tar.gz
netpbm-mirror-dfca97b2fb4638ee07e8db5e26c62cd8668bfc0b.tar.xz
netpbm-mirror-dfca97b2fb4638ee07e8db5e26c62cd8668bfc0b.zip
Make parallel make work
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@733 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile15
1 files changed, 14 insertions, 1 deletions
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