Boost logo

Boost-Build :

From: David Abrahams (dave_at_[hidden])
Date: 2005-06-02 11:57:17


Vladimir Prus <ghost_at_[hidden]> writes:

> On Wednesday 01 June 2005 00:23, David Abrahams wrote:

>> >> > Let me recall that in V1, there's another notion, "installation
>> >> > root", and I think that for msvc that the directory that contains
>> >> > "bin", "lib" and "include" directories. So this gives three
>> >> > variables -- 'install root', 'directory with the compiler, and 'full
>> >> > path to the compiler'.
>>
>> I don't see any practical difference between your last 2 items,
>> 'directory with the compiler, and 'full path to the compiler'.
>
> full path to compiler includes all name of the binary.

OK.

>> > Recalling some of your syntax suggestions above, I think we can get a
>> > very clear interface. With
>> >
>> > configure msvc : 8.0 : some_path/bin/cl ;
>> >
>> > you specify the path to the compiler binary
>> >
>> > configure msvc : 8.0 : root=some_path ;
>> >
>> > you specify installation root, and it's clear that you specify the root.
>> > With
>> >
>> > configure gcc : 4.0 : root=/opt/gcc-4.0 ;
>> >
>> > you again specify the root, and with
>> >
>> > configure gcc : 4.0 : root=/usr c++=g++-4.0 ;
>> >
>> > you specify root and a name of compiler binary.
>>
>> I still can't understand giving compiler binaries special status.
>> Boost.Build is not going to be C++- or even compiler-centric, at least
>> not for much longer. And this sets up another thing to remember for
>> each (kind of) toolset: which binary in a given (kind of) toolset has
>> special status?
>
> I'm probably biased, but here are my reasons:
>
> 1. I find "some_path/bin/g++-4.0" nicer that
> "root=some_path/bin c++=g++-4.0"

Sure, it's nicer when it works, but it doesn't neccessarily
generalize. And we have to document how the system will look for
things. For example, what happens when the user passes

"user/local/gcc-4.0.0/bin/g++-4.0"

?

Will we stick user/local/gcc-4.0.0/lib in the LD_LIBRARY_PATH at all
the right moments?

Also, do you find

user/local/gcc-4.0.0/bin/g++-4.0

nicer than

user/local/gcc-4.0.0

?

> 2. I find "g++-4.0" nicer then "c++=g++-4.0"

Me too.

> 3. I don't want to change configure syntax in an incompatible way.
> If we introduce explicit "root=" syntax, the current syntax can
> stay.

Sure, but now is the time to "get things right." After v1 is retired
it will be much more important to worry about backward compatibility.

>> > Maybe we can start with a fully general solution: user can override all
>> > the command line used by toolset with the exact command line. Hmm.. makes
>> > me wonder if this is implementable in bjam at all.
>>
>> I don't think it's easy. The user would have to be able to induce
>> early target binding.
>
> What do you mean?

I mean that in order to synthesize the complete text of a command-line
you have to be able to do the same processing on SEARCH, LOCATE, and
the grist that bjam does internally. However, I guess that's
reasonably easy now that we have GLOB, isn't it?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com
 

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