Boost logo

Boost-Build :

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:

In Christ,
Steven Watanabe

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at