Boost logo

Boost-Build :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-06-18 17:48:01


From: "Thomas Witt" <witt_at_[hidden]>

> I have to admit I haven't thought of that option, but making them targets
> still seems to be a valid strategy to me.

In theory they could collide with real target names, and would forever be
marked NOTFILE whether they were supposed to be or not.

> One problem might be the (ab)use of
> the name target in Jam.

Then think of it as "dependency graph node". I think "target" is an
acceptable abbreviation.

> IIUC sources are targets as well,

Yes.

> source targets
> (sounds slightly paradox to me). I think it is an acceptable model to
think
> of cmdline options being sources for the cmdfile in the same way
filenames
> are sources for the cmdfile. From the cmdfiles point of view they are
exactly
> the same.

No; they should not be bound to the filesystem and they should not arise in
the dependency graph.

> > Careful, though: some options have elements that require target binding
> > through SEARCH and LOCATE.
>
> For me there are two questions here. First should there be any binding on
> options at all and second what to do about options constructed from bound
> values and some sort of decoration.
>
> On the first point I decided to have binding. It's a result of the fact
that
> options are handled as targets.

That seems like circular reasoning. "It's OK to make them targets, which I
justify by saying there's no problem with binding because I'm calling them
targets".

> I know that there is a risk of a name clash,
> but I think that is really unlikely. When using an "on" variable there is
> choice, but a decision has to be made. When looking at msvc-tools you
will
> notice that in the current state this is actually a non-issue, as all
options
> parameters for the with-command-file rule do not have bound values.

No, they ALL have bound values, since $(<) and $(>) are always bound in
actions.

> This didn't happen by chance.
>
> As for the second point, I can't think of any fix. I think unless some
> "manual" binding is possible

I'm lost. What do you mean?

> , this simply can't be done with a general
> cmdfile rule.

What can't be done?

> Given the fact that these kind of options typically do not take
> to much cmdline space this seems not to be a real problem.
>
> What was clearly an error on my side, these binding issues should have
been
> addressed in the with-command-file rule documentation.
>
> > You want to be sure not to interfere with that
> > by pasting the target elemeents to option names.
>
> See above.
>
> > I don't think the change
> > you're trying to make can be made without careful consideration, or you
may
> > well break something.
>
> Actually there is a bug in the code, but it is not binding related.
Currently
> in msvc-tools the quotes on option arguments (think /LIBPATH:"c:\bla")
are
> not preserved. As a result you can not have whitespace in there. This was
an
> oversight. The given state is still able to build boost (I checked
> msvc/metrowerks, in advance).

I'm sure that whether it works depends where various tools are installed,
etc. For example, try msvc-stlport with a space in the STLPORT_ROOT path.
Do you have a fix for this?

> > If you're not sure you know how to do it right,
>
> Hope this makes some sense

Not yet, but keep trying, please.

-Dave

 


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