automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: $(unexisting:.a=.b) bug


From: Alexandre Duret-Lutz
Subject: FYI: $(unexisting:.a=.b) bug
Date: Sat, 29 Nov 2003 22:47:06 +0100
User-agent: Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3 (gnu/linux)

I'm checking this in.

Before the fix the `echorule' rule of the test case output

BEG: foo1.obj foo4.obj bar3.obj bar2.obj :END
                                ^^^^^^^^

2003-11-29  Alexandre Duret-Lutz  <address@hidden>

        * 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.

Index: lib/Automake/Variable.pm
===================================================================
RCS file: /cvs/automake/automake/lib/Automake/Variable.pm,v
retrieving revision 1.24
diff -u -r1.24 Variable.pm
--- lib/Automake/Variable.pm    29 Nov 2003 18:02:40 -0000      1.24
+++ lib/Automake/Variable.pm    29 Nov 2003 21:41:42 -0000
@@ -1323,12 +1323,13 @@
                  $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,
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.534
diff -u -r1.534 Makefile.am
--- tests/Makefile.am   24 Nov 2003 22:13:42 -0000      1.534
+++ tests/Makefile.am   29 Nov 2003 21:41:42 -0000
@@ -445,6 +445,7 @@
 subst.test \
 subst2.test \
 substref.test \
+substre2.test \
 substtarg.test \
 suffix.test \
 suffix2.test \
Index: tests/Makefile.in
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.in,v
retrieving revision 1.690
diff -u -r1.690 Makefile.in
--- tests/Makefile.in   25 Nov 2003 22:58:07 -0000      1.690
+++ tests/Makefile.in   29 Nov 2003 21:41:43 -0000
@@ -559,6 +559,7 @@
 subst.test \
 subst2.test \
 substref.test \
+substre2.test \
 substtarg.test \
 suffix.test \
 suffix2.test \
Index: tests/substre2.test
===================================================================
RCS file: tests/substre2.test
diff -N tests/substre2.test
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ tests/substre2.test 29 Nov 2003 21:41:43 -0000
@@ -0,0 +1,55 @@
+#! /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 latter 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

-- 
Alexandre Duret-Lutz





reply via email to

[Prev in Thread] Current Thread [Next in Thread]