Matching a $$tst against $(XFAIL_TESTS) currently fails in a VPATH build with Solaris make due to the rewriting, which is not done on the first and last element of $$list, because those words of $(TESTS) do not stand alone in the initialization ("are not plain words", in autoconf.texi lingo). Output with the change to check6.test below:
[...] | make check-TESTS | FAIL: a | XFAIL: ../b | FAIL: c instead of the expected: [...] | make check-TESTS | XFAIL: ../a | XFAIL: ../b | XFAIL: ../c | ===================================================== | All 3 tests behaved as expected (3 expected failures) | ===================================================== The patch below to check.am fixes that. However, maybe you prefer that the output for the user be srcdir-stripped, so it behaves as with "normal" make implementations: | make check-TESTS | XFAIL: a | XFAIL: b | XFAIL: c | ===================================================== | All 3 tests behaved as expected (3 expected failures) | ===================================================== Should I change the patch to this end (and update the test), or OK to apply as below? FWIW, I've glanced over lib/am/*.am but not found more instances of the first bug. FWIW2, the AC_FC_SRCEXT patch I posted yesterday is (at least) somewhat broken; I'll post an update, including tests. Cheers, Ralf * lib/am/check.am (check-TESTS): Fix matching of XFAIL_TESTS against currently running test for the first and last element of $(TESTS): add spacing so Solaris make does VPATH expansion on these words, too. * tests/check6.test: Update. Index: lib/am/check.am =================================================================== RCS file: /cvs/automake/automake/lib/am/check.am,v retrieving revision 1.7 diff -u -r1.7 check.am --- lib/am/check.am 19 Apr 2006 16:41:32 -0000 1.7 +++ lib/am/check.am 31 Aug 2006 16:35:37 -0000 @@ -21,7 +21,9 @@ check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ +## Make sure Solaris VPATH-expands all members of this list, even +## the first and the last one; thus the spaces around $(TESTS) + list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ Index: tests/check6.test =================================================================== RCS file: /cvs/automake/automake/tests/check6.test,v retrieving revision 1.1 diff -u -r1.1 check6.test --- tests/check6.test 19 Apr 2006 16:41:32 -0000 1.1 +++ tests/check6.test 31 Aug 2006 16:35:37 -0000 @@ -19,6 +19,7 @@ # Boston, MA 02110-1301, USA. # Test for PR 400: XFAIL_TESTS delimited by TABs. +# Also test that Solaris make VPATH rewriting is honored . ./defs || exit 1 @@ -50,3 +51,8 @@ ./configure $MAKE check +$MAKE distclean +mkdir build +cd build +../configure +$MAKE check