2003-11-29 Alexandre Duret-Lutz <adl@gnu.org>
+ * lib/Automake/Variable.pm (_do_recursive_traversal): Do not
+ update @_substfroms and @_substfroms for undefined variables.
+ * tests/substre2.test: New file.
+ * tests/Makefile.am (TESTS): Add substre2.test.
+
* lib/Automake/VarDef.pm (value): Rename as ...
(raw_value): ... this.
(value): New method, strip # and \\\n.
$to = $3;
$from = quotemeta $2;
}
- push @_substfroms, $from;
- push @_substtos, $to;
my $subvar = var ($subvarname);
# Don't recurse into undefined variables.
next unless $subvar;
+ push @_substfroms, $from;
+ push @_substtos, $to;
+
my @res = $subvar->_do_recursive_traversal ($parent,
$fun_item,
$fun_collect,
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2003 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Test for bug in variable substitution references, where
+# undefined variables break later substitutions.
+
+required=gcc
+. ./defs || exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+
+foo = foo.a foo.b $(doesnt_exist)
+bar = bar.a bar.b
+var1 = $(foo:.a=1.c) $(doesnt_exist:.b=2.c) $(bar:.a=3.c)
+var2 = $(var1:.b=4.c)
+
+bin_PROGRAMS = foo
+foo_SOURCES = $(var2)
+
+OBJEXT = obj
+echorule:
+ @echo BEG: $(foo_OBJECTS) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE echorule >output
+cat output
+grep 'BEG: foo1.obj foo4.obj bar3.obj bar4.obj :END' output