#! /bin/sh
# Copyright (C) 2002-2017 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/>.

# Make sure that we can enable or disable warnings on a per-file basis.

. test-init.sh

cat >>configure.ac <<END
AC_CONFIG_FILES([sub/Makefile])
AM_CONDITIONAL([COND_FALSE], [false])
AC_OUTPUT
END

mkdir sub

# These two Makefile contain the same errors, but have different
# warnings disabled.

cat > Makefile.am << 'END'
AUTOMAKE_OPTIONS = -Wno-unsupported
if COND_FALSE
AUTOMAKE_OPTIONS += no-dependencies
endif
foo_SOURCES = unused
SUBDIRS = sub
END

cat > sub/Makefile.am << 'END'
AUTOMAKE_OPTIONS = -Wno-syntax
if COND_FALSE
AUTOMAKE_OPTIONS += no-dependencies
endif
foo_SOURCES = unused
END

$ACLOCAL
AUTOMAKE_fails
# The expected diagnostic is
#   automake: warnings are treated as errors
#   Makefile.am:5: warning: variable 'foo_SOURCES' is defined but no program or
#   Makefile.am:5: library has 'foo' as canonical name (possible typo)
#   sub/Makefile.am:1: warning: 'AUTOMAKE_OPTIONS' cannot have conditional contents
grep '^Makefile.am:.*foo_SOURCES' stderr
grep '^sub/Makefile.am:.*AUTOMAKE_OPTIONS' stderr
grep '^sub/Makefile.am:.*foo_SOURCES' stderr && exit 1
grep '^Makefile.am:.*AUTOMAKE_OPTIONS' stderr && exit 1
# Only three lines of warnings.
test $(grep -v 'warnings are treated as errors' stderr | wc -l) = 3

rm -rf autom4te*.cache

# If we add a global -Wnone, all warnings should disappear.
sed 's/^AM_INIT_AUTOMAKE/AM_INIT_AUTOMAKE([-Wnone])/' configure.ac > t
mv -f t configure.ac
$ACLOCAL
$AUTOMAKE

:
