Skip to content

Commit

Permalink
Fix missing C++ flags args for msvc.
Browse files Browse the repository at this point in the history
Recent change fixed the use of CFLAGS vs. C++FLAGS which caused a bunch
of C++ options to dissappear. This brings then back by setting them to
appropriate OPTIONS, CFLAGS, or C++FLAGS var.
  • Loading branch information
grafikrobot committed Dec 27, 2020
1 parent 8d37b68 commit f558420
Showing 1 changed file with 44 additions and 44 deletions.
88 changes: 44 additions & 44 deletions src/tools/msvc.jam
Original file line number Diff line number Diff line change
Expand Up @@ -450,19 +450,19 @@ rule configure-version-specific ( toolset : version : conditions )
# version 7.* explicitly or if we auto-detected the version ourselves.
if ! [ MATCH ^(6\\.) : $(version) ]
{
toolset.flags $(toolset).compile CFLAGS $(conditions) : "/Zc:forScope" "/Zc:wchar_t" ;
toolset.flags $(toolset).compile OPTIONS $(conditions) : "/Zc:forScope" "/Zc:wchar_t" ;
toolset.flags $(toolset).compile.c++ C++FLAGS $(conditions) : /wd4675 ;

# Explicitly disable the 'function is deprecated' warning. Some msvc
# versions have a bug, causing them to emit the deprecation warning even
# with /W0.
toolset.flags $(toolset).compile CFLAGS $(conditions)/<warnings>off : /wd4996 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<warnings>off : /wd4996 ;

if [ MATCH "^([78]\\.)" : $(version) ]
{
# 64-bit compatibility warning deprecated since 9.0, see
# http://msdn.microsoft.com/en-us/library/yt4xw8fh.aspx
toolset.flags $(toolset).compile CFLAGS $(conditions)/<warnings>all : /Wp64 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<warnings>all : /Wp64 ;
}
}

Expand All @@ -471,17 +471,17 @@ rule configure-version-specific ( toolset : version : conditions )
# variables and functions that have internal linkage
if ! [ version.version-less [ SPLIT_BY_CHARACTERS [ MATCH "^([0123456789.]+)" : $(version) ] : . ] : 12 ]
{
toolset.flags $(toolset).compile CFLAGS $(conditions) : "/Zc:inline" ;
toolset.flags $(toolset).compile OPTIONS $(conditions) : "/Zc:inline" ;

# /Gy analog for variables: https://devblogs.microsoft.com/cppblog/introducing-gw-compiler-switch/
toolset.flags $(toolset).compile CFLAGS $(conditions)/<optimization>speed $(conditions)/<optimization>space : /Gw ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<optimization>speed $(conditions)/<optimization>space : /Gw ;
}

# 14.0 introduced /Zc:throwingNew opt-in flag that disables a workaround
# for not throwing operator new in VC up to 6.0
if ! [ version.version-less [ SPLIT_BY_CHARACTERS [ MATCH "^([0123456789.]+)" : $(version) ] : . ] : 14 ]
{
toolset.flags $(toolset).compile CFLAGS $(conditions) : "/Zc:throwingNew" ;
toolset.flags $(toolset).compile C++FLAGS $(conditions) : "/Zc:throwingNew" ;
}

#
Expand All @@ -491,34 +491,34 @@ rule configure-version-specific ( toolset : version : conditions )
if [ MATCH "^([67])" : $(version) ]
{
# 8.0 deprecates some of the options.
toolset.flags $(toolset).compile CFLAGS $(conditions)/<optimization>speed $(conditions)/<optimization>space : /Ogiy /Gs ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/<optimization>speed : /Ot ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/<optimization>space : /Os ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<optimization>speed $(conditions)/<optimization>space : /Ogiy /Gs ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<optimization>speed : /Ot ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<optimization>space : /Os ;

toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-i386)/<instruction-set> : /GB ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-i386)/<instruction-set>i486 : /G4 ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g5) : /G5 ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g6) : /G6 ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g7) : /G7 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-i386)/<instruction-set> : /GB ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-i386)/<instruction-set>i486 : /G4 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g5) : /G5 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g6) : /G6 ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-i386)/<instruction-set>$(.cpu-type-g7) : /G7 ;

# Improve floating-point accuracy. Otherwise, some of C++ Boost's "math"
# tests will fail.
toolset.flags $(toolset).compile CFLAGS $(conditions) : /Op ;
toolset.flags $(toolset).compile OPTIONS $(conditions) : /Op ;

# 7.1 and below have single-threaded static RTL.
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>off/<runtime-link>static/<threading>single : /ML ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MLd ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<runtime-debugging>off/<runtime-link>static/<threading>single : /ML ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MLd ;
}
else
{
# 8.0 and above adds some more options.
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-amd64)/<instruction-set> : "/favor:blend" ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-amd64)/<instruction-set>$(.cpu-type-em64t) : "/favor:EM64T" ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/$(.cpu-arch-amd64)/<instruction-set>$(.cpu-type-amd64) : "/favor:AMD64" ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-amd64)/<instruction-set> : "/favor:blend" ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-amd64)/<instruction-set>$(.cpu-type-em64t) : "/favor:EM64T" ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/$(.cpu-arch-amd64)/<instruction-set>$(.cpu-type-amd64) : "/favor:AMD64" ;

# 8.0 and above only has multi-threaded static RTL.
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>off/<runtime-link>static/<threading>single : /MT ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MTd ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<runtime-debugging>off/<runtime-link>static/<threading>single : /MT ;
toolset.flags $(toolset).compile OPTIONS $(conditions)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MTd ;

# Specify target machine type so the linker will not need to guess.
toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-amd64) : "/MACHINE:X64" ;
Expand Down Expand Up @@ -1827,25 +1827,25 @@ local rule register-toolset-really ( )
# Declare flags for compilation.
#

toolset.flags msvc.compile CFLAGS <optimization>speed : /O2 ;
toolset.flags msvc.compile CFLAGS <optimization>space : /O1 ;
toolset.flags msvc.compile OPTIONS <optimization>speed : /O2 ;
toolset.flags msvc.compile OPTIONS <optimization>space : /O1 ;

toolset.flags msvc.compile CFLAGS $(.cpu-arch-ia64)/<instruction-set>$(.cpu-type-itanium) : /G1 ;
toolset.flags msvc.compile CFLAGS $(.cpu-arch-ia64)/<instruction-set>$(.cpu-type-itanium2) : /G2 ;
toolset.flags msvc.compile OPTIONS $(.cpu-arch-ia64)/<instruction-set>$(.cpu-type-itanium) : /G1 ;
toolset.flags msvc.compile OPTIONS $(.cpu-arch-ia64)/<instruction-set>$(.cpu-type-itanium2) : /G2 ;

toolset.flags msvc.compile CFLAGS <debug-symbols>on/<debug-store>object : /Z7 ;
toolset.flags msvc.compile CFLAGS <debug-symbols>on/<debug-store>database : /Zi ;
toolset.flags msvc.compile CFLAGS <optimization>off : /Od ;
toolset.flags msvc.compile CFLAGS <inlining>off : /Ob0 ;
toolset.flags msvc.compile CFLAGS <inlining>on : /Ob1 ;
toolset.flags msvc.compile CFLAGS <inlining>full : /Ob2 ;
toolset.flags msvc.compile OPTIONS <debug-symbols>on/<debug-store>object : /Z7 ;
toolset.flags msvc.compile OPTIONS <debug-symbols>on/<debug-store>database : /Zi ;
toolset.flags msvc.compile OPTIONS <optimization>off : /Od ;
toolset.flags msvc.compile OPTIONS <inlining>off : /Ob0 ;
toolset.flags msvc.compile OPTIONS <inlining>on : /Ob1 ;
toolset.flags msvc.compile OPTIONS <inlining>full : /Ob2 ;

toolset.flags msvc.compile CFLAGS <warnings>on : /W3 ;
toolset.flags msvc.compile CFLAGS <warnings>off : /W0 ;
toolset.flags msvc.compile CFLAGS <warnings>all : /W4 ;
toolset.flags msvc.compile CFLAGS <warnings>extra : /W4 ;
toolset.flags msvc.compile CFLAGS <warnings>pedantic : /W4 ;
toolset.flags msvc.compile CFLAGS <warnings-as-errors>on : /WX ;
toolset.flags msvc.compile OPTIONS <warnings>on : /W3 ;
toolset.flags msvc.compile OPTIONS <warnings>off : /W0 ;
toolset.flags msvc.compile OPTIONS <warnings>all : /W4 ;
toolset.flags msvc.compile OPTIONS <warnings>extra : /W4 ;
toolset.flags msvc.compile OPTIONS <warnings>pedantic : /W4 ;
toolset.flags msvc.compile OPTIONS <warnings-as-errors>on : /WX ;

toolset.flags msvc.compile C++FLAGS <exception-handling>on/<asynch-exceptions>off/<extern-c-nothrow>off : /EHs ;
toolset.flags msvc.compile C++FLAGS <exception-handling>on/<asynch-exceptions>off/<extern-c-nothrow>on : /EHsc ;
Expand All @@ -1859,13 +1859,13 @@ local rule register-toolset-really ( )
# By default 8.0 enables rtti support while prior versions disabled it. We
# simply enable or disable it explicitly so we do not have to depend on this
# default behaviour.
toolset.flags msvc.compile CFLAGS <rtti>on : /GR ;
toolset.flags msvc.compile CFLAGS <rtti>off : /GR- ;
toolset.flags msvc.compile CFLAGS <runtime-debugging>off/<runtime-link>shared : /MD ;
toolset.flags msvc.compile CFLAGS <runtime-debugging>on/<runtime-link>shared : /MDd ;
toolset.flags msvc.compile C++FLAGS <rtti>on : /GR ;
toolset.flags msvc.compile C++FLAGS <rtti>off : /GR- ;
toolset.flags msvc.compile OPTIONS <runtime-debugging>off/<runtime-link>shared : /MD ;
toolset.flags msvc.compile OPTIONS <runtime-debugging>on/<runtime-link>shared : /MDd ;

toolset.flags msvc.compile CFLAGS <runtime-debugging>off/<runtime-link>static/<threading>multi : /MT ;
toolset.flags msvc.compile CFLAGS <runtime-debugging>on/<runtime-link>static/<threading>multi : /MTd ;
toolset.flags msvc.compile OPTIONS <runtime-debugging>off/<runtime-link>static/<threading>multi : /MT ;
toolset.flags msvc.compile OPTIONS <runtime-debugging>on/<runtime-link>static/<threading>multi : /MTd ;

toolset.flags msvc.compile CFLAGS <cflags> : ;
toolset.flags msvc.compile.c++ C++FLAGS <cxxflags> : ;
Expand Down

0 comments on commit f558420

Please sign in to comment.