]> sourceware.org Git - automake.git/commitdiff
* automake.in (%silent_variable_override): New variable.
authorAlexandre Duret-Lutz <adl@gnu.org>
Mon, 14 Apr 2003 19:13:14 +0000 (19:13 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Mon, 14 Apr 2003 19:13:14 +0000 (19:13 +0000)
(macro_define): Warn about variable definitions overriding
Automake variables.
(rule_define): Warn about target definitions overriding
Automake variables.  Fix $condmsg definition.
* automake.texi (Invoking Automake): Document the `override'
category.
* lib/Automake/ChannelDefs.pm (usage): Likewise.
* lib/am/texinfos.am [!%?CYGNUS] (MAKEINFO): Do not define,
this is already done in m4/init.m4.
* tests/dejagnu2.test: Run $MAKE, don't only grep.  Use
-Wno-override, and make sure we get a warning without.
* tests/exeext2.test, tests/substtarg.test: Use -Wno-override,
and make sure we get a warning without.
* tests/exeext3.test, tests/java2.test, tests/nolink.test,
tests/subpkg.test, tests/vartest.test: Use -Wno-override.
* tests/txinfo13.test: Use installcheck-local instead of overriding
installcheck.
* tests/txinfo2.test: Run $MAKE on the real Makefile (this test
used to succeed thanks to a failure...)
* tests/location.test: Adjust expected messages.
* tests/Makefile.am (XFAIL_TESTS): Add txinfo5.test.

22 files changed:
ChangeLog
Makefile.in
NEWS
automake.in
automake.texi
lib/Automake/ChannelDefs.pm
lib/am/texinfos.am
stamp-vti
tests/Makefile.am
tests/Makefile.in
tests/dejagnu2.test
tests/exeext2.test
tests/exeext3.test
tests/java2.test
tests/location.test
tests/nolink.test
tests/subpkg.test
tests/substtarg.test
tests/txinfo13.test
tests/txinfo2.test
tests/vartar.test
version.texi

index cae171a2fd4cb4e3ac8a6770a2b4d8b553894733..0ed1cecd7aeb4209b45f7579da3d32bdd112deee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2003-04-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (%silent_variable_override): New variable.
+       (macro_define): Warn about variable definitions overriding
+       Automake variables.
+       (rule_define): Warn about target definitions overriding
+       Automake variables.  Fix $condmsg definition.
+       * automake.texi (Invoking Automake): Document the `override'
+       category.
+       * lib/Automake/ChannelDefs.pm (usage): Likewise.
+       * lib/am/texinfos.am [!%?CYGNUS] (MAKEINFO): Do not define,
+       this is already done in m4/init.m4.
+       * tests/dejagnu2.test: Run $MAKE, don't only grep.  Use
+       -Wno-override, and make sure we get a warning without.
+       * tests/exeext2.test, tests/substtarg.test: Use -Wno-override,
+       and make sure we get a warning without.
+       * tests/exeext3.test, tests/java2.test, tests/nolink.test,
+       tests/subpkg.test, tests/vartest.test: Use -Wno-override.
+       * tests/txinfo13.test: Use installcheck-local instead of overriding
+       installcheck.
+       * tests/txinfo2.test: Run $MAKE on the real Makefile (this test
+       used to succeed thanks to a failure...)
+       * tests/location.test: Adjust expected messages.
+       * tests/Makefile.am (XFAIL_TESTS): Add txinfo5.test.
+
 2003-04-12  Raja R Harinath  <harinath@acm.org>
 
        * lib/Automake/DisjConditions.pm (true): Don't cache answer.
index 216541b14781dcd1a610826a60564b9e9455aad0..588a5c9d1e7141691b1f37508cb921dc1b6f86fe 100644 (file)
@@ -264,6 +264,7 @@ mostlyclean-vti:
 
 maintainer-clean-vti:
        -rm -f stamp-vti version.texi
+
 TEXI2DVI = texi2dvi
 
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
diff --git a/NEWS b/NEWS
index 1b422a54d6daf8519a14b2232f50729fa18c09b3..044a36e21c22f8ccbb90f6c96e24c5b7cb4c9e27 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -64,6 +64,8 @@ New in 1.7a:
   substituted from configure.ac.  This has been requested by people
   dealing with non-POSIX ar implementations.
 
+* New warning option: -Woverride.  This will warn about any user
+  target or variable definitions which override Automake definitions.
 \f
 New in 1.7:
 * Autoconf 2.54 is required.
index db375fcf3793e878b5c62f7cbf6d10ff6ecf7996..c8fe09fed71b33ed38de04bd35ecea9574d9a7bb 100755 (executable)
@@ -276,6 +276,13 @@ my %ac_macro_for_var =
    YACC => 'AC_PROG_YACC',
    );
 
+# Variables that can be overriden without complaint from -Woverride
+my %silent_variable_override =
+  (AR => 1,
+   ARFLAGS => 1,
+   DEJATOOL => 1,
+   JAVAC => 1);
+
 # Copyright on generated Makefile.ins.
 my $gen_copyright = "\
 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@@ -6376,9 +6383,19 @@ sub macro_define ($$$$$$$$)
          && $var_owner{$var}{$cond} != VAR_AUTOMAKE
          && $owner == VAR_AUTOMAKE)
        {
+         if (! exists $silent_variable_override{$var})
+           {
+             my $condmsg = ($cond == TRUE
+                            ? '' : (" in condition `" . $cond->human . "'"));
+             msg_cond_var ('override', $cond, $var,
+                           "user variable `$var' defined here$condmsg...",
+                           partial => 1);
+             msg ('override', $where,
+                  "... overrides Automake variable `$var' defined here");
+           }
          verb ("refusing to override the user definition of:\n"
                . macro_dump ($var)
-               ."with `$cond->human' => `$value'");
+               ."with `" . $cond->human . "' => `$value'");
        }
       else
        {
@@ -7133,11 +7150,11 @@ sub rule_define ($$$$$)
 
       # Don't mention true conditions in diagnostics.
       my $condmsg =
-       $cond == TRUE ? " in condition `" . $cond->human . "'" : '';
+       $cond == TRUE ? '' : " in condition `" . $cond->human . "'";
 
       if ($owner == TARGET_USER)
        {
-         if ($oldowner eq TARGET_USER)
+         if ($oldowner == TARGET_USER)
            {
              # Ignore `%'-style pattern rules.  We'd need the
              # dependencies to detect duplicates, and they are
@@ -7174,6 +7191,11 @@ sub rule_define ($$$$$)
        {
          if ($oldowner == TARGET_USER)
            {
+             msg_cond_target ('override', $cond, $target,
+                              "user target `$target' defined here"
+                              . "$condmsg...", partial => 1);
+             msg ('override', $where,
+                  "... overrides Automake target `$target' defined here");
              # Don't overwrite the user definition of TARGET.
              return ();
            }
index f33e8a260eb40efaee0c95e182ce3c8012792d7b..afc24e4a63345a3589f09458d855d0572cc0168f 100644 (file)
@@ -1051,6 +1051,8 @@ warnings related to the GNU Coding Standards
 (@pxref{Top, , , standards, The GNU Coding Standards}).
 @item obsolete
 obsolete features or constructions
+@item override
+user redefinitions of Automake rules or variables
 @item portability
 portability issues (e.g., use of Make features which are known not portable)
 @item syntax
index 7fb18a2d4f942cab55d15c47cf5f0a3287ed1dec..61bc1d568a144b6b7e0f36faef32740f5c3a4321 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003 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
@@ -98,13 +98,18 @@ Warnings related to GNU Coding Standards.
 
 Warnings about obsolete features (silent by default).
 
+=item C<override>
+
+Warnings about user redefinitions of Automake rules or
+variables (silent by default).
+
 =item C<portability>
 
 Warnings about non-portable constructs.
 
 =item C<syntax>
 
-Weird syntax, unused variables, typos...
+Warnings about weird syntax, unused variables, typos...
 
 =item C<unsupported>
 
@@ -139,6 +144,7 @@ register_channel 'automake', type => 'fatal', backtrace => 1,
 
 register_channel 'gnu', type => 'warning';
 register_channel 'obsolete', type => 'warning', silent => 1;
+register_channel 'override', type => 'warning', silent => 1;
 register_channel 'portability', type => 'warning', silent => 1;
 register_channel 'syntax', type => 'warning';
 register_channel 'unsupported', type => 'warning';
@@ -161,6 +167,7 @@ sub usage ()
   print "Warning categories include:
   `gnu'           GNU coding standards (default in gnu and gnits modes)
   `obsolete'      obsolete features or constructions
+  `override'      user redefinitions of Automake rules or variables
   `portability'   portability issues
   `syntax'        dubious syntactic constructs (default)
   `unsupported'   unsupported or incomplete features (default)
index b3c5972ace55a26d91d59d774d74aee1dd2c0048..de1e9fc8386f0d352a63ed56ddab5b3d82a51dd6 100644 (file)
@@ -24,7 +24,6 @@
 
 if %?LOCAL-TEXIS%
 if ! %?CYGNUS%
-MAKEINFO = @MAKEINFO@
 TEXI2DVI = texi2dvi
 
 else %?CYGNUS%
index 18895fa65a898705923cffa976eb32dc6a6821fd..d4a984336a0a3b853bb82ca0872c898bed068a5d 100644 (file)
--- a/stamp-vti
+++ b/stamp-vti
@@ -1,4 +1,4 @@
-@set UPDATED 10 April 2003
+@set UPDATED 14 April 2003
 @set UPDATED-MONTH April 2003
 @set EDITION 1.7a
 @set VERSION 1.7a
index e0c9ae65c454322ee6b6075b10e868ad084a08b4..26865e012045fa9db15097cfe4422c3a35582e62 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to create Makefile.in
 
-XFAIL_TESTS = subdir5.test auxdir2.test cond17.test
+XFAIL_TESTS = subdir5.test auxdir2.test cond17.test txinfo5.test
 
 TESTS =        \
 acinclude.test \
index 9a19ca9c3a923fca4f55036c8ac52041e4387706..ef296f6c732c14fcc9080a3be787cb7ce5ab9280 100644 (file)
@@ -104,7 +104,7 @@ sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
-XFAIL_TESTS = subdir5.test auxdir2.test cond17.test
+XFAIL_TESTS = subdir5.test auxdir2.test cond17.test txinfo5.test
 TESTS = \
 acinclude.test \
 aclibobj.test \
index 388fe3eba8d7f6156e877e3a6846ad810db785bd..c6142b65365a7286993b5dfd23e3dcfeb72388b8 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
 
 . ./defs || exit 1
 
+set -e
+
+echo 'AC_OUTPUT' >> configure.in
+
 cat > Makefile.am << 'END'
 AUTOMAKE_OPTIONS = dejagnu
 
 site.exp:
-    echo foo
+       @echo foo
 END
 
-$ACLOCAL || exit 1
-$AUTOMAKE || exit 1
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -Wno-override
 
 grep site.exp Makefile.in
 test `grep '^site\.exp:' Makefile.in | wc -l` -eq 1
+
+./configure
+$MAKE site.exp >stdout
+cat stdout
+grep foo stdout
+
+$AUTOMAKE 2>stderr && exit 1
+cat stderr
+grep 'Makefile.am:3:.*site.exp' stderr
index c7bd71ccf3e51a21aeb590c67eb65cab4c1db56c..6402a5774fdb85a3a9e7e41f745dbf95d094db0e 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -41,11 +41,12 @@ $ACLOCAL
 $AUTOMAKE -Wnone
 $AUTOMAKE -Wnone -Wobsolete 2>stderr && exit 1
 cat stderr
-grep maude stderr
+grep 'deprecated.*maude' stderr
 $AUTOMAKE -Wall 2>stderr && exit 1
 cat stderr
-grep maude stderr
+grep 'deprecated.*maude' stderr
+grep 'overrid.*maude' stderr
 
 echo 'AUTOMAKE_OPTIONS = no-exeext' >> Makefile.am
 
-$AUTOMAKE -Wall
+$AUTOMAKE -Wall -Wno-override
index a867f0077682505df5463029b6ce983158526398..f16a69d2f09338a4f2ab7e2b1a87a5ac41ed4eb7 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -36,7 +36,7 @@ maude$(EXEEXT):
 END
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -Wno-override
 
 $FGREP 'maude$(EXEEXT):' Makefile.in
 test 1 = `grep 'maude.*:' Makefile.in | wc -l`
index 5ccf31b8c22580eac5832a361ea2c2724778d552..f89bdf65ea659ae193c67234e45dd9da8fe4b728 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -48,6 +48,6 @@ END
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
+$AUTOMAKE -Wno-override
 ./configure
 $MAKE
index 7cb5052721f096095c18e1ccedc9b011aafea85a..8ee95c9963542d9624b1319a7f3b668a7829cab1 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -66,11 +66,11 @@ library.am: change your target to read `libfoo.a$(EXEEXT)'
 Makefile.am:3:   while processing library `libfoo.a'
 program.am: target `libfoo.a$(EXEEXT)' was defined here
 Makefile.am:1:   while processing program `libfoo.a'
-program.am: redefinition of `libfoo.a' in condition `TRUE'...
+program.am: redefinition of `libfoo.a'...
 Makefile.am:1:   while processing program `libfoo.a'
 library.am: ... `libfoo.a' previously defined here
 Makefile.am:3:   while processing library `libfoo.a'
-tags.am: redefinition of `ctags' in condition `TRUE'...
+tags.am: redefinition of `ctags'...
 program.am: ... `ctags' previously defined here
 Makefile.am:6:   while processing program `ctags'
 EOF
index e23f831e26716cb2b1ddb8edf87641bb230b226d..1c22b5318eec543ba86fb6120e1fa7d40fbb5ddf 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -22,6 +22,8 @@
 
 . ./defs || exit 1
 
+set -e
+
 cat > Makefile.am << 'END'
 AUTOMAKE_OPTIONS = no-exeext
 
@@ -32,8 +34,8 @@ meal: beans.veg beef.meat
        cat beans.veg beef.meat > meal
 END
 
-$ACLOCAL || exit 1
-$AUTOMAKE || exit 1
+$ACLOCAL
+$AUTOMAKE -Wno-override
 
 grep '^meal.*:' Makefile.in | grep -v beef.meat && exit 1
 
index 84b23067612f75e58b58a2176b350b2dd71055bc..6b67124ec4af64555267e3e16b10617dbd93a27f 100755 (executable)
@@ -88,12 +88,12 @@ EOF
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
+$AUTOMAKE -Wno-override
 
 cd lib
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
+$AUTOMAKE -Wno-override
 cd ..
 
 ./configure
index 591e77465cdeff3f0e0d51a08d9efe4c8fc965b9..9bc721468f8ef06ed5e57bd98516c470d6ef1227 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -47,6 +47,9 @@ END
 set -e
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE 2>stderr && exit 1
+cat stderr
+grep 'overrid.*libfake@SUBST@.a' stderr
 num=`grep '^libfake@SUBST@.a:' Makefile.in | wc -l`
 test $num -eq 1
+$AUTOMAKE -Wno-override
index 077f63543050557d02163e7eeb0f5ecf361fe04f..b32e98d40d1eca2eefc654b720f28e8ef198a532 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -32,7 +32,7 @@ cat > Makefile.am << 'END'
 info_TEXINFOS = subdir/main.texi
 subdir_main_TEXINFOS = subdir/inc.texi
 
-installcheck:
+installcheck-local:
        test -f $(infodir)/main.info
 END
 
index e1e1b465083995f543ba01056a42c9e4928ab35c..900a2c3d10ac8e5e6978e1cc3fcc399ff299a06d 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1996, 1997, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
 
 . ./defs || exit 1
 
+set -e
+
+echo AC_OUTPUT >> configure.in
+
 cat > Makefile.am << 'END'
 info_TEXINFOS = textutils.texi
 magic:
@@ -33,7 +37,12 @@ END
 echo '@setfilename textutils.info' > textutils.texi
 : > textutils.info~
 
-$ACLOCAL || exit 1
-$AUTOMAKE || exit 1
 
-test -z "`$MAKE -s -f Makefile.in magic | grep '~'`"
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE magic >stdout
+cat stdout
+grep '~' stdout && exit 1
+exit 0
index e6b7a3aa05ab5e28aaa7ca7591398b01fddd9d22..237bd27956f0baf81b55648138378f64d643559b 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
 
 . ./defs || exit 1
 
+set -e
+
 cat > Makefile.am << 'END'
 install = install
 install:
        $(install) install
 END
 
-$ACLOCAL || exit 1
-$AUTOMAKE || exit 1
+$ACLOCAL
+$AUTOMAKE -Wno-override
 
-grep '^install = install$' Makefile.in || exit 1
+grep '^install = install$' Makefile.in
 
 cat > target.expected <<'EOF'
 install:
        $(install) install
 EOF
 sed -n '/^install:/,/^ /p' Makefile.in > target.value
-diff target.expected target.value || exit 1
-
-exit 0
+diff target.expected target.value
index 18895fa65a898705923cffa976eb32dc6a6821fd..d4a984336a0a3b853bb82ca0872c898bed068a5d 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 10 April 2003
+@set UPDATED 14 April 2003
 @set UPDATED-MONTH April 2003
 @set EDITION 1.7a
 @set VERSION 1.7a
This page took 0.053753 seconds and 5 git commands to generate.