Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/usr.bin/make



In article <20100609171621.GA23176%britannica.bec.de@localhost>,
Joerg Sonnenberger  <joerg%britannica.bec.de@localhost> wrote:
>On Wed, Jun 09, 2010 at 12:58:23PM -0400, Christos Zoulas wrote:
>> Log Message:
>> Explain variable expansion better. Requested by Aleksey Cheusov
>
>This is wrong. Loop variables are not exapnded on each loop iteration.
>Each loop iteration effectively creates a new variable. The rest of his
>confusion comes from two simple facts:
>(1) += is lazy in bmake. This is different from FreeBSD, where it forces
>expansion.
>(2) The evaluation of j is lazy as well. That's why he sees the last
>loop iteration.

Well, it was true when I wrote the "for" code (more than 16 years
ago!). I guess dsl re-wrote it, but the net effect is the same.

When did FreeBSD changed += not to be lazy? That would break a lot
of existing Makefiles I presume.

>Therefore I don't agree with the content and it is actually making
>things a lot more complicated than necessary.

How is the net effect different than what I am describing? Feel free
to improve the explanation, to match the actual implementation.

christos



Home | Main Index | Thread Index | Old Index