Boost logo

Boost-Build :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2005-09-14 15:19:39


Hi All,

I am interested in the changes/development going on with respect to the
msvc.jam toolset and related functionality. I have been experimenting
with some things myself. These are:

[1] warnings support (designed for genericity, only supported in msvc
for now).

# builtin.jam
feature warnings : default on off all strict : propagated ;

I can look at extending support for this on Borland, GCC, CodeWarrior
and possibly others.

[2] support for specifying the character set.

# builtin.jam
feature charset : narrow unicode mbcs : composite link-incompatible ;
feature.compose <charset>unicode : <define>UNICODE <define>_UNICODE ;
feature.compose <charset>mbcs : <define>MBCS <define>_MBCS ;

This is targeted for the Windows platform. I am not sure about how this
would work with *nix or MacOS.

[3] support for targetting versions of windows:

# builtin.jam
feature windows : default 95 98 me nt 2k xp 2k3 vista : composite ;
feature.compose <windows>95 : <define>WINVER=0x0400
<define>_WIN32_WINDOWS=0x0400 ;
feature.compose <windows>98 : <define>WINVER=0x0400
<define>_WIN32_WINDOWS=0x0410 ;
feature.compose <windows>me : <define>WINVER=0x0500
<define>_WIN32_WINDOWS=0x0500 ;
feature.compose <windows>nt : <define>WINVER=0x0400
<define>_WIN32_WINNT=0x0400 ;
feature.compose <windows>2k : <define>WINVER=0x0500
<define>_WIN32_WINNT=0x0500 ;
feature.compose <windows>xp : <define>WINVER=0x0501
<define>_WIN32_WINNT=0x0501 ;
feature.compose <windows>2k3 : <define>WINVER=0x0502
<define>_WIN32_WINNT=0x0502 ;
feature.compose <windows>vista : <define>WINVER=0x0600
<define>_WIN32_WINNT=0x0600 ;

[4] support for managed (CLR) and Java bytecode

# builtin.jam
feature bytecode :
native # Use the native assembler instruction set
clr # Use the CLR (Common Language Runtime) instruction set
java # Use the Java bytecode
: propagated link-incompatible ;

feature clr :
cppcli # Use the new C++/CLI (VC8-style) style CLR
managed # Use old-style (VC7.x-style) managed code syntax
pure # Use C++/CLI (VC8-style) pure CLR
safe # Use C++/CLI (VC8-style) safe (validated) CLR
: propagated ;

The clr feature should really be moved to msvc.jam as it is MS specific.
Also, the Java bytecode isn't supported as there are currently no Java
toolsets.

[5] assembler support on MS

At the moment, this uses explicitly set options, but I am looking at
moving these out. Also, there is a "safeseh" option for both assembler
and compiler that tells it to use sahe structured exception handling
(Windows C-style exceptions). This option allows you to hook into the
Windows exception mechanism for dealing with access violations or
providing stack tracing facilities with msvc.

I will need to separate these out and generate patches for them. Also,
should there be any coordination effort with the patches that Andrey is
providing?

- Reece
Software Engineer/Sophos
www.sophos.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