Hello!
Given this input:
f0 = $(foreach s,foobar,$(firstword $s:))
e0 = $(foreach s,foobar,$(eval $s:))
f1 = $(foreach s,foobar, $(firstword $s:))
e1 = $(foreach s,foobar, $(eval $s:))
f2 = $(foreach s,foobar, $(firstword $s:))
e2 = $(foreach s,foobar, $(eval $s:))
all:
%% [EMAIL PROTECTED] (Toomas Rosin) writes:
tr> Given this input:
tr>e0 = $(foreach s,foobar,$(eval $s:))
tr>e0 ==
tr> I certainly did not expect this!
Nevertheless, this one is correct.
tr>e1 == f
tr>e2 == fo
These are indeed incorrect; they should all be like e0
Actually, I may have been too abrupt when I said your fix was "not
correct"; I mean, it _is_ not correct in some sense since your post
contains some incorrect statements about how and why the problem occurs,
and also incorrect implications for the fix.
However, the basic idea behind your proposed
You <[EMAIL PROTECTED]> wrote:
Your fix is not correct; note that the documentation for $(eval ...)
says:
The result of the `eval' function is always the empty string;
thus, it can be placed virtually anywhere in a makefile without
causing syntax errors.
Thus, there is no
You <[EMAIL PROTECTED]> wrote:
your post contains some incorrect statements about how and why the
problem occurs, and also incorrect implications for the fix.
Well, make's code is not easy to debug (deep recursion), and I have
not done this before. I certainly do not see all the issues eve
%% [EMAIL PROTECTED] (Toomas Rosin) writes:
tr> Well, make's code is not easy to debug (deep recursion), and I
tr> have not done this before. I certainly do not see all the issues
tr> even now, after spending a long and busy day gdb'ing it. I simply
tr> tried to find the simplest working