make(1) is broken?

Oliver Fromme olli at lurza.secnetix.de
Thu Aug 10 18:06:44 UTC 2006


Stanislav Sedov wrote:
 > Oliver Fromme wrote:
 > > I think it is better not to rely on that side effect.  It
 > > isn't well documented and might change without notice in
 > > the future.
 > 
 > Thanks for explanation. I suppose, however, that .for behavior could
 > be used rather safely for it's well documented in make(1).

I wouldn't call that side-effect "well-documented".  The
manpage says:

  |  The iteration variable is successively set to each
  |  word, and substituted in the make-rules inside the
  |  body of the for loop.

While that description is correct, it doesn't clearly
state the side-effect of allowing nested expansion of
the loop variable within other variables, i.e. the fact
that a line VAR=${foo:M${bar}} is parsed and handled
completely differently, depending on whether "bar" is
a loop variable or a normal variable.

Well, if you like it, you're free to use that hack to
wrap your nested variable expansion in a dummy for loop.
But don't complain if it doesn't work anymore in FreeBSD 8.
:-)

 > According
 > to this manpage, it's not a side effect - .for loops always unrolled
 > and variable substitutions occurs.

Yes, but the point is that _nested_ variable substitutions
(inside other variables) are only documented to work for
the ":S" modifier, but nowhere else.  Relying on something
that's not documented is asking for trouble.

Best regards
   Oliver

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.

"Python tricks" is a tough one, cuz the language is so clean. E.g.,
C makes an art of confusing pointers with arrays and strings, which
leads to lotsa neat pointer tricks; APL mistakes everything for an
array, leading to neat one-liners; and Perl confuses everything
period, making each line a joyous adventure <wink>.
        -- Tim Peters


More information about the freebsd-hackers mailing list