Use _STL_EXTRA_DISABLED_WARNINGS in VS2017. Although Microsoft does not support building with /Wall, starting VS2017, they provide a way to suppress warnings only in STL code. This lets us keep some warnings active on our code while disabling them in the STL. https://blogs.msdn.microsoft.com/vcblog/2017/02/06/stl-fixes-in-vs-2017-rtm/ We currently still support VS2015, so we can't switch most of our suppressions to this, but anything which applies only to VS2017 and up will work. Change-Id: I5f6d621dd1dbc060e09bded776d1714785a63147 Reviewed-on: https://boringssl-review.googlesource.com/17245 Commit-Queue: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com> Reviewed-by: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3898ac8..deab75b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -89,11 +89,9 @@ "C4706" # assignment within conditional expression "C4710" # 'function': function not inlined "C4711" # function 'function' selected for inline expansion - "C4774" # format string is not a string literal "C4800" # 'int' : forcing value to bool 'true' or 'false' # (performance warning) "C4820" # 'bytes' bytes padding added after construct 'member_name' - "C4987" # nonstandard extension used: 'throw (...)' "C5026" # move constructor was implicitly defined as deleted "C5027" # move assignment operator was implicitly defined as deleted ) @@ -111,7 +109,10 @@ add_definitions(-D_HAS_EXCEPTIONS=0) add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-DNOMINMAX) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) # Allow use of fopen + # Allow use of fopen. + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + # VS 2017 and higher supports STL-only warning suppressions. + add_definitions("-D_STL_EXTRA_DISABLED_WARNINGS=4774 4987") endif() if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "4.7.99") OR