In article <20100609171621.ga23...@britannica.bec.de>, Joerg Sonnenberger <jo...@britannica.bec.de> 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