summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>2009-04-09 00:16:35 +0200
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>2009-04-09 00:16:35 +0200
commit1692795d705d8c9f2dd6119122995bc62fb2ce7c (patch)
treed68a2168fed9a616008f6f47d0d246742e4bd077
parentb9d841f78fa84ceb347abeaaade069f12d150abb (diff)
downloadautomake-1692795d705d8c9f2dd6119122995bc62fb2ce7c.tar.gz
parallel-tests: Fix driver for nonempty executable extension.
* automake.in (handle_tests): New substitution `%am__EXEEXT%', defined as 'FALSE' for non-generic rules, or if no programs are built at all. Otherwise, define it as configure conditional. * lib/am/check2.am [%am__EXEEXT%] (%EXT%$(EXEEXT).log): New conditional generic rule. * m4/init.m4: Hook an m4_provide of `_AM_COMPILER_EXEEXT' onto Autoconf's `_AC_COMPILER_EXEEXT' macro. (AM_INIT_AUTOMAKE): If `_AM_COMPILER_EXEEXT' has been provided at `AC_CONFIG_COMMANDS_PRE' time, then introduce a conditional `am__EXEEXT', defined to true iff `$EXEEXT' is nonempty. * tests/check5.test: Only match `_EXEEXT_[1-9]' here, to avoid false positives stemming from `@am__EXEEXT_TRUE@'. * NEWS: Update. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-rw-r--r--ChangeLog18
-rw-r--r--NEWS5
-rwxr-xr-xautomake.in12
-rwxr-xr-xconfigure1
-rw-r--r--lib/am/check2.am9
-rw-r--r--m4/init.m414
-rwxr-xr-xtests/check5.test4
7 files changed, 56 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 948ed5839..8f4b36c46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,22 @@
2009-04-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ Eric Blake <ebb9@byu.net>
+
+ parallel-tests: Fix driver for nonempty executable extension.
+ * automake.in (handle_tests): New substitution `%am__EXEEXT%',
+ defined as 'FALSE' for non-generic rules, or if no programs are
+ built at all. Otherwise, define it as configure conditional.
+ * lib/am/check2.am [%am__EXEEXT%] (%EXT%$(EXEEXT).log): New
+ conditional generic rule.
+ * m4/init.m4: Hook an m4_provide of `_AM_COMPILER_EXEEXT' onto
+ Autoconf's `_AC_COMPILER_EXEEXT' macro.
+ (AM_INIT_AUTOMAKE): If `_AM_COMPILER_EXEEXT' has been provided
+ at `AC_CONFIG_COMMANDS_PRE' time, then introduce a conditional
+ `am__EXEEXT', defined to true iff `$EXEEXT' is nonempty.
+ * tests/check5.test: Only match `_EXEEXT_[1-9]' here, to avoid
+ false positives stemming from `@am__EXEEXT_TRUE@'.
+ * NEWS: Update.
+
+2009-04-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Fix a couple of $(EXEEXT)-related testsuite failure.
* tests/check8.test: Allow executable extensions in test suite
diff --git a/NEWS b/NEWS
index cb1103582..cf01518e8 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,11 @@ Bugs fixed in 1.10c:
- Renamed objects also work with the `subdir-objects' option and
source file languages which Automake does not know itself.
+* Bugs introduced by 1.10:
+
+ - The `parallel-tests' driver also works on systems with a nonempty
+ executable extension, such as Windows.
+
New in 1.10b:
diff --git a/automake.in b/automake.in
index 2577ffbcc..10927a1fe 100755
--- a/automake.in
+++ b/automake.in
@@ -4912,7 +4912,8 @@ sub handle_tests
define_variable ('TEST_SUITE_HTML', '$(TEST_SUITE_LOG:.log=.html)', INTERNAL);
my $suff = '.test';
my $at_exeext = '';
- if (exists $configure_vars{'EXEEXT'})
+ my $handle_exeext = exists $configure_vars{'EXEEXT'};
+ if ($handle_exeext)
{
$at_exeext = subst ('EXEEXT');
$suff = $at_exeext . ' ' . $suff;
@@ -4920,7 +4921,7 @@ sub handle_tests
define_variable ('TEST_EXTENSIONS', $suff, INTERNAL);
# FIXME: this mishandles conditions.
my @test_suffixes = (var 'TEST_EXTENSIONS')->value_as_list_recursive;
- if (exists $configure_vars{'EXEEXT'})
+ if ($handle_exeext)
{
unshift (@test_suffixes, $at_exeext)
unless $test_suffixes[0] eq $at_exeext;
@@ -4958,7 +4959,8 @@ sub handle_tests
OBJ => $obj,
SOURCE => $val,
COMPILE =>'$(' . $compile . ')',
- EXT => '');
+ EXT => '',
+ am__EXEEXT => 'FALSE');
return $obj;
});
@@ -4990,12 +4992,14 @@ sub handle_tests
define_variable ($compile,
'$(' . $ext . '_LOG_COMPILER) $(AM_' . $ext . '_LOG_FLAGS)'
. ' $(' . $ext . '_LOG_FLAGS)', INTERNAL);
+ my $am_exeext = $handle_exeext ? 'am__EXEEXT' : 'FALSE';
$output_rules .= file_contents ('check2', new Automake::Location,
GENERIC => 1,
OBJ => '',
SOURCE => '$<',
COMPILE => '$(' . $compile . ')',
- EXT => $test_suffix);
+ EXT => $test_suffix,
+ am__EXEEXT => $am_exeext);
}
}
diff --git a/configure b/configure
index caf5adaee..15ad6fd89 100755
--- a/configure
+++ b/configure
@@ -2961,6 +2961,7 @@ LTLIBOBJS=$ac_ltlibobjs
+
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
diff --git a/lib/am/check2.am b/lib/am/check2.am
index 237e20aa8..3e9eed222 100644
--- a/lib/am/check2.am
+++ b/lib/am/check2.am
@@ -18,3 +18,12 @@
?GENERIC?%EXT%.log:
?!GENERIC?%OBJ%: %SOURCE%
@p='%SOURCE%'; $(am__check_pre) %COMPILE% "$$tst" $(am__check_post)
+
+## If no programs are built in this package, then this rule is removed
+## at automake time. Otherwise, %am__EXEEXT% expands to a configure time
+## conditional, true if $(EXEEXT) is nonempty, thus this rule does not
+## conflict with the previous one.
+if %am__EXEEXT%
+?GENERIC?%EXT%$(EXEEXT).log:
+ @p='%SOURCE%'; $(am__check_pre) %COMPILE% "$$tst" $(am__check_post)
+endif %am__EXEEXT%
diff --git a/m4/init.m4 b/m4/init.m4
index a4d5c9058..597850273 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -7,7 +7,7 @@
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 15
+# serial 16
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
@@ -103,8 +103,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
diff --git a/tests/check5.test b/tests/check5.test
index 58c860714..e2e0210df 100755
--- a/tests/check5.test
+++ b/tests/check5.test
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2007, 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
@@ -52,6 +52,6 @@ test -f ok
EXEEXT=.bin $MAKE -e print-tests >output
cat output
# No am__EXEEXT_* variable is needed.
-grep '_EXEEXT' Makefile.in && Exit 1
+grep '_EXEEXT_[1-9]' Makefile.in && Exit 1
grep 'BEG: one.bin two.bin :END' output
$FGREP 'TESTS = $(check_PROGRAMS)' Makefile.in