Index: build/config/compiler/BUILD.gn |
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn |
index 88c7c053ff03d7d9b3506ecc7c83e5ab822eccb0..0a86eb4ca57302371ac7d900b06a0c08e4b8431c 100644 |
--- a/build/config/compiler/BUILD.gn |
+++ b/build/config/compiler/BUILD.gn |
@@ -19,15 +19,6 @@ if (is_win) { |
import("//build/toolchain/ccache.gni") |
import("//build/config/sanitizers/sanitizers.gni") |
-declare_args() { |
- if (is_win) { |
- # Whether the VS xtree header has been patched to disable warning 4702. If |
- # it has, then we don't need to disable 4702 (unreachable code warning). |
- # The patch is preapplied to the internal toolchain and hence all bots. |
- msvs_xtree_patched = false |
- } |
-} |
- |
# default_include_dirs --------------------------------------------------------- |
# |
# This is a separate config so that third_party code (which would not use the |
@@ -40,7 +31,6 @@ config("default_include_dirs") { |
] |
} |
-# TODO(GYP): is_ubsan, is_ubsan_vptr |
if (!is_win) { |
using_sanitizer = is_asan || is_lsan || is_tsan || is_msan |
} |
@@ -73,40 +63,6 @@ config("compiler") { |
"/GS", # Enable buffer security checking. |
"/FS", # Preserve previous PDB behavior. |
] |
- |
- # Building with Clang on Windows is a work in progress and very |
- # experimental. See crbug.com/82385. |
- # Keep this in sync with the similar block in build/common.gypi |
- if (is_clang) { |
- cflags += [ |
- # Many files use intrinsics without including this header. |
- # TODO(hans): Fix those files, or move this to sub-GYPs. |
- "/FIIntrin.h", |
- ] |
- |
- if (visual_studio_version == "2013") { |
- cflags += [ "-fmsc-version=1800" ] |
- } else if (visual_studio_version == "2015") { |
- cflags += [ "-fmsc-version=1900" ] |
- } |
- |
- if (current_cpu == "x86") { |
- cflags += [ |
- "/fallback", |
- "-m32", |
- ] |
- } else { |
- cflags += [ "-m64" ] |
- } |
- if (exec_script("//build/win/use_ansi_codes.py", [], "trim string") == |
- "True") { |
- cflags += [ |
- # cmd.exe doesn't understand ANSI escape codes by default, |
- # so only enable them if something emulating them is around. |
- "-fansi-escape-codes", |
- ] |
- } |
- } |
} else { |
# Common GCC compiler flags setup. |
# -------------------------------- |
@@ -470,9 +426,9 @@ config("compiler_arm_fpu") { |
# |
# How do you determine what should go in here vs. "compiler" above? Consider if |
# a target might choose to use a different runtime library (ignore for a moment |
-# if this is possible or reasonable on your system). If such a target would want |
-# to change or remove your option, put it in the runtime_library config. If a |
-# target wants the option regardless, put it in the compiler config. |
+# if this is possible or reasonable on your system). If such a target would |
+# want to change or remove your option, put it in the runtime_library config. |
+# If a target wants the option regardless, put it in the compiler config. |
config("runtime_library") { |
cflags = [] |
@@ -481,30 +437,13 @@ config("runtime_library") { |
lib_dirs = [] |
libs = [] |
- if (is_component_build) { |
- # Component mode: dynamic CRT. |
- defines += [ "COMPONENT_BUILD" ] |
- if (is_win) { |
- # Since the library is shared, it requires exceptions or will give errors |
- # about things not matching, so keep exceptions on. |
- if (is_debug) { |
- cflags += [ "/MDd" ] |
- } else { |
- cflags += [ "/MD" ] |
- } |
- } |
- } else { |
- # Static CRT. |
- if (is_win) { |
- if (is_debug) { |
- cflags += [ "/MTd" ] |
- } else { |
- cflags += [ "/MT" ] |
- } |
- } |
- } |
- |
+ # Static CRT. |
if (is_win) { |
+ if (is_debug) { |
+ cflags += [ "/MTd" ] |
+ } else { |
+ cflags += [ "/MT" ] |
+ } |
defines += [ |
"__STD_C", |
"_CRT_RAND_S", |
@@ -590,108 +529,21 @@ config("runtime_library") { |
default_warning_flags = [] |
default_warning_flags_cc = [] |
if (is_win) { |
- if (!is_clang || current_cpu != "x86") { |
+ if (current_cpu != "x86") { |
default_warning_flags += [ "/WX" ] # Treat warnings as errors. |
} |
default_warning_flags += [ |
- # Warnings permanently disabled: |
- |
- # TODO(GYP) The GYP build doesn't have this globally enabled but disabled |
- # for a bunch of individual targets. Re-enable this globally when those |
- # targets are fixed. |
- "/wd4018", # Comparing signed and unsigned values. |
- |
- # C4127: conditional expression is constant |
- # This warning can in theory catch dead code and other problems, but |
- # triggers in far too many desirable cases where the conditional |
- # expression is either set by macros or corresponds some legitimate |
- # compile-time constant expression (due to constant template args, |
- # conditionals comparing the sizes of different types, etc.). Some of |
- # these can be worked around, but it's not worth it. |
- "/wd4127", |
- |
- # C4251: 'identifier' : class 'type' needs to have dll-interface to be |
- # used by clients of class 'type2' |
- # This is necessary for the shared library build. |
- "/wd4251", |
- |
- # C4351: new behavior: elements of array 'array' will be default |
- # initialized |
- # This is a silly "warning" that basically just alerts you that the |
- # compiler is going to actually follow the language spec like it's |
- # supposed to, instead of not following it like old buggy versions did. |
- # There's absolutely no reason to turn this on. |
- "/wd4351", |
- |
- # C4355: 'this': used in base member initializer list |
- # It's commonly useful to pass |this| to objects in a class' initializer |
- # list. While this warning can catch real bugs, most of the time the |
- # constructors in question don't attempt to call methods on the passed-in |
- # pointer (until later), and annotating every legit usage of this is |
- # simply more hassle than the warning is worth. |
- "/wd4355", |
- |
- # C4503: 'identifier': decorated name length exceeded, name was |
- # truncated |
- # This only means that some long error messages might have truncated |
- # identifiers in the presence of lots of templates. It has no effect on |
- # program correctness and there's no real reason to waste time trying to |
- # prevent it. |
- "/wd4503", |
- |
- # Warning C4589 says: "Constructor of abstract class ignores |
- # initializer for virtual base class." Disable this warning because it |
- # is flaky in VS 2015 RTM. It triggers on compiler generated |
- # copy-constructors in some cases. |
- "/wd4589", |
- |
- # C4611: interaction between 'function' and C++ object destruction is |
- # non-portable |
- # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN |
- # suggests using exceptions instead of setjmp/longjmp for C++, but |
- # Chromium code compiles without exception support. We therefore have to |
- # use setjmp/longjmp for e.g. JPEG decode error handling, which means we |
- # have to turn off this warning (and be careful about how object |
- # destruction happens in such cases). |
- "/wd4611", |
- |
- # Warnings to evaluate and possibly fix/reenable later: |
- |
- "/wd4100", # Unreferenced formal function parameter. |
- "/wd4121", # Alignment of a member was sensitive to packing. |
- "/wd4244", # Conversion: possible loss of data. |
- "/wd4481", # Nonstandard extension: override specifier. |
- "/wd4505", # Unreferenced local function has been removed. |
- "/wd4510", # Default constructor could not be generated. |
- "/wd4512", # Assignment operator could not be generated. |
- "/wd4610", # Class can never be instantiated, constructor required. |
- "/wd4996", # Deprecated function warning. |
+ # Permanent. |
+ "/wd4091", # typedef warning from dbghelp.h |
+ # Investigate. |
+ "/wd4312", # int to pointer of greater size conversion. |
+ "/wd4838", # Narrowing conversion required. |
+ "/wd4172", # Returning address of local. |
+ "/wd4005", # Redefinition of macros for PRId64 etc. |
+ "/wd4311", # Pointer truncation from PVOID to DWORD. |
+ "/wd4477", # Format string requires wchar_t* |
] |
- |
- # VS xtree header file needs to be patched or 4702 (unreachable code |
- # warning) is reported if _HAS_EXCEPTIONS=0. Disable the warning if xtree is |
- # not patched. |
- if (!msvs_xtree_patched && |
- exec_script("../../win_is_xtree_patched.py", [], "value") == 0) { |
- default_warning_flags += [ "/wd4702" ] # Unreachable code. |
- } |
- |
- # Building with Clang on Windows is a work in progress and very |
- # experimental. See crbug.com/82385. |
- # Keep this in sync with the similar block in build/common.gypi |
- if (is_clang) { |
- default_warning_flags += [ |
- # TODO(hans): Make this list shorter eventually, http://crbug.com/504657 |
- "-Qunused-arguments", # http://crbug.com/504658 |
- "-Wno-microsoft", # http://crbug.com/505296 |
- "-Wno-switch", # http://crbug.com/505308 |
- "-Wno-unknown-pragmas", # http://crbug.com/505314 |
- "-Wno-unused-function", # http://crbug.com/505316 |
- "-Wno-unused-value", # http://crbug.com/505318 |
- "-Wno-unused-local-typedef", # http://crbug.com/411648 |
- ] |
- } |
} else { |
# Common GCC warning setup. |
default_warning_flags += [ |
@@ -757,7 +609,9 @@ if (is_win) { |
config("chromium_code") { |
if (is_win) { |
- cflags = [ "/W4" ] # Warning level 4. |
+ # TODO(zra): Enable higher warning levels. |
+ # cflags = [ "/W4" ] # Warning level 4. |
+ cflags = [] |
} else { |
cflags = [ |
"-Wall", |
@@ -787,12 +641,6 @@ config("no_chromium_code") { |
defines = [] |
if (is_win) { |
- cflags += [ |
- "/W3", # Warning level 3. |
- "/wd4800", # Disable warning when forcing value to bool. |
- "/wd4267", # TODO(jschuh): size_t to int. |
- "/wd4996", # Deprecated function warning. |
- ] |
defines += [ |
"_CRT_NONSTDC_NO_WARNINGS", |
"_CRT_NONSTDC_NO_DEPRECATE", |