Boost logo

Boost-Build :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-07-05 17:11:07

From: "Vladimir Prus" <ghost_at_[hidden]>

> I'm not pressing, but it would be really great if #2 is taken by someone
> <0.003 wink to David> . I realize that there's a some new code to dig
> but it's better to do it now then later.

OK, I have accepted the task, and I have some questions:

1. targets.jam says:

# There are three kinds of targets: "abstract", which correspond to
# targets explicitly defined in Jamfile; "virtual", which correspond
# to possible build product with defined properties and "actual", which
# are targets in Jam sense. The "virtual" targets are generated during
# search for the best transformation sequence, and some of them can be
# later 'actualized'.
# Actual targets are all derived from 'abstract-target' class.

Whoa, I'm confused! First you say that there are these three distinct
categories... in particular, that "abstract" targets and "actual" targets
are not the same thing, but then you go on to say that "actual" targets are
derived from "abstract" targets. Am I to take it that an "actual" target
is-a "abstract" target -- IOW, does an "actual" target ALSO correspond to a
target explicitly defiend in a Jamfile? That would be very strange.

I can only imagine that you mean something different by "Actual" as used at
the beginning of the sentence, or that class "abstract-target" has no
correspondence to the category of "abstract" targets you're describing.
Either way, something needs to be clarified/renamed/reworded here. Are you
sure you don't mean for the first kind of target to be called "main"?

2. What is the meaning of main-target.add-variant? Is this a different
meaning of "variant" than "debug/release"? Oh, I see that explained
somewhat in the comment at the beginning. I would prefer to pick a
different name; this overloaded meaning is confusing. I also don't
understand how these "other variants" will actually get created.

3. The comment on main-target.generate isn't a sentence. I can't understand
what it means:
# Select a variant return virtual targets that it generates
rule generate ( properties * )

4. You write:
> it is required that after building every main target, the
> project target that cause the build

What does it mean for a project target to "cause the build" of a main
I guess you mean what it does in its "main-target" method?

> compare free properties
> for all virtual targets

How do I find "all virtual targets"?

> with free properties in its requirements.

Obviously, I still find targets.jam somewhat bewildering. I'm happy to look
through the code, but it's hard for me to understand the comments. Maybe
pass through the comments to try to clarify your intention would be
helpful. Even redundancies like:

# So, main targets
# keep a list of variants, which are instances of 'abstract-target'.
# Each variant is an instance of 'abstract-target'.

tend to get in the way of comprehensibility. I still want to see an
inheritance diagram.

Thanks, and sorry,


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