Good day, The following makefile prints 'B' instead of 'A'.
a := A %bar : arg := $a %bar : ; @echo $(arg) a := B foobar: Patch is attached for those who find this behavior surprising. Also note that this patch does not address the following cases: %bar : a := a %bar : $a_b := a_b # doesn't work, equivalent to _b := a_b %bar : a := a %bar : a_b := $a_b # doesn't work, equivalent to a_b := _b comments are welcome, -boris
Index: read.c =================================================================== RCS file: /cvsroot/make/make/read.c,v retrieving revision 1.131 diff -u -r1.131 read.c --- read.c 22 Mar 2004 15:11:49 -0000 1.131 +++ read.c 9 Apr 2004 18:47:48 -0000 @@ -1686,9 +1686,19 @@ p = create_pattern_var (name, percent); p->variable.fileinfo = *flocp; v = parse_variable_definition (&p->variable, defn); - v->value = xstrdup (v->value); + if (!v) error (flocp, _("Malformed pattern-specific variable definition")); + + if (v->flavor == f_simple) + { + v->value = allocated_variable_expand (v->value); + } + else + { + v->value = xstrdup (v->value); + } + fname = p->target; } else
signature.asc
Description: Digital signature
_______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-make