maint: Update HACKING
[automake.git] / t / warnopts.sh
blob003e44ef6c24b341ec9b45f9bf46ea4ce09bc3d8
1 #! /bin/sh
2 # Copyright (C) 2002-2017 Free Software Foundation, Inc.
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.
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.
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/>.
17 # Make sure that we can enable or disable warnings on a per-file basis.
19 . test-init.sh
21 cat >>configure.ac <<END
22 AC_CONFIG_FILES([sub/Makefile])
23 AC_OUTPUT
24 END
26 mkdir sub
28 # These two Makefile contain the same errors, but have different
29 # warnings disabled.
31 cat >Makefile.am <<END
32 AUTOMAKE_OPTIONS = -Wno-obsolete
33 INCLUDES = -Ifoo
34 foo_SOURCES = unused
35 SUBDIRS = sub
36 END
38 cat >sub/Makefile.am <<END
39 AUTOMAKE_OPTIONS = -Wno-syntax
40 INCLUDES = -Ifoo
41 foo_SOURCES = unused
42 END
44 $ACLOCAL
45 AUTOMAKE_fails
46 # The expected diagnostic is
47 # Makefile.am:3: warning: variable 'foo_SOURCES' is defined but no program or
48 # library has 'foo' as canonical name (possible typo)
49 # sub/Makefile.am:2: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS'
50 grep '^Makefile.am:.*foo_SOURCES' stderr
51 grep '^sub/Makefile.am:.*INCLUDES' stderr
52 grep '^sub/Makefile.am:.*foo_SOURCES' stderr && exit 1
53 grep '^Makefile.am:.*INCLUDES' stderr && exit 1
54 # Only three lines of warnings.
55 test $(grep -v 'warnings are treated as errors' stderr | wc -l) -eq 3
57 # On fast machines the autom4te.cache created during the above run of
58 # $AUTOMAKE is likely to have the same time stamp as the configure.ac
59 # created below; thus causing traces for the old configure.ac to be
60 # used. We could do '$sleep', but it's faster to erase the
61 # directory. (Erase autom4te*.cache, not autom4te.cache, because some
62 # bogus installations of Autoconf use a versioned cache).
63 rm -rf autom4te*.cache
65 # If we add a global -Wnone, all warnings should disappear.
66 cat >configure.ac <<END
67 AC_INIT([warnopts], [1.0])
68 AM_INIT_AUTOMAKE([-Wnone])
69 AC_CONFIG_FILES([Makefile sub/Makefile])
70 AC_OUTPUT
71 END
72 $ACLOCAL
73 $AUTOMAKE