summaryrefslogtreecommitdiff
path: root/t/subdir-keep-going-pr12554.sh
blob: c5650116befb7ea06489250813927efa17edcd15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#! /bin/sh
# Copyright (C) 2013-2018 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 <https://www.gnu.org/licenses/>.

# Check that the Automake-generated recursive rules are resilient against
# false positives in deciding whether make is running with the '-k'
# option, and thus whether a failure into one of the $(SUBDIRS) should
# still prevent recursion in the following $(SUBDIRS) entries.  See
# automake bug#12544.

. test-init.sh

echo nil: | $MAKE -I . -f - || skip_ "$MAKE doesn't support the -I option"

cat >> configure.ac <<'END'
AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
AC_OUTPUT
END

mkdir k ./--keep-going sub1 sub2

cat > Makefile.am <<'END'
SUBDIRS = sub1 sub2
END

cat > sub1/Makefile.am <<'END'
all-local:
	touch ko
	false
END
cat > sub2/Makefile.am <<'END'
all-local:
	test -f ../sub1/ko
	touch ok
END

$ACLOCAL
$AUTOCONF
$AUTOMAKE
./configure

st=0
$MAKE -I k -I --keep-going \
  TESTS='k --keep-going -k' AM_MAKEFLAGS="TESTS='k --keep-going -k'" \
  || st=$?
# Don't trust the exit status of "make -k" for non-GNU make.
if using_gmake; then
  test $st -gt 0 || exit 1
fi
test ! -r sub2/ok

# Sanity check.
st=0; $MAKE -k || st=$?
if { using_gmake && test $st -eq 0; } || test ! -f sub2/ok; then
  fatal_ '"make -k" not working as expected'
fi

: