* lib/Automake/Variable.pm (_hash_varname, _hash_values): New functions.
authorAlexandre Duret-Lutz <adl@gnu.org>
Sun, 9 Apr 2006 13:56:33 +0000 (13:56 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Sun, 9 Apr 2006 13:56:33 +0000 (13:56 +0000)
(_gen_varname): Use _hash_values, and return a flag indicating whether
the variable name was generated or reused.
(transform_variable_recursively): Do not redefine variables that
are reused, and try to reuse the variable being transformed.
* tests/check2.test: Make sure TESTS hasn't been redefined.
* tests/check5.test, tests/exeext4.test: Make sure variables have
been reused.
* tests/subst2.test: Make sure bin_PROGRAMS gets rewritten.

ChangeLog
lib/Automake/Variable.pm
lib/Automake/tests/Makefile.in
tests/Makefile.in
tests/check2.test
tests/check5.test
tests/exeext4.test
tests/subst2.test

index 3610681..2e28025 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2006-04-09  Alexandre Duret-Lutz  <adl@gnu.org>
 
+       * lib/Automake/Variable.pm (_hash_varname, _hash_values): New functions.
+       (_gen_varname): Use _hash_values, and return a flag indicating whether
+       the variable name was generated or reused.
+       (transform_variable_recursively): Do not redefine variables that
+       are reused, and try to reuse the variable being transformed.
+       * tests/check2.test: Make sure TESTS hasn't been redefined.
+       * tests/check5.test, tests/exeext4.test: Make sure variables have
+       been reused.
+       * tests/subst2.test: Make sure bin_PROGRAMS gets rewritten.
+
        * automake.in (%ignored_configure_vars): New variable.
        (scan_autoconf_traces): Trace for _AM_SUBST_NOTMAKE and fill
        %ignored_configure_vars.
@@ -8,9 +18,9 @@
        w.r.t. VAR_SILENT.
        * m4/substign.m4: New file.
        * m4/Makefile.am (dist_m4data_DATA): Add substign.m4.
-       * m4/cond.m4: _AM_SUBST_IGNORE $1_TRUE and $1_FALSE (PR automake/477).
-       * m4/depend.m4: _AM_SUBST_IGNORE AMDEPBACKSLASH.
-       * m4/protos.m4: _AM_SUBST_IGNORE ANSI2KNR.
+       * m4/cond.m4: _AM_SUBST_NOTMAKE $1_TRUE and $1_FALSE (PR automake/477).
+       * m4/depend.m4: _AM_SUBST_NOTMAKE AMDEPBACKSLASH.
+       * m4/protos.m4: _AM_SUBST_NOTMAKE ANSI2KNR.
        * tests/cond.test: Make sure TEST_FALSE and TEST_TRUE are not defined.
        * tests/amsubst.test: New file.
        * tests/Makefile.am (TESTS): Add it.
index 49cd2a1..1f89c5f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006  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
@@ -142,6 +142,11 @@ my @_var_order;
 # Keys have the form "(COND1)VAL1(COND2)VAL2..." where VAL1 and VAL2
 # are the values of the variable for condition COND1 and COND2.
 my %_gen_varname = ();
+# $_gen_varname_n{$base} is the number of variables generated by
+# _gen_varname() for $base.  This is not the same as keys
+# %{$_gen_varname{$base}} because %_gen_varname may also contain
+# variables not generated by _gen_varname.
+my %_gen_varname_n = ();
 
 # Declare the macros that define known variables, so we can
 # hint the user if she try to use one of these variables.
@@ -338,6 +343,7 @@ sub reset ()
   $_appendvar = 0;
   @_var_order = ();
   %_gen_varname = ();
+  %_gen_varname_n = ();
   $_traversal = 0;
 }
 
@@ -1463,14 +1469,48 @@ sub _do_recursive_traversal ($$&&$$$$)
   return &$fun_collect ($var, $parent_cond, @allresults);
 }
 
-# $VARNAME
+# _hash_varname ($VAR)
+# --------------------
+# Compute the key associated $VAR in %_gen_varname.
+# See _gen_varname() below.
+sub _hash_varname ($)
+{
+  my ($var) = @_;
+  my $key = '';
+  foreach my $cond ($var->conditions->conds)
+    {
+      my @values = $var->value_as_list ($cond);
+      $key .= "($cond)@values";
+    }
+  return $key;
+}
+
+# _hash_values (@VALUES)
+# ----------------------
+# Hash @VALUES for %_gen_varname.  @VALUES shoud be a list
+# of pairs: ([$cond, @values], [$cond, @values], ...).
+# See _gen_varname() below.
+sub _hash_values (@)
+{
+  my $key = '';
+  foreach my $pair (@_)
+    {
+      my ($cond, @values) = @$pair;
+      $key .= "($cond)@values";
+    }
+  return $key;
+}
+# ($VARNAME, $GENERATED)
 # _gen_varname ($BASE, @DEFINITIONS)
 # ---------------------------------
 # Return a variable name starting with $BASE, that will be
 # used to store definitions @DEFINITIONS.
 # @DEFINITIONS is a list of pair [$COND, @OBJECTS].
 #
-# If we already have a $BASE-variable containing @DEFINITIONS, reuse it.
+# If we already have a $BASE-variable containing @DEFINITIONS, reuse
+# it and set $GENERATED to 0.  Otherwise construct a new name and set
+# $GENERATED to 1.
+#
 # This way, we avoid combinatorial explosion of the generated
 # variables.  Especially, in a Makefile such as:
 #
@@ -1501,19 +1541,17 @@ sub _do_recursive_traversal ($$&&$$$$)
 sub _gen_varname ($@)
 {
   my $base = shift;
-  my $key = '';
-  foreach my $pair (@_)
-    {
-      my ($cond, @values) = @$pair;
-      $key .= "($cond)@values";
-    }
+  my $key = _hash_values @_;
 
-  return $_gen_varname{$base}{$key} if exists $_gen_varname{$base}{$key};
+  return ($_gen_varname{$base}{$key}, 0)
+    if exists $_gen_varname{$base}{$key};
 
-  my $num = 1 + keys (%{$_gen_varname{$base}});
+  my $num = 1 + ($_gen_varname_n{$base} || 0);
+  $_gen_varname_n{$base} = $num;
   my $name = "${base}_${num}";
   $_gen_varname{$base}{$key} = $name;
-  return $name;
+
+  return ($name, 1);
 }
 
 =item C<$resvar = transform_variable_recursively ($var, $resvar, $base, $nodefine, $where, &fun_item, [%options])>
@@ -1557,12 +1595,24 @@ sub transform_variable_recursively ($$$$$&;%)
      # of the recursive transformation of a subvariable.
      sub {
        my ($subvar, $parent_cond, @allresults) = @_;
+       # If no definition is required, return anything: the result is
+       # not expected to be used, only the side effect of $fun_item
+       # should matter.
+       return 'report-me' if $nodefine;
+       # Cache $subvar, so that we reuse it if @allresults is the same.
+       my $key = _hash_varname $subvar;
+       $_gen_varname{$base}{$key} = $subvar->name;
+
        # Find a name for the variable, unless this is the top-variable
        # for which we want to use $resvar.
-       my $varname =
-        ($var != $subvar) ? _gen_varname ($base, @allresults) : $resvar;
-       # Define the variable if required.
-       unless ($nodefine)
+       my ($varname, $generated) =
+        ($var != $subvar) ? _gen_varname ($base, @allresults) : ($resvar, 1);
+
+       # Define the variable if we are not reusing a previously
+       # defined variable.  At the top-level, we can also avoid redefining
+       # the variable if it already contains the same values.
+       if ($generated
+          && !($varname eq $var->name && $key eq _hash_values @allresults))
         {
           # If the new variable is the source variable, we assume
           # we are trying to override a user variable.  Delete
@@ -1587,8 +1637,8 @@ sub transform_variable_recursively ($$$$$&;%)
                           '', $where, VAR_PRETTY);
                 }
             }
-          set_seen $varname;
         }
+       set_seen $varname;
        return "\$($varname)";
      },
      %options);
index 9bae53d..1c950a3 100644 (file)
@@ -30,7 +30,6 @@ NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
-TESTS = Condition.pl DisjConditions.pl Version.pl Wrap.pl
 subdir = lib/Automake/tests
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -132,6 +131,12 @@ target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 TESTS_ENVIRONMENT = $(PERL) -Mstrict -I $(top_srcdir)/lib -w
+TESTS = \
+Condition.pl \
+DisjConditions.pl \
+Version.pl \
+Wrap.pl
+
 EXTRA_DIST = $(TESTS)
 all: all-am
 
index 7032e18..5f21311 100644 (file)
@@ -30,139 +30,6 @@ NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
-TESTS = aclibobj.test aclocal.test aclocal3.test aclocal4.test \
-       aclocal5.test aclocal6.test aclocal7.test aclocal8.test \
-       aclocal9.test acloca10.test acloca11.test acloca12.test \
-       acloca13.test acloca14.test acloca15.test acloca16.test \
-       acloca17.test acloca18.test acloca19.test acloca20.test \
-       acloca21.test acoutnoq.test acoutpt.test acoutpt2.test \
-       acoutqnl.test acoutbs.test acsilent.test acsubst.test \
-       acsubst2.test all.test alloca.test alloca2.test alpha.test \
-       alpha2.test amassign.test ammissing.test amsubst.test \
-       ansi.test ansi2.test ansi3.test ansi3b.test ansi4.test \
-       ansi5.test ansi6.test ansi7.test ansi8.test ansi9.test \
-       ansi10.test ar.test ar2.test asm.test autohdr.test \
-       autohdr2.test autohdr3.test autohdr4.test automake.test \
-       auxdir.test auxdir2.test auxdir3.test auxdir4.test backsl.test \
-       backsl2.test backsl3.test backsl4.test badline.test \
-       badprog.test block.test bsource.test canon.test canon2.test \
-       canon3.test canon4.test canon5.test ccnoco.test ccnoco2.test \
-       check.test check2.test check3.test check4.test check5.test \
-       checkall.test clean.test clean2.test colneq.test colneq2.test \
-       colon.test colon2.test colon3.test colon4.test colon5.test \
-       colon6.test colon7.test comment.test comment2.test \
-       comment3.test comment4.test comment5.test comment6.test \
-       comment7.test comment8.test comment9.test commen10.test \
-       compile.test compile_f90_c_cxx.test compile_f_c_cxx.test \
-       cond.test cond2.test cond3.test cond4.test cond5.test \
-       cond6.test cond7.test cond8.test cond9.test cond10.test \
-       cond11.test cond13.test cond14.test cond15.test cond16.test \
-       cond17.test cond18.test cond19.test cond20.test cond21.test \
-       cond22.test cond23.test cond24.test cond25.test cond26.test \
-       cond27.test cond28.test cond29.test cond30.test cond31.test \
-       cond32.test cond33.test cond34.test cond35.test cond36.test \
-       cond37.test cond38.test condd.test condhook.test condinc.test \
-       condinc2.test condlib.test condman.test condman2.test \
-       conf2.test confdeps.test conff.test conff2.test confh.test \
-       confh4.test confh5.test config.test confincl.test conflnk.test \
-       conflnk2.test conflnk3.test confsub.test confvar.test \
-       confvar2.test copy.test ctarget1.test cxx.test cxx2.test \
-       cxxansi.test cxxcpp.test cxxlibobj.test cxxlink.test \
-       cxxnoc.test cxxo.test cygwin32.test dash.test defun.test \
-       defun2.test dejagnu.test dejagnu2.test dejagnu3.test \
-       dejagnu4.test dejagnu5.test dejagnu6.test dejagnu7.test \
-       depacl2.test depcomp.test depcomp2.test depcomp3.test \
-       depcomp4.test depcomp5.test depcomp6.test depcomp7.test \
-       depdist.test depend.test depend2.test depend3.test \
-       depend4.test destdir.test dirforbid.test dirlist.test \
-       dirlist2.test discover.test distcom2.test distcom3.test \
-       distcom4.test distcom5.test distcom6.test distcom7.test \
-       distdir.test distname.test dollar.test double.test dup2.test \
-       else.test empty.test empty2.test empty3.test empty4.test \
-       exdir.test exdir2.test exeext.test exeext2.test exeext3.test \
-       exeext4.test exsource.test ext.test ext2.test extra.test \
-       extra3.test extra4.test extra5.test extra6.test extra7.test \
-       f90only.test flibs.test fn99.test fnoc.test fo.test fonly.test \
-       fortdep.test fpinst2.test fpinstall.test gcj.test gcj2.test \
-       gcj3.test gcj4.test gcj5.test getopt.test gettext.test \
-       gettext2.test gnumake.test gnuwarn.test gnuwarn2.test \
-       gnits.test gnits2.test gnits3.test header.test help.test \
-       hfs.test hosts.test implicit.test include.test include2.test \
-       info.test insh2.test install2.test installdir.test instsh.test \
-       instsh2.test instdat.test instdat2.test instexec.test \
-       insthook.test instman.test instman2.test instspc.test \
-       interp.test interp2.test java.test java2.test java3.test \
-       javaprim.test javasubst.test ldadd.test ldflags.test lex.test \
-       lex2.test lex3.test lex4.test lex5.test libobj2.test \
-       libobj3.test libobj4.test libobj5.test libobj7.test \
-       libobj8.test libobj10.test libobj11.test libobj12.test \
-       libobj13.test libobj14.test library.test library2.test \
-       library3.test libtool.test libtool2.test libtool3.test \
-       libtool4.test libtool5.test libtool6.test libtool7.test \
-       libtool8.test libtool9.test license.test link_c_cxx.test \
-       link_dist.test link_f90_only.test link_fc.test link_fccxx.test \
-       link_fcxx.test link_f_only.test lisp2.test lisp3.test \
-       lisp4.test lisp5.test lisp6.test lisp7.test lisp8.test \
-       listval.test location.test longline.test longlin2.test \
-       ltcond.test ltcond2.test ltconv.test ltdeps.test \
-       ltlibobjs.test ltlibsrc.test maintclean.test make.test \
-       makej.test makevars.test man.test man2.test mclean.test \
-       mdate.test mdate2.test mdate3.test mdate4.test missing.test \
-       missing2.test missing3.test mkinstall.test mkinst2.test \
-       mkinst3.test mmodely.test multlib.test nobase.test nodef.test \
-       nodef2.test nodep.test nodepcomp.test nodist.test nodist2.test \
-       nodist3.test nogzip.test nogzip2.test noinst.test \
-       noinstdir.test nolink.test nostdinc.test number.test objc.test \
-       objc2.test obsolete.test order.test outdir.test output.test \
-       output2.test output3.test output4.test output5.test \
-       output6.test output7.test output8.test output9.test \
-       output10.test output11.test output12.test overrid.test \
-       parse.test percent.test percent2.test phony.test pluseq.test \
-       pluseq2.test pluseq3.test pluseq4.test pluseq5.test \
-       pluseq6.test pluseq7.test pluseq8.test pluseq9.test \
-       pluseq10.test postproc.test ppf77.test pr2.test pr9.test \
-       pr72.test pr87.test pr204.test pr211.test pr220.test \
-       pr224.test pr229.test pr243.test pr266.test pr279.test \
-       pr279-2.test pr287.test pr300-lib.test pr300-ltlib.test \
-       pr300-prog.test pr307.test pr401.test pr401b.test pr401c.test \
-       prefix.test primary.test primary2.test primary3.test \
-       proginst.test python.test python2.test python3.test \
-       python4.test python5.test python6.test python7.test \
-       python8.test python9.test python10.test python11.test \
-       python12.test recurs.test recurs2.test remake.test \
-       remake2.test remake3.test remake4.test remake5.test regex.test \
-       req.test reqd.test reqd2.test rulepat.test scripts.test \
-       seenc.test sinclude.test srcsub.test srcsub2.test space.test \
-       specflg.test specflg2.test specflg3.test specflg6.test \
-       specflg7.test specflg8.test specflg9.test spell.test \
-       spell2.test spell3.test spelling.test spy.test stamph2.test \
-       stdlib.test stdlib2.test strip.test subdir.test subdir2.test \
-       subdir3.test subdir4.test subdir5.test subdir6.test \
-       subdir7.test subdir8.test subdir9.test subdirbuiltsources.test \
-       subcond.test subcond2.test subcond3.test subobj.test \
-       subobj2.test subobj3.test subobj4.test subobj5.test \
-       subobj6.test subobj7.test subobj8.test subobj9.test \
-       subobjname.test subpkg.test subpkg2.test subpkg3.test \
-       subst.test subst2.test substref.test substre2.test \
-       substtarg.test suffix.test suffix2.test suffix3.test \
-       suffix4.test suffix5.test suffix6.test suffix7.test \
-       suffix8.test suffix9.test suffix10.test suffix11.test \
-       suffix12.test symlink.test symlink2.test symlink3.test \
-       syntax.test tags.test tagsub.test tar.test tar2.test tar3.test \
-       target-cflags.test targetclash.test txinfo.test txinfo2.test \
-       txinfo3.test txinfo4.test txinfo5.test txinfo6.test \
-       txinfo7.test txinfo8.test txinfo9.test txinfo10.test \
-       txinfo13.test txinfo16.test txinfo17.test txinfo18.test \
-       txinfo19.test txinfo20.test txinfo21.test txinfo22.test \
-       txinfo23.test txinfo24.test txinfo25.test txinfo26.test \
-       txinfo27.test txinfo28.test txinfo29.test txinfo30.test \
-       transform.test unused.test vars.test vars3.test vartar.test \
-       version.test version2.test version3.test version4.test \
-       version6.test version7.test version8.test vpath.test \
-       vtexi.test vtexi2.test warnopts.test werror.test werror2.test \
-       whoami.test xsource.test yacc.test yacc2.test yacc3.test \
-       yacc4.test yacc5.test yacc6.test yacc7.test yacc8.test \
-       yaccpp.test yaccvpath.test
 subdir = tests
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs.in
@@ -265,6 +132,597 @@ target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 XFAIL_TESTS = auxdir2.test cond17.test txinfo5.test
+TESTS = \
+aclibobj.test \
+aclocal.test \
+aclocal3.test \
+aclocal4.test \
+aclocal5.test \
+aclocal6.test \
+aclocal7.test \
+aclocal8.test \
+aclocal9.test \
+acloca10.test \
+acloca11.test \
+acloca12.test \
+acloca13.test \
+acloca14.test \
+acloca15.test \
+acloca16.test \
+acloca17.test \
+acloca18.test \
+acloca19.test \
+acloca20.test \
+acloca21.test \
+acoutnoq.test \
+acoutpt.test \
+acoutpt2.test \
+acoutqnl.test \
+acoutbs.test \
+acsilent.test \
+acsubst.test \
+acsubst2.test \
+all.test \
+alloca.test \
+alloca2.test \
+alpha.test \
+alpha2.test \
+amassign.test \
+ammissing.test \
+amsubst.test \
+ansi.test \
+ansi2.test \
+ansi3.test \
+ansi3b.test \
+ansi4.test \
+ansi5.test \
+ansi6.test \
+ansi7.test \
+ansi8.test \
+ansi9.test \
+ansi10.test \
+ar.test \
+ar2.test \
+asm.test \
+autohdr.test \
+autohdr2.test \
+autohdr3.test \
+autohdr4.test \
+automake.test \
+auxdir.test \
+auxdir2.test \
+auxdir3.test \
+auxdir4.test \
+backsl.test \
+backsl2.test \
+backsl3.test \
+backsl4.test \
+badline.test \
+badprog.test \
+block.test \
+bsource.test \
+canon.test \
+canon2.test \
+canon3.test \
+canon4.test \
+canon5.test \
+ccnoco.test \
+ccnoco2.test \
+check.test \
+check2.test \
+check3.test \
+check4.test \
+check5.test \
+checkall.test \
+clean.test \
+clean2.test \
+colneq.test \
+colneq2.test \
+colon.test \
+colon2.test \
+colon3.test \
+colon4.test \
+colon5.test \
+colon6.test \
+colon7.test \
+comment.test \
+comment2.test \
+comment3.test \
+comment4.test \
+comment5.test \
+comment6.test \
+comment7.test \
+comment8.test \
+comment9.test \
+commen10.test \
+compile.test \
+compile_f90_c_cxx.test \
+compile_f_c_cxx.test \
+cond.test \
+cond2.test \
+cond3.test \
+cond4.test \
+cond5.test \
+cond6.test \
+cond7.test \
+cond8.test \
+cond9.test \
+cond10.test \
+cond11.test \
+cond13.test \
+cond14.test \
+cond15.test \
+cond16.test \
+cond17.test \
+cond18.test \
+cond19.test \
+cond20.test \
+cond21.test \
+cond22.test \
+cond23.test \
+cond24.test \
+cond25.test \
+cond26.test \
+cond27.test \
+cond28.test \
+cond29.test \
+cond30.test \
+cond31.test \
+cond32.test \
+cond33.test \
+cond34.test \
+cond35.test \
+cond36.test \
+cond37.test \
+cond38.test \
+condd.test \
+condhook.test \
+condinc.test \
+condinc2.test \
+condlib.test \
+condman.test \
+condman2.test \
+conf2.test \
+confdeps.test \
+conff.test \
+conff2.test \
+confh.test \
+confh4.test \
+confh5.test \
+config.test \
+confincl.test \
+conflnk.test \
+conflnk2.test \
+conflnk3.test \
+confsub.test \
+confvar.test \
+confvar2.test \
+copy.test \
+ctarget1.test \
+cxx.test \
+cxx2.test \
+cxxansi.test \
+cxxcpp.test \
+cxxlibobj.test \
+cxxlink.test \
+cxxnoc.test \
+cxxo.test \
+cygwin32.test \
+dash.test \
+defun.test \
+defun2.test \
+dejagnu.test \
+dejagnu2.test \
+dejagnu3.test \
+dejagnu4.test \
+dejagnu5.test \
+dejagnu6.test \
+dejagnu7.test \
+depacl2.test \
+depcomp.test \
+depcomp2.test \
+depcomp3.test \
+depcomp4.test \
+depcomp5.test \
+depcomp6.test \
+depcomp7.test \
+depdist.test \
+depend.test \
+depend2.test \
+depend3.test \
+depend4.test \
+destdir.test \
+dirforbid.test \
+dirlist.test \
+dirlist2.test \
+discover.test \
+distcom2.test \
+distcom3.test \
+distcom4.test \
+distcom5.test \
+distcom6.test \
+distcom7.test \
+distdir.test \
+distname.test \
+dollar.test \
+double.test \
+dup2.test \
+else.test \
+empty.test \
+empty2.test \
+empty3.test \
+empty4.test \
+exdir.test \
+exdir2.test \
+exeext.test \
+exeext2.test \
+exeext3.test \
+exeext4.test \
+exsource.test \
+ext.test \
+ext2.test \
+extra.test \
+extra3.test \
+extra4.test \
+extra5.test \
+extra6.test \
+extra7.test \
+f90only.test \
+flibs.test \
+fn99.test \
+fnoc.test \
+fo.test        \
+fonly.test \
+fortdep.test \
+fpinst2.test \
+fpinstall.test \
+gcj.test \
+gcj2.test \
+gcj3.test \
+gcj4.test \
+gcj5.test \
+getopt.test \
+gettext.test \
+gettext2.test \
+gnumake.test \
+gnuwarn.test \
+gnuwarn2.test \
+gnits.test \
+gnits2.test \
+gnits3.test \
+header.test \
+help.test \
+hfs.test \
+hosts.test \
+implicit.test \
+include.test \
+include2.test \
+info.test \
+insh2.test \
+install2.test \
+installdir.test \
+instsh.test \
+instsh2.test \
+instdat.test \
+instdat2.test \
+instexec.test \
+insthook.test \
+instman.test \
+instman2.test \
+instspc.test \
+interp.test \
+interp2.test \
+java.test \
+java2.test \
+java3.test \
+javaprim.test \
+javasubst.test \
+ldadd.test \
+ldflags.test \
+lex.test \
+lex2.test \
+lex3.test \
+lex4.test \
+lex5.test \
+libobj2.test \
+libobj3.test \
+libobj4.test \
+libobj5.test \
+libobj7.test \
+libobj8.test \
+libobj10.test \
+libobj11.test \
+libobj12.test \
+libobj13.test \
+libobj14.test \
+library.test \
+library2.test \
+library3.test \
+libtool.test \
+libtool2.test \
+libtool3.test \
+libtool4.test \
+libtool5.test \
+libtool6.test \
+libtool7.test \
+libtool8.test \
+libtool9.test \
+license.test \
+link_c_cxx.test        \
+link_dist.test \
+link_f90_only.test \
+link_fc.test \
+link_fccxx.test \
+link_fcxx.test \
+link_f_only.test \
+lisp2.test \
+lisp3.test \
+lisp4.test \
+lisp5.test \
+lisp6.test \
+lisp7.test \
+lisp8.test \
+listval.test \
+location.test \
+longline.test \
+longlin2.test \
+ltcond.test \
+ltcond2.test \
+ltconv.test \
+ltdeps.test \
+ltlibobjs.test \
+ltlibsrc.test \
+maintclean.test \
+make.test \
+makej.test \
+makevars.test \
+man.test \
+man2.test \
+mclean.test \
+mdate.test \
+mdate2.test \
+mdate3.test \
+mdate4.test \
+missing.test \
+missing2.test \
+missing3.test \
+mkinstall.test \
+mkinst2.test \
+mkinst3.test \
+mmodely.test \
+multlib.test \
+nobase.test \
+nodef.test \
+nodef2.test \
+nodep.test \
+nodepcomp.test \
+nodist.test \
+nodist2.test \
+nodist3.test \
+nogzip.test \
+nogzip2.test \
+noinst.test \
+noinstdir.test \
+nolink.test \
+nostdinc.test \
+number.test \
+objc.test \
+objc2.test \
+obsolete.test \
+order.test \
+outdir.test \
+output.test \
+output2.test \
+output3.test \
+output4.test \
+output5.test \
+output6.test \
+output7.test \
+output8.test \
+output9.test \
+output10.test \
+output11.test \
+output12.test \
+overrid.test \
+parse.test \
+percent.test \
+percent2.test \
+phony.test \
+pluseq.test \
+pluseq2.test \
+pluseq3.test \
+pluseq4.test \
+pluseq5.test \
+pluseq6.test \
+pluseq7.test \
+pluseq8.test \
+pluseq9.test \
+pluseq10.test \
+postproc.test \
+ppf77.test \
+pr2.test \
+pr9.test \
+pr72.test \
+pr87.test \
+pr204.test \
+pr211.test \
+pr220.test \
+pr224.test \
+pr229.test \
+pr243.test \
+pr266.test \
+pr279.test \
+pr279-2.test \
+pr287.test \
+pr300-lib.test \
+pr300-ltlib.test \
+pr300-prog.test \
+pr307.test \
+pr401.test \
+pr401b.test \
+pr401c.test \
+prefix.test \
+primary.test \
+primary2.test \
+primary3.test \
+proginst.test \
+python.test \
+python2.test \
+python3.test \
+python4.test \
+python5.test \
+python6.test \
+python7.test \
+python8.test \
+python9.test \
+python10.test \
+python11.test \
+python12.test \
+recurs.test \
+recurs2.test \
+remake.test \
+remake2.test \
+remake3.test \
+remake4.test \
+remake5.test \
+regex.test \
+req.test \
+reqd.test \
+reqd2.test \
+rulepat.test \
+scripts.test \
+seenc.test \
+sinclude.test \
+srcsub.test \
+srcsub2.test \
+space.test \
+specflg.test \
+specflg2.test  \
+specflg3.test  \
+specflg6.test  \
+specflg7.test  \
+specflg8.test  \
+specflg9.test  \
+spell.test \
+spell2.test \
+spell3.test \
+spelling.test \
+spy.test \
+stamph2.test \
+stdlib.test \
+stdlib2.test \
+strip.test \
+subdir.test \
+subdir2.test \
+subdir3.test \
+subdir4.test \
+subdir5.test \
+subdir6.test \
+subdir7.test \
+subdir8.test \
+subdir9.test \
+subdirbuiltsources.test \
+subcond.test \
+subcond2.test \
+subcond3.test \
+subobj.test \
+subobj2.test \
+subobj3.test \
+subobj4.test \
+subobj5.test \
+subobj6.test \
+subobj7.test \
+subobj8.test \
+subobj9.test \
+subobjname.test \
+subpkg.test \
+subpkg2.test \
+subpkg3.test \
+subst.test \
+subst2.test \
+substref.test \
+substre2.test \
+substtarg.test \
+suffix.test \
+suffix2.test \
+suffix3.test \
+suffix4.test \
+suffix5.test \
+suffix6.test \
+suffix7.test \
+suffix8.test \
+suffix9.test \
+suffix10.test \
+suffix11.test \
+suffix12.test \
+symlink.test \
+symlink2.test \
+symlink3.test \
+syntax.test \
+tags.test \
+tagsub.test \
+tar.test \
+tar2.test \
+tar3.test \
+target-cflags.test \
+targetclash.test \
+txinfo.test \
+txinfo2.test \
+txinfo3.test \
+txinfo4.test \
+txinfo5.test \
+txinfo6.test \
+txinfo7.test \
+txinfo8.test \
+txinfo9.test \
+txinfo10.test \
+txinfo13.test \
+txinfo16.test \
+txinfo17.test \
+txinfo18.test \
+txinfo19.test \
+txinfo20.test \
+txinfo21.test \
+txinfo22.test \
+txinfo23.test \
+txinfo24.test \
+txinfo25.test \
+txinfo26.test \
+txinfo27.test \
+txinfo28.test \
+txinfo29.test \
+txinfo30.test \
+transform.test \
+unused.test \
+vars.test \
+vars3.test \
+vartar.test \
+version.test \
+version2.test \
+version3.test \
+version4.test \
+version6.test \
+version7.test \
+version8.test \
+vpath.test \
+vtexi.test \
+vtexi2.test \
+warnopts.test \
+werror.test \
+werror2.test \
+whoami.test \
+xsource.test \
+yacc.test \
+yacc2.test \
+yacc3.test \
+yacc4.test \
+yacc5.test \
+yacc6.test \
+yacc7.test \
+yacc8.test \
+yaccpp.test \
+yaccvpath.test
+
 EXTRA_DIST = ChangeLog-old $(TESTS)
 
 # Each test case depends on defs, aclocal, and automake.
index 9975fee..86ccef0 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2006  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -33,7 +33,8 @@ mkdir dir
 
 cat > Makefile.am << 'END'
 SUBDIRS = dir
-TESTS = subrun.sh
+TESTS = \
+  subrun.sh
 subrun.sh:
        (echo '#! /bin/sh'; echo 'dir/echo.sh') > $@
        chmod +x $@
@@ -60,3 +61,8 @@ grep 'PASS: subrun.sh' stdout
 # in check.test and check3.test).
 grep 'check: check-recursive' Makefile.in
 grep 'check: check-am' dir/Makefile.in
+
+# Make sure subrun.sh is still on its line as above.  This means Automake
+# hasn't rewritten the TESTS line unnecessarily (we can tell, because all
+# Automake variables are reformatted by VAR_PRETTY).
+grep '  subrun.sh' Makefile.in
index 27c75a5..83afcf0 100755 (executable)
@@ -54,4 +54,7 @@ $MAKE check
 test -f ok
 EXEEXT=.bin $MAKE -e print-tests >output
 cat output
+# No am__EXEEXT_* variable is needed.
+grep '_EXEEXT' Makefile.in && exit 1
 grep 'BEG: one.bin two.bin :END' output
+$FGREP 'TESTS = $(check_PROGRAMS)' Makefile.in
index 6e31a9a..bb82012 100755 (executable)
@@ -78,3 +78,8 @@ grep 'prg1.bin prg3.bin prg4 baz.bin bar.bin' output
 $MAKE print-barbaz > output
 cat output
 grep 'bar baz bar' output
+
+# Only two am__EXEEXT_* variables are needed here: one for BAR, and one
+# BAZ.  The latter must use the former.
+test 2 = `grep '__EXEEXT_. =' Makefile.in | wc -l`
+grep 'am__EXEEXT_2 = .*am__EXEEXT_1' Makefile.in
index f2f2a9f..30bd75f 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -25,6 +25,7 @@
 set -e
 
 cat >> configure.in << 'END'
+AC_PROG_CC
 AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWX])
 AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXY])
 AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXYZ])
@@ -32,7 +33,7 @@ AC_OUTPUT
 END
 
 cat >Makefile.am <<'END'
-bin_PROGRAMS = @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@ @ABCDEFGHIJKLMNOPQRSTUVWXYZ@
+bin_PROGRAMS = @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@ @ABCDEFGHIJKLMNOPQRSTUVWXYZ@
 EXTRA_PROGRAMS =
 
 EXEEXT = .bin
@@ -45,12 +46,12 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE
 ./configure
-$MAKE print-programs >foo
+EXEEXT=.bin $MAKE print-programs >foo
 cat foo
-grep 'BEG: :END' foo
-am__empty=X $MAKE -e print-programs >foo
+grep 'BEG: x.bin :END' foo
+EXEEXT=.bin am__empty=X $MAKE -e print-programs >foo
 cat foo
-grep 'BEG: X :END' foo
+grep 'BEG: x.bin X :END' foo
 
 # Test for another bug, where EXTRA_PROGRAMS was removed because it was empty.
 grep EXTRA_PROGRAMS Makefile.in