Eric == Eric Blake [EMAIL PROTECTED] writes:
Eric `info make' also has a page dedicated to Phony Targets
Eric that discusses the more portable way to have a recursive
Eric target,
Not really: this only describes how one can setup recursive
targets with GNU make. Option -C is neither portable nor
standard.
How about the following patch to Automake?
The very last paragraph of check4.test shows how I was able to
reproduce the problem with GNU make (without cygwin
modifications).
2005-01-15 Alexandre Duret-Lutz [EMAIL PROTECTED]
* lib/am/subdirs.am ($(RECURSIVE_TARGETS), mostlyclean-recursive,
clean-recursive, distclean-recursive, maintainer-clean-recursive):
Process all words of $MAKEFLAGS when checking for -k.
* tests/check4.test: New file.
* tests/Makefile.am (TESTS): Add check4.test.
Report from Eric Blake.
Index: lib/am/subdirs.am
===
RCS file: /cvs/automake/automake/lib/am/subdirs.am,v
retrieving revision 1.56
diff -u -r1.56 subdirs.am
--- lib/am/subdirs.am 6 Jul 2003 19:30:46 - 1.56
+++ lib/am/subdirs.am 15 Jan 2005 13:23:12 -
@@ -1,5 +1,5 @@
## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
+## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2005
## Free Software Foundation, Inc.
## This program is free software; you can redistribute it and/or modify
@@ -30,7 +30,15 @@
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+## Using $failcom allows -k to keep its natural meaning when running a
+## recursive rule.
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -42,9 +50,7 @@
local_target=$$target; \
fi; \
(cd $$subdir $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-## This trick allows -k to keep its natural meaning when running a
-## recursive rule.
- || case $$amf in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test $$dot_seen = no; then \
$(MAKE) $(AM_MAKEFLAGS) $$target-am || exit 1; \
@@ -67,7 +73,15 @@
## bombs.
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+## Using $failcom allows -k to keep its natural meaning when running a
+## recursive rule.
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
## For distclean and maintainer-clean we make sure to use the full
## list of subdirectories. We do this so that `configure; make
@@ -93,7 +107,5 @@
local_target=$$target; \
fi; \
(cd $$subdir $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-## This trick allows -k to keep its natural meaning when running a
-## recursive rule.
- || case $$amf in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done test -z $$fail
Index: tests/Makefile.am
===
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.565.2.11
diff -u -r1.565.2.11 Makefile.am
--- tests/Makefile.am 1 Jan 2005 14:00:43 - 1.565.2.11
+++ tests/Makefile.am 15 Jan 2005 13:23:12 -
@@ -74,6 +74,7 @@
check.test \
check2.test \
check3.test \
+check4.test \
checkall.test \
clean.test \
clean2.test \
Index: tests/check4.test
===
RCS file: tests/check4.test
diff -N tests/check4.test
--- /dev/null 1 Jan 1970 00:00:00 -
+++ tests/check4.test 15 Jan 2005 13:23:12 -
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2005 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple