+2009-03-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ GNUmakefile: disable parallelism only for multiple, recursive targets
+ * top/GNUmakefile (ALL_RECURSIVE_TARGETS): New macro; allow user
+ additions in the Makefile.
+ (AM_RECURSIVE_TARGETS): New macro, override only if not provided
+ by Automake.
+ (.NOTPARALLEL): Only disable parallel builds if multiple targets
+ are listed on the command line and at least one of them is
+ listed in $(ALL_RECURSIVE_TARGETS).
+
2009-03-14 Bruno Haible <bruno@clisp.org>
* modules/unilbrk/u8-possible-linebreaks (Depends-on): Replace
# It is necessary if you want to build targets usually of interest
# only to the maintainer.
-# Copyright (C) 2001, 2003, 2006-2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2006-2009 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Make tar archive easier to reproduce.
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+# Allow the user to add to this in the Makefile.
+ALL_RECURSIVE_TARGETS =
+
include Makefile
# Some projects override e.g., _autoreconf here.
endif
# Tell version 3.79 and up of GNU make to not build goals in this
-# directory in parallel. This is necessary in case someone tries to
-# build multiple targets on one command line.
+# directory in parallel, in case someone tries to build multiple
+# targets, and one of them can cause a recursive target to be invoked.
+
+# Only set this if Automake doesn't provide it.
+AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) \
+ dist distcheck tags ctags
+
+ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
+
+ifneq ($(word 2, $(MAKECMDGOALS)), )
+ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
.NOTPARALLEL:
+endif
+endif