aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhoebe <20694052+PhoebeHui@users.noreply.github.com>2020-12-30 22:41:25 -0800
committerGitHub <noreply@github.com>2020-12-30 22:41:25 -0800
commit200848ed9e449521d35c4311bf1c64829f3324fd (patch)
tree75e52b311dc8727730cf94ee014df85c40e0e6b4
parentc450737386577201b4226a4c3dcd5532e580b7f8 (diff)
downloadvcpkg-200848ed9e449521d35c4311bf1c64829f3324fd.tar.gz
vcpkg-200848ed9e449521d35c4311bf1c64829f3324fd.zip
[boost-build] Fix cflags and c++flags for msvc (#15385)
-rw-r--r--ports/boost-build/CONTROL1
-rw-r--r--ports/boost-build/fix_options.patch236
-rw-r--r--ports/boost-build/portfile.cmake2
3 files changed, 239 insertions, 0 deletions
diff --git a/ports/boost-build/CONTROL b/ports/boost-build/CONTROL
index 324efe22d..373f9f7e2 100644
--- a/ports/boost-build/CONTROL
+++ b/ports/boost-build/CONTROL
@@ -1,5 +1,6 @@
Source: boost-build
Version: 1.75.0.beta1
+Port-Version: 1
Homepage: https://github.com/boostorg/build
Description: Boost.Build
Build-Depends: boost-uninstall \ No newline at end of file
diff --git a/ports/boost-build/fix_options.patch b/ports/boost-build/fix_options.patch
new file mode 100644
index 000000000..b63641b9e
--- /dev/null
+++ b/ports/boost-build/fix_options.patch
@@ -0,0 +1,236 @@
+diff --git a/src/tools/msvc.jam b/src/tools/msvc.jam
+index bf07a93..cf04eba 100644
+--- a/src/tools/msvc.jam
++++ b/src/tools/msvc.jam
+@@ -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 ;
+ }
+ }
+
+@@ -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" ;
+ }
+
+ #
+@@ -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" ;
+@@ -614,7 +614,7 @@ rule compile.c ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+ C++FLAGS on $(targets[1]) = ;
+- get-rspline $(targets) : -TC ;
++ get-rspline $(targets) : -TC CFLAGS ;
+ compile-c-c++ $(<) : $(>) [ on $(<) return $(PCH_FILE) ] [ on $(<) return $(PCH_HEADER) ] ;
+ }
+
+@@ -623,7 +623,7 @@ rule compile.c.preprocess ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+ C++FLAGS on $(targets[1]) = ;
+- get-rspline $(targets) : -TC ;
++ get-rspline $(targets) : -TC CFLAGS ;
+ preprocess-c-c++ $(<) : $(>) [ on $(<) return $(PCH_FILE) ] [ on $(<) return $(PCH_HEADER) ] ;
+ }
+
+@@ -632,8 +632,8 @@ rule compile.c.pch ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+ C++FLAGS on $(targets[1]) = ;
+- get-rspline $(targets[1]) : -TC ;
+- get-rspline $(targets[2]) : -TC ;
++ get-rspline $(targets[1]) : -TC CFLAGS ;
++ get-rspline $(targets[2]) : -TC CFLAGS ;
+ local pch-source = [ on $(<) return $(PCH_SOURCE) ] ;
+ if $(pch-source)
+ {
+@@ -716,14 +716,14 @@ actions compile-c-c++-pch-s
+ rule compile.c++ ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+- get-rspline $(targets) : -TP ;
++ get-rspline $(targets) : -TP C++FLAGS ;
+ compile-c-c++ $(<) : $(>) [ on $(<) return $(PCH_FILE) ] [ on $(<) return $(PCH_HEADER) ] ;
+ }
+
+ rule compile.c++.preprocess ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+- get-rspline $(targets) : -TP ;
++ get-rspline $(targets) : -TP C++FLAGS ;
+ preprocess-c-c++ $(<) : $(>) [ on $(<) return $(PCH_FILE) ] [ on $(<) return $(PCH_HEADER) ] ;
+ }
+
+@@ -731,8 +731,8 @@ rule compile.c++.preprocess ( targets + : sources * : properties * )
+ rule compile.c++.pch ( targets + : sources * : properties * )
+ {
+ set-setup-command $(targets) : $(properties) ;
+- get-rspline $(targets[1]) : -TP ;
+- get-rspline $(targets[2]) : -TP ;
++ get-rspline $(targets[1]) : -TP C++FLAGS ;
++ get-rspline $(targets[2]) : -TP C++FLAGS ;
+ local pch-source = [ on $(<) return $(PCH_SOURCE) ] ;
+ if $(pch-source)
+ {
+@@ -1691,10 +1691,10 @@ local rule default-path ( version )
+
+
+
+-rule get-rspline ( target : lang-opt )
++rule get-rspline ( target : lang-opt lang-flags )
+ {
+ CC_RSPLINE on $(target) = [ on $(target) return $(lang-opt) -U$(UNDEFS)
+- $(CFLAGS) $(C++FLAGS) $(OPTIONS) -c $(.nl)-D$(DEFINES)
++ $($(lang-flags)) $(OPTIONS) -c $(.nl)-D$(DEFINES)
+ $(.nl)\"-I$(INCLUDES:W)\" $(.nl)\"-FI$(FORCE_INCLUDES:W)\" ] ;
+ }
+
+@@ -1830,25 +1830,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 ;
+@@ -1862,16 +1862,16 @@ 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 OPTIONS <cflags> : ;
+- toolset.flags msvc.compile.c++ OPTIONS <cxxflags> : ;
++ toolset.flags msvc.compile CFLAGS <cflags> : ;
++ toolset.flags msvc.compile.c++ C++FLAGS <cxxflags> : ;
+
+ toolset.flags msvc.compile PDB_CFLAG <debug-symbols>on/<debug-store>database : /Fd ;
+
diff --git a/ports/boost-build/portfile.cmake b/ports/boost-build/portfile.cmake
index def5c5cd0..791e15a1c 100644
--- a/ports/boost-build/portfile.cmake
+++ b/ports/boost-build/portfile.cmake
@@ -12,6 +12,8 @@ vcpkg_from_github(
REF boost-${BOOST_VERSION}
SHA512 e5dd73ef41d341e2bce25677389502d22ca7f328e7fdbb91d95aac415f7b490008d75ff0a63f8e4bd9427215f863c161ec9573c29b663b727df4b60e25a3aac2
HEAD_REF master
+ PATCHES
+ fix_options.patch
)
vcpkg_download_distfile(ARCHIVE