handle := substitution references
authorTom Tromey <tromey@redhat.com>
Sun, 8 Dec 1996 19:30:20 +0000 (19:30 +0000)
committerTom Tromey <tromey@redhat.com>
Sun, 8 Dec 1996 19:30:20 +0000 (19:30 +0000)
ChangeLog
automake.in
tests/ChangeLog
tests/Makefile.am
tests/colneq2.test [new file with mode: 0755]

index 8f1f910..3b0350f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Dec  8 12:29:52 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (variable_value_as_list): Handle := substitution
+       references.
+
 Sat Dec  7 11:34:39 1996  Tom Tromey  <tromey@cygnus.com>
 
        * automake.in (scan_one_configure_file): New sub.
index 3999b5c..f0923a7 100755 (executable)
@@ -3634,6 +3634,7 @@ sub variable_value_as_list
     }
     else
     {
+       local (@temp_list);
        $content_seen{$var} = 1;
        foreach (split (' ', $contents{$var}))
        {
@@ -3643,7 +3644,25 @@ sub variable_value_as_list
            # Handle variable substitutions.
            if (/^\$\{(.*)\}$/ || /^\$\((.*)\)$/)
            {
-               push (@result, &variable_value_as_list ($1, $var));
+               local ($varname) = $1;
+               local ($from, $to);
+               if ($varname =~ /^([^:]*):([^=]*)=(.*)$/)
+               {
+                   $varname = $1;
+                   $to = $3;
+                   ($from = $2) =~ s/(\W)/\\$1/g;
+               }
+
+               # Find the value.
+               @temp_list = &variable_value_as_list ($1, $var);
+
+               # Now rewrite the value if appropriate.
+               if ($from)
+               {
+                   grep (s/$from$/$to/, @temp_list);
+               }
+
+               push (@result, @temp_list);
            }
            else
            {
index 58a1707..a59b80f 100644 (file)
@@ -1,3 +1,7 @@
+Sun Dec  8 12:25:22 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * colneq2.test: New file.
+
 Sat Dec  7 12:52:45 1996  Tom Tromey  <tromey@cygnus.com>
 
        * output4.test: New file.
index 123bef0..27d0881 100644 (file)
@@ -20,7 +20,7 @@ comment2.test vpath.test symlink.test discover.test acinclude.test req.test \
 acsilent.test distdir.test lex2.test libobj4.test libobj5.test version.test \
 ranlib.test confvar.test confvar2.test stdlib.test cxxo.test colon2.test \
 colon3.test remake.test output.test output2.test remake2.test output3.test \
-output4.test
+output4.test colneq2.test
 
 EXTRA_DIST = defs $(TESTS)
 
diff --git a/tests/colneq2.test b/tests/colneq2.test
new file mode 100755 (executable)
index 0000000..a5af04c
--- /dev/null
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+# Test that := in var substitutions works.
+
+. $srcdir/defs || exit 1
+
+cat > Makefile.am << 'END'
+t = a b c
+EXTRA_DIST = $(t:=.test)
+END
+
+: > a.test
+: > b.test
+: > c.test
+
+$AUTOMAKE