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.
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.
-# 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
# 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.
$_appendvar = 0;
@_var_order = ();
%_gen_varname = ();
+ %_gen_varname_n = ();
$_traversal = 0;
}
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:
#
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])>
# 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
'', $where, VAR_PRETTY);
}
}
- set_seen $varname;
}
+ set_seen $varname;
return "\$($varname)";
},
%options);
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
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
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
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.
#! /bin/sh
-# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
#
# This file is part of GNU Automake.
#
cat > Makefile.am << 'END'
SUBDIRS = dir
-TESTS = subrun.sh
+TESTS = \
+ subrun.sh
subrun.sh:
(echo '#! /bin/sh'; echo 'dir/echo.sh') > $@
chmod +x $@
# 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
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
$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
#! /bin/sh
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
#
# This file is part of GNU Automake.
#
set -e
cat >> configure.in << 'END'
+AC_PROG_CC
AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWX])
AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXY])
AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXYZ])
END
cat >Makefile.am <<'END'
-bin_PROGRAMS = @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@ @ABCDEFGHIJKLMNOPQRSTUVWXYZ@
+bin_PROGRAMS = x @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@ @ABCDEFGHIJKLMNOPQRSTUVWXYZ@
EXTRA_PROGRAMS =
EXEEXT = .bin
$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