summaryrefslogtreecommitdiff
path: root/t/cond5.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/cond5.sh')
-rwxr-xr-xt/cond5.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/t/cond5.sh b/t/cond5.sh
new file mode 100755
index 000000000..dd45678e9
--- /dev/null
+++ b/t/cond5.sh
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another sources-in-conditional test. Report from Tim Goodwin.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([ONE], [true])
+AM_CONDITIONAL([TWO], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = targ
+
+if ONE
+OPT_SRC = one.c
+endif
+
+if TWO
+OPT_SRC = $(OPT_SRC) two.c
+endif
+
+targ_SOURCES = main.c $(OPT_SRC)
+END
+
+# The bug is that automake hangs. So we give it an appropriate grace
+# time, then kill it if necessary.
+$ACLOCAL
+$AUTOMAKE 2>stderr &
+pid=$!
+
+# MSYS bash seems to have a bug in kill, so don't try to kill too soon;
+# and avoid maintainer-check test.
+sleep '2'
+
+# Make at most 30 tries, one every 10 seconds (= 300 seconds = 5 min).
+try=1
+while test $try -le 30; do
+ if kill -0 $pid; then
+ : process $pid is still alive, wait and retry
+ sleep '10'
+ try=`expr $try + 1`
+ else
+ cat stderr >&2
+ # Automake must fail with a proper error message.
+ grep 'variable.*OPT_SRC.*recursively defined' stderr
+ Exit 0
+ fi
+done
+# The automake process probably hung. Kill it, and exit with failure.
+echo "$me: automake process $pid hung"
+kill $pid
+Exit 1