+2007-03-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * automake.in (handle_tests): Rewrite XFAIL_TESTS just like
+ TESTS, appending $(EXEEXT), so that matching continues to work
+ on w32.
+ * NEWS: Mention this.
+ * doc/automake.texi (EXEEXT, Extending): Update.
+ * tests/check7.test: New test.
+ * tests/Makefile.am: Adjust.
+ Bug report by Ed Hartnett.
+
2007-03-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Again search
- Fix output of dummy dependency files in presence of post-processed
Makefile.in's again, but also cope with long lines.
+
+ - $(EXEEXT) is automatically appended to filenames of XFAIL_TESTS
+ that have been declared as programs in the same Makefile.
+ This is for consistency with the analogous change to TESTS in 1.10.
\f
New in 1.10:
$output_rules .= &file_contents ('check', new Automake::Location);
# Tests that are known programs should have $(EXEEXT) appended.
+ # For matching purposes, we need to adjust XFAIL_TESTS as well.
append_exeext { exists $known_programs{$_[0]} } 'TESTS';
+ append_exeext { exists $known_programs{$_[0]} } 'XFAIL_TESTS'
+ if (var ('XFAIL_TESTS'));
}
}
Makefiles from template files.
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
The targets Automake generates are likewise given the @samp{$(EXEEXT)}
extension.
-The variable @code{TESTS} (@pxref{Tests}) is also rewritten if it
-contains filenames that have been declared as programs in the same
-@file{Makefile}. (This is mostly useful when some programs from
-@code{check_PROGRAMS} are listed in @code{TESTS}.)
+The variables @code{TESTS}, @code{XFAIL_TESTS} (@pxref{Tests}) are also
+rewritten if it contains filenames that have been declared as programs
+in the same @file{Makefile}. (This is mostly useful when some programs
+from @code{check_PROGRAMS} are listed in @code{TESTS}.)
However, Automake cannot apply this rewriting to @command{configure}
substitutions. This means that if you are conditionally building a
@node Extending
@section Extending Automake Rules
-With some minor exceptions (like @code{_PROGRAMS} variables being
-rewritten to append @samp{$(EXEEXT)}), the contents of a
-@file{Makefile.am} is copied to @file{Makefile.in} verbatim.
+With some minor exceptions (like @code{_PROGRAMS} variables, @code{TESTS},
+or @code{XFAIL_TESTS}) being rewritten to append @samp{$(EXEEXT)}), the
+contents of a @file{Makefile.am} is copied to @file{Makefile.in} verbatim.
@cindex copying semantics
-@set UPDATED 27 January 2007
-@set UPDATED-MONTH January 2007
+@set UPDATED 30 March 2007
+@set UPDATED-MONTH March 2007
@set EDITION 1.10a
@set VERSION 1.10a
-@set UPDATED 27 January 2007
-@set UPDATED-MONTH January 2007
+@set UPDATED 30 March 2007
+@set UPDATED-MONTH March 2007
@set EDITION 1.10a
@set VERSION 1.10a
check4.test \
check5.test \
check6.test \
+check7.test \
checkall.test \
clean.test \
clean2.test \
check4.test \
check5.test \
check6.test \
+check7.test \
checkall.test \
clean.test \
clean2.test \
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2007 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., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Check EXEEXT extension for XFAIL_TESTS.
+
+. ./defs || exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = $(XFAIL_TESTS)
+XFAIL_TESTS = a b c d
+check_PROGRAMS = a c d
+check_SCRIPTS = b
+
+print-xfail-tests:
+ @echo BEG: $(XFAIL_TESTS) :END
+END
+
+cat >>b <<'END'
+#! /bin/sh
+exit 1
+END
+chmod a+x b
+
+cat >>a.c <<'END'
+#include <stdlib.h>
+int main() { return EXIT_FAILURE; }
+END
+
+cp a.c c.c
+cp a.c d.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+EXEEXT=.bin $MAKE -e print-xfail-tests >foo
+cat foo
+grep 'BEG: a.bin b c.bin d.bin :END' foo
+
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE check