NetBSD-Bugs archive

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

Re: bin/47888: make(1) mishandles empty() inside loops



The following reply was made to PR bin/47888; it has been noted by GNATS.

From: David Laight <david%l8s.co.uk@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: bin/47888: make(1) mishandles empty() inside loops
Date: Fri, 7 Jun 2013 19:09:27 +0100

 On Wed, Jun 05, 2013 at 12:30:01AM +0000, dholland%NetBSD.org@localhost wrote:
 > >Number:         47888
 > >Category:       bin
 > >Synopsis:       make(1) mishandles empty() inside loops
 ...
 > make does not expand empty() correctly inside loops. It seems to be
 > taking the value of the loop variable from before/outside the loop.
 
 The problem is the way that make substitutes loop variables.
 In the 'old' days it used to substitute the loop varaiable and then
 parse the text.  This generated all sorts of issues.
 
 I changed if to transform $(loop_var) into $(:U<loop_var_data>)
 so that the loop variable text still comes from a variable substitution.
 
 However, and noted, this doesn't detect empty() or defined().
 
 A better solution might be to put the loop variable value into the
 symbol table for 'pass 1' substitutions and only do the $(:U<text>)
 fudge for all extant loop variables when command lines are saved.
 
 This probably isn't that hard - or wouldn't be it it wasn't make!
 
        David
 
 -- 
 David Laight: david%l8s.co.uk@localhost
 


Home | Main Index | Thread Index | Old Index