1#! /bin/sh
2# Copyright (C) 1998-2021 Free Software Foundation, Inc.
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2, or (at your option)
7# any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program.  If not, see <https://www.gnu.org/licenses/>.
16
17# Yet another sources-in-conditional test.  Report from Tim Goodwin.
18
19. test-init.sh
20
21cat >> configure.ac << 'END'
22AC_PROG_CC
23AM_CONDITIONAL([ONE], [true])
24AM_CONDITIONAL([TWO], [false])
25AC_OUTPUT
26END
27
28cat > Makefile.am << 'END'
29bin_PROGRAMS = targ
30
31if ONE
32OPT_SRC = one.c
33endif
34
35if TWO
36OPT_SRC = $(OPT_SRC) two.c
37endif
38
39targ_SOURCES = main.c $(OPT_SRC)
40END
41
42# The bug is that automake hangs.  So we give it an appropriate grace
43# time, then kill it if necessary.
44$ACLOCAL
45$AUTOMAKE 2>stderr &
46pid=$!
47
48# MSYS bash seems to have a bug in kill, so don't try to kill too soon.
49# The extra quoting avoids a maintainer-check failure.
50sleep '2'
51
52# Make at most 30 tries, one every 10 seconds (= 300 seconds = 5 min).
53try=1
54while test $try -le 30; do
55  if kill -0 $pid; then
56    : process $pid is still alive, wait and retry
57    sleep '10'
58    try=$(($try + 1))
59  else
60    cat stderr >&2
61    # Automake must fail with a proper error message.
62    grep 'variable.*OPT_SRC.*recursively defined' stderr
63    exit 0
64  fi
65done
66# The automake process probably hung.  Kill it, and exit with failure.
67echo "$me: Automake process $pid hung"
68kill $pid
69exit 1
70