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