From: Alexandre Duret-Lutz Date: Sun, 9 Apr 2006 13:56:33 +0000 (+0000) Subject: * lib/Automake/Variable.pm (_hash_varname, _hash_values): New functions. X-Git-Tag: Release-1-9b~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d0eaef6e6a5aa18194602dd0be1b0af8f8e0d1b;p=thirdparty%2Fautomake.git * 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. --- diff --git a/ChangeLog b/ChangeLog index 3610681ed..2e2802545 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2006-04-09 Alexandre Duret-Lutz + * 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. diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm index 49cd2a143..1f89c5fe1 100644 --- a/lib/Automake/Variable.pm +++ b/lib/Automake/Variable.pm @@ -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); diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in index 9bae53ddf..1c950a3bc 100644 --- a/lib/Automake/tests/Makefile.in +++ b/lib/Automake/tests/Makefile.in @@ -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 diff --git a/tests/Makefile.in b/tests/Makefile.in index 7032e1826..5f21311ac 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -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. diff --git a/tests/check2.test b/tests/check2.test index 9975feec3..86ccef0f4 100755 --- a/tests/check2.test +++ b/tests/check2.test @@ -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 diff --git a/tests/check5.test b/tests/check5.test index 27c75a5a1..83afcf0dc 100755 --- a/tests/check5.test +++ b/tests/check5.test @@ -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 diff --git a/tests/exeext4.test b/tests/exeext4.test index 6e31a9af2..bb820128e 100755 --- a/tests/exeext4.test +++ b/tests/exeext4.test @@ -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 diff --git a/tests/subst2.test b/tests/subst2.test index f2f2a9fac..30bd75f32 100755 --- a/tests/subst2.test +++ b/tests/subst2.test @@ -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 = x @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