? Intel.diff ? example/qt/qt4/hello/bin Index: build/toolset.jam =================================================================== RCS file: /cvsroot/boost/boost/tools/build/v2/build/toolset.jam,v retrieving revision 1.39 diff -u -r1.39 toolset.jam --- build/toolset.jam 10 Feb 2006 15:00:52 -0000 1.39 +++ build/toolset.jam 7 Sep 2006 07:46:40 -0000 @@ -44,6 +44,23 @@ } +# Specifies if the 'flags' rule should do checking that +# the invoking module is the same as module we're setting +# flag for. +# 'v' can be either 'checked' or 'unchecked'. +# Subsequent call to 'pop-checking-for-flags-module' +# will restore the behaviour that was in effect before +# calling this rule. +rule push-checking-for-flags-module ( v ) +{ + .flags-module-checking = $(v) $(.flags-module-checking) ; +} + +rule pop-checking-for-flags-module ( ) +{ + .flags-module-checking = $(.flags-module-checking[2-]) ; +} + # Specifies the flags (variables) that must be set on targets under certain # conditions, described by arguments. rule flags ( rule-or-module # If contains dot, should be a rule name. @@ -104,7 +121,9 @@ else { local module_ = [ MATCH "([^.]*).*" : $(rule-or-module) ] ; - if $(unchecked) != unchecked && $(module_) != $(caller) + if $(unchecked) != unchecked + && $(.flags-module-checking[1]) != unchecked + && $(module_) != $(caller) { errors.error "Module $(caller) attempted to set flags for module $(module_)" ; } @@ -387,9 +406,18 @@ } } -# properties listed in prohibited-properties won't -# be inherited. Note that on and -# off are two different properties +# Brings all flag definitions from 'base' toolset into +# other toolset 'toolset'. Flag definitions which +# condition make use of properties in 'prohibited-properties' +# are ignored. Don't confuse property and feature, for +# example on and off, so blocking +# one of them does not block the other one. +# +# The flag conditions are not altered at all, so if condition +# includes name, or version of base toolset, it won't ever match +# the inheriting toolset. When such flag settings must be +# inherited, define a rule in base toolset module and call it +# as needed. rule inherit-flags ( toolset : base : prohibited-properties * ) { for local f in $(.module-flags.$(base)) Index: tools/intel-win.jam =================================================================== RCS file: /cvsroot/boost/boost/tools/build/v2/tools/intel-win.jam,v retrieving revision 1.9 diff -u -r1.9 intel-win.jam --- tools/intel-win.jam 5 Apr 2006 07:10:36 -0000 1.9 +++ tools/intel-win.jam 7 Sep 2006 07:46:40 -0000 @@ -63,7 +63,7 @@ flags intel-win.compile .CC $(condition) : $(setup)icl ; flags intel-win.link .LD $(condition) : $(setup)xilink ; - flags intel-win.archive .LD $(condition) : $(setup)xilink ; + flags intel-win.archive .LD $(condition) : $(setup)xilink /lib ; local m = [ MATCH (.).* : $(version) ] ; local major = $(m[1]) ; @@ -109,6 +109,8 @@ ; } } + + if $(compatibility) && $(compatibility) != native { C++FLAGS += /Q$(base-vc) ; @@ -131,6 +133,15 @@ flags intel-win CFLAGS $(condition) : $(C++FLAGS) ; + if ! $(compatibility) + { + # If there's no backend version, assume 7.1. + compatibility = 7.1 ; + } + + msvc.configure-version-specific intel-win : $(compatibility) : $(condition) ; } flags intel-win.link LIBRARY_OPTION intel : "" ; + + Index: tools/msvc.jam =================================================================== RCS file: /cvsroot/boost/boost/tools/build/v2/tools/msvc.jam,v retrieving revision 1.87 diff -u -r1.87 msvc.jam --- tools/msvc.jam 10 Jul 2006 17:54:35 -0000 1.87 +++ tools/msvc.jam 7 Sep 2006 07:46:40 -0000 @@ -362,9 +362,8 @@ } } } - # Set version-specific flags - configure-version-specific $(version) : $(condition) ; + configure-version-specific msvc : $(version) : $(condition) ; } } @@ -385,9 +384,15 @@ cpu-type-itanium = itanium itanium1 merced ; cpu-type-itanium2 = itanium2 mckinley ; - -local rule configure-version-specific ( version : condition ) +# Sets up flag definitions that are dependent on the version ot +# compiler. +# - 'version' is the version of compiler in N.M format. +# - 'condition' is the property set to be used as condition for flag +# - 'toolset' is the toolset for which flag settings are to be defined +# This makes the rule reusable for other msvc-option-compatible compilers. +rule configure-version-specific ( toolset : version : condition ) { + toolset.push-checking-for-flags-module unchecked ; # Starting with versions 7.0, the msvc compiler have the /Zc:forScope # and /Zc:wchar_t options that improve C++ standard conformance, but # those options are off by default. @@ -396,14 +401,14 @@ # or if the installation path contain 7.* (this is checked above). if ! [ MATCH ^(6\\.) : $(version) ] { - flags msvc.compile CFLAGS $(condition) : /Zc:forScope /Zc:wchar_t ; - flags msvc.compile.c++ C++FLAGS $(condition) : /wd4675 ; + flags $(toolset).compile CFLAGS $(condition) : /Zc:forScope /Zc:wchar_t ; + flags $(toolset).compile.c++ C++FLAGS $(condition) : /wd4675 ; # disable the function is deprecated warning # Some version of msvc have a bug, that cause deprecation # warning to be emitted even with /W0 - flags msvc.compile CFLAGS $(condition)/off : /wd4996 ; + flags $(toolset).compile CFLAGS $(condition)/off : /wd4996 ; # 64-bit compatibility warning - flags msvc.compile CFLAGS $(condition)/all : /Wp64 ; + flags $(toolset).compile CFLAGS $(condition)/all : /Wp64 ; } # @@ -413,36 +418,37 @@ if [ MATCH ^([67]\\.) : $(version) ] { # 8.0 deprecates some of the options - flags msvc.compile CFLAGS $(condition)/speed $(condition)/space : /Ogiy /Gs ; - flags msvc.compile CFLAGS $(condition)/speed : /Ot ; - flags msvc.compile CFLAGS $(condition)/space : /Os ; - - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/ : /GB ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/i386 : /G3 ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/i486 : /G4 ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g5) : /G5 ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g6) : /G6 ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g7) : /G7 ; + flags $(toolset).compile CFLAGS $(condition)/speed $(condition)/space : /Ogiy /Gs ; + flags $(toolset).compile CFLAGS $(condition)/speed : /Ot ; + flags $(toolset).compile CFLAGS $(condition)/space : /Os ; + + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/ : /GB ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/i386 : /G3 ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/i486 : /G4 ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g5) : /G5 ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g6) : /G6 ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-i386)/$(cpu-type-g7) : /G7 ; # Improve floating-point accuracy. Otherwise, some of C++ Boost's # "math" tests will fail. - flags msvc.compile CFLAGS $(condition) : /Op ; + flags $(toolset).compile CFLAGS $(condition) : /Op ; # 7.1 and below have single-threaded static RTL - flags msvc.compile CFLAGS $(condition)/off/static/single : /ML ; - flags msvc.compile CFLAGS $(condition)/on/static/single : /MLd ; + flags $(toolset).compile CFLAGS $(condition)/off/static/single : /ML ; + flags $(toolset).compile CFLAGS $(condition)/on/static/single : /MLd ; } else { # 8.0 adds some more options - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-amd64)/ : /favor:blend ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-amd64)/$(cpu-type-em64t) : /favor:EM64T ; - flags msvc.compile CFLAGS $(condition)/$(cpu-arch-amd64)/$(cpu-type-amd64) : /favor:AMD64 ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/ : /favor:blend ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/$(cpu-type-em64t) : /favor:EM64T ; + flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/$(cpu-type-amd64) : /favor:AMD64 ; # 8.0 only has multi-threaded static RTL - flags msvc.compile CFLAGS $(condition)/off/static/single : /MT ; - flags msvc.compile CFLAGS $(condition)/on/static/single : /MTd ; + flags $(toolset).compile CFLAGS $(condition)/off/static/single : /MT ; + flags $(toolset).compile CFLAGS $(condition)/on/static/single : /MTd ; } + toolset.pop-checking-for-flags-module ; }