bug-automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: parallel make and the maintainer GNUmakefile


From: Ralf Wildenhues
Subject: Re: parallel make and the maintainer GNUmakefile
Date: Sun, 22 Mar 2009 09:54:21 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

* Ralf Wildenhues wrote on Sat, Mar 14, 2009 at 01:22:56PM CET:
>     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).

Since this patch has been applied to gnulib, it remains, to add a
suitable definition of AM_RECURSIVE_TARGETS to Automake.  I'm adding the
following to the master branch.

I still owe suitable documentation for this in both Automake and gnulib.

Cheers,
Ralf

2009-03-22  Ralf Wildenhues  <address@hidden>

        Define AM_RECURSIVE_TARGETS, for gnulib's GNUmakefile.
        This new macro lists all public targets which invoke `make'
        recursively, or depend on targets which do so.  It allows to
        prevent parallelism selectively, when multiple targets are
        passed on the `make' command line.
        * lib/am/distdir.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS): New
        macro.
        * lib/am/subdirs.am (AM_RECURSIVE_TARGETS): Likewise.
        * lib/am/tags.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS):
        Likewise.

diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index 3bf76af..f7113e2 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -64,6 +64,10 @@ am__relativize = \
 endif %?SUBDIRS%
 
 .PHONY: distdir
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += distdir
+endif %?SUBDIRS%
+
 distdir: $(DISTFILES)
 ##
 ## For Gnits users, this is pretty handy.  Look at 15 lines
@@ -381,6 +385,10 @@ endif %?TOPDIR_P%
 if %?TOPDIR_P%
 
 .PHONY: dist dist-all
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += dist dist-all
+endif %?SUBDIRS%
+
 dist dist-all: distdir
 ?GZIP? tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c 
>$(distdir).tar.gz
 ?BZIP2?        tardir=$(distdir) && $(am__tar) | bzip2 -9 -c 
>$(distdir).tar.bz2
@@ -401,6 +409,10 @@ endif %?TOPDIR_P%
 
 
 if %?TOPDIR_P%
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += distcheck
+endif %?SUBDIRS%
+
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
 # tarfile.
diff --git a/lib/am/subdirs.am b/lib/am/subdirs.am
index 1888042..7fbb09e 100644
--- a/lib/am/subdirs.am
+++ b/lib/am/subdirs.am
@@ -1,6 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
 ## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003,
-## 2004, 2008 Free Software Foundation, Inc.
+## 2004, 2008, 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
@@ -18,6 +18,10 @@
 RECURSIVE_TARGETS += all-recursive check-recursive installcheck-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
+## All documented targets which invoke `make' recursively, or depend
+## on targets that do so.
+AM_RECURSIVE_TARGETS += $(RECURSIVE_TARGETS:-recursive=) \
+  $(RECURSIVE_CLEAN_TARGETS:-recursive=)
 
 .PHONY: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS)
 .MAKE: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS)
diff --git a/lib/am/tags.am b/lib/am/tags.am
index a654ec8..1eabe58 100644
--- a/lib/am/tags.am
+++ b/lib/am/tags.am
@@ -37,6 +37,9 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 
 ETAGS = etags
 .PHONY: tags
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += tags TAGS
+endif %?SUBDIRS%
 tags: TAGS
 
 TAGS: %TAGSDIRS% $(HEADERS) $(SOURCES) %CONFIG% $(TAGS_DEPENDENCIES) \
@@ -96,6 +99,9 @@ TAGS: %TAGSDIRS% $(HEADERS) $(SOURCES) %CONFIG% 
$(TAGS_DEPENDENCIES) \
 
 CTAGS = ctags
 .PHONY: CTAGS ctags
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += ctags CTAGS
+endif %?SUBDIRS%
 ctags: CTAGS
 
 ## We have a dummy name here because `tags' has already been in use




reply via email to

[Prev in Thread] Current Thread [Next in Thread]