Blame SOURCES/make-3.82-var.patch

d85e8e
commit ae2ab76faca93cad3059808b14d02f5565275e31
d85e8e
Author: Paul Smith <psmith@gnu.org>
d85e8e
Date:   Tue Nov 30 14:48:52 2010 +0000
d85e8e
d85e8e
    Check if the target-specific variable is the same as the global
d85e8e
    variable, and if so don't try to update it.  Savannah bug #31743.
d85e8e
d85e8e
diff --git a/read.c b/read.c
d85e8e
index 7b5b0dd..761e976 100644
d85e8e
--- a/read.c
d85e8e
+++ b/read.c
d85e8e
@@ -1802,7 +1802,8 @@ record_target_var (struct nameseq *filenames, char *defn,
d85e8e
           int len = strlen(v->name);
d85e8e
 
d85e8e
           gv = lookup_variable (v->name, len);
d85e8e
-          if (gv && (gv->origin == o_env_override || gv->origin == o_command))
d85e8e
+          if (gv && v != gv
d85e8e
+              && (gv->origin == o_env_override || gv->origin == o_command))
d85e8e
             {
d85e8e
               if (v->value != 0)
d85e8e
                 free (v->value);
d85e8e
diff --git a/tests/scripts/features/targetvars b/tests/scripts/features/targetvars
d85e8e
index 6afd48a..a9b8dbe 100644
d85e8e
--- a/tests/scripts/features/targetvars
d85e8e
+++ b/tests/scripts/features/targetvars
d85e8e
@@ -237,6 +237,16 @@ a: ; @echo "$(FOO)"
d85e8e
 
d85e8e
 run_make_test(undef, 'FOO=C', "C f1\n");
d85e8e
 
d85e8e
+# TEST #19: Conditional variables with command-line settings
d85e8e
+
d85e8e
+run_make_test('
d85e8e
+a: FOO ?= f1
d85e8e
+a: ; @echo "$(FOO)"
d85e8e
+',
d85e8e
+              '', "f1\n");
d85e8e
+
d85e8e
+run_make_test(undef, 'FOO=C', "C\n");
d85e8e
+
d85e8e
 # TEST #20: Check for continuation after semicolons
d85e8e
 
d85e8e
 run_make_test(q!