Subject: Re: [Boost-build] prototyping alternative Boost.Build syntax
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2016-10-29 17:56:06
On 10/29/2016 03:29 PM, Stefan Seefeld wrote:
> On 29.10.2016 17:21, Steven Watanabe wrote:
>>> (Where in the code does the expansion happen ?)
>> I don't understand the question.
> I was wondering where in the (C) code these variables are defined, and
> where the expansion is implemented.
Equivalence of $(<), $(>), $(1), and $(2) comes from here:
Expansion of modifiers is somewhat complicated.
They're parsed into this struct:
and the top level function for processing them is here:
Most individual modifiers are applied here:
Handling of the bindlist happens here:
$(>) and $(<) are the arguments of the rule and
are set up by make1list at:
> (I was in particular wondering about
> the modifiers such as ":D" that attribute special semantics to "<". Are
> rule / action arguments always assumed to be strings ?
Yes. Every variable in Jam is always a list
of strings. There is nothing else.
> Does the use of
> "2:D" imply that the 2nd argument will be interpreted as a filename
> whose directory name is to be taken ?
Yes. These modifiers can always be used
in any variable expansion. There's a list
of modifiers here:
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk