]> git.ipfire.org Git - thirdparty/make.git/commitdiff
bugfix for exported pattern-specific variables
authorBoris Kolpackov <boris@kolpackov.net>
Mon, 27 Sep 2004 18:09:52 +0000 (18:09 +0000)
committerBoris Kolpackov <boris@kolpackov.net>
Mon, 27 Sep 2004 18:09:52 +0000 (18:09 +0000)
ChangeLog
tests/ChangeLog
tests/scripts/features/patspecific_vars
variable.c

index bbedcd556884d82c4df9db9d1d9779bc0aed0ae9..7ad0ab8e60df29abc4f71085216393648f0e785d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-27  Boris Kolpackov  <boris@kolpackov.net>
+
+       * variable.c (initialize_file_variables): Mark pattern-specific
+       variable as a per-target and copy export status.
+
 2004-09-21  Boris Kolpackov  <boris@kolpackov.net>
 
        * file.c (snap_deps): Mark .PHONY prerequisites as targets.
index 542194e0521f31090da154a072326451086c99da..8420705b92a54377cab7219d56b389da0eab0e53 100644 (file)
@@ -1,3 +1,7 @@
+2004-09-27  Boris Kolpackov  <boris@kolpackov.net>
+
+       * scripts/features/patspecific_vars: Test exported variables.
+
 2004-09-22  Paul D. Smith  <psmith@gnu.org>
 
        * run_make_tests.pl (run_make_test): Don't add newlines to the
index 9ace5c4130fcc168a81fba7a2750cf68023ff8eb..74de9bb7dea45858d77c314377817198c175635f 100644 (file)
@@ -61,4 +61,13 @@ $answer = "baz: foo two baz\nfour.x: foo two baz\n";
 $answer = "aaa bbb\nccc ddd\n";
 &compare_output($answer,&get_logfile(1));
 
+# TEST #5 -- test pattern-specific exported variables
+#
+run_make_test('
+/%: export foo := foo
+
+/bar:
+       @test "$(foo)" == "$$foo"
+', '', '');
+
 1;
index 7b9d0d8db41c57f3a3fa0210d8ee60acb913253e..f6cca0d22759e4197a38f3fea8beca7918dbaf18 100644 (file)
@@ -493,10 +493,17 @@ initialize_file_variables (struct file *file, int reading)
           current_variable_set_list = file->pat_variables;
 
           do
-            /* We found one, so insert it into the set.  */
-            do_variable_definition (&p->variable.fileinfo, p->variable.name,
-                                    p->variable.value, p->variable.origin,
-                                    p->variable.flavor, 1);
+            {
+              /* We found one, so insert it into the set.  */
+              struct variable *v = do_variable_definition (
+                &p->variable.fileinfo, p->variable.name,
+                p->variable.value, p->variable.origin,
+                p->variable.flavor, 1);
+
+              /* Also mark it as a per-target and copy export status. */
+              v->per_target = p->variable.per_target;
+              v->export = p->variable.export;
+            }
           while ((p = lookup_pattern_var (p, file->name)) != 0);
 
           current_variable_set_list = global;