Boost logo

Boost-Build :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2005-10-03 16:44:40


Alexey Pakhunov wrote:
> Reece Dunn wrote:
>
>>That's where I am moving to. That is why I am using $(root), etc. The
>>main problems are:
>>* VC6 - does not follow the pattern that VC 7.0, 7.1 and 8.0 do;
>>* VC7.1toolkit - this only has a single PATH, INCLUDE and LIB setting;
>
> Don't worry, I know the trick. :-) Try this:
> [snip]
> Basically this is the generic code you need. In order to add a new
> version of a compiler (or a configuration) we will need to add few new
> variables starting with '.version'.

Cool!

NOTE: I have tried an experimental version of this and have noticed a
performance decrease in load time :( (probably what Rene mentioned about
memory consumption) and am having problems getting it to work:

* the $(root) variable needs to be defined (in configure-really);

* $(root) refers to path/vc[7|98]/bin/cl.exe for normal compilers, so
the paths should be ../include, etc. instead of vc/include;

* I am getting:

'cl' is not recognized as an internal or external command,
operable program or batch file.

set PATH=retval;%PATH%
set PATH=retval;%PATH%
set PATH=retval;%PATH%
set PATH=retval;%PATH%

cl ...

!!

Hmm. Your idea is good in theory, though.

> (I didn't validated actual paths but they were taken from corresponding
> vcvars32.bat files)

No worries. I will test it for 6.0, 7.1 and 8.0+variants.

>>* compilers from the PlatformSDK - I'm not sure how these are configured;
>
> They will add own INCLUDE, LIB and PATH settings. New INCLUDE and LIB
> directories will be added in front of corresponding variables; PATH - at
> the end. (Yes, it sounds like order-sensitive features :-))

I am not talking about having VC7+PlatformSDK but

"c:/program files/Microsoft Platform SDK/bin/x86_ia64/cl.exe"

which is VC7.1 for IA64. See my reply to VC8 cross-compile for more details.

>>* embedded VC++ - I don't know what to do about this;
>>* VC8 PocketPC/SmartPhone - I have no idea how VC8 deals with these, I
>>cannot see any vcvars.bat for configuring these.
>
> Yeah. We need to see corresponding vcvars first. But anyway I think we
> will able to include them into the existing schema.

The one for x86_arm is:

@set PATH=C:\Program Files\Microsoft Visual Studio
8\VC\CE\bin\x86_arm;%PATH%
@set INCLUDE=C:\Program Files\Microsoft Visual Studio
8\VC\CE\INCLUDE;%INCLUDE%
@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\CW\LIB\arm4;%LIB%

@set INCLUDE=C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\include;%INCLUDE%
@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;%LIB%

but there are other things like defines (e.g. IA64/AMD64 add
<define>WIN64) and the linker machine setting, e.g.:

link.exe /machine:sh ...

>>There is still room for improvement in the genericity, but the important
>>thing is to get everything working before simplifying it.
>
> The more code we have the harder to debug it. Implementing five
> different configurations using 'if' logic produces a lot of code.

Sure. Especially when we add configurations for other configurations.

>>I have tried these with cygwin/bash, but I think they work because of
>>the $(setup) trick. I definitely agree that we should support NT and CYGWIN.
>
> The trick was needed only for calling vcvars32.bat. Setting environment
> variables works just fine. The only thing we should pay attention to
> proper path conversion logic.

Sure. I removed that logic in the previous version :).

- Reece

 


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