automake-ng
[Top][All Lists]
Advanced

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

Re: [Automake-NG] [FYI] [ng] vars: names of iterating vars in $(foreach)


From: Akim Demaille
Subject: Re: [Automake-NG] [FYI] [ng] vars: names of iterating vars in $(foreach) loops shorter & simpler
Date: Tue, 24 Jul 2012 16:34:10 +0200

Le 24 juil. 2012 à 16:03, Stefano Lattarini a écrit :

>> I might be stretching things too far, but imagine that some
>> one defines v in her Makefile.am, at the top level, because
>> for instance she can factor longish definitions in EXTRA_DIST.
>> 
>> v = headers/include/pkg
>> EXTRA_DIST = $(v)/1.h $(v)/2.h $(v)/3.h $(v)/4.h $(v)/5.h
>> 
>> Then I guess you are capturing this $(v) to mean something else.
>> 
> No.  My point is exactly that, even with your "devil's advocate"
> example above, the use of an "$(foreach v, ...)" construct between
> the 'v' and 'EXTRA_DIST' definition would not cause any problem!
> Isn't that great? :-)  See also new test 't/spy-foreach.sh'.

I think you are missing my point.  Your spy test does not
check what I am talking about.  Yet it does work, because,
quoting the documentation:

> The first two arguments, VAR and LIST, are expanded before anything
> else is done; note that the last argument, TEXT, is *not* expanded at
> the same time.

So, indeed, in the following example, every use of the
outer $(v) is resolved even before the first temporary
$(v) is defined.  So my point is moot.

$ cat Makefile
v = $(info "v")root
list = $(v)/1 $(v)/2
all:
        echo $(foreach v,$(list),{$(info "body")$(v)})
$ make
"v"
"v"
"body"
"body"
echo {root/1} {root/2}
{root/1} {root/2}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]