|
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