|
|
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!
|