Index: tools/gn/secondary/build/config/compiler/BUILD.gn |
diff --git a/tools/gn/secondary/build/config/compiler/BUILD.gn b/tools/gn/secondary/build/config/compiler/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..04878281ab15debc2d767c5e5e23060a901982be |
--- /dev/null |
+++ b/tools/gn/secondary/build/config/compiler/BUILD.gn |
@@ -0,0 +1,134 @@ |
+# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# runtime_library ------------------------------------------------------------- |
+# |
+# Sets the runtime library and associated options. |
+# |
+# We don't bother making multiple versions that are toggle-able since there |
+# is more than one axis of control (which makes it complicated) and there's |
+# no practical reason for anybody to change this since the CRT must agree. |
+ |
+config("runtime_library") { |
+ 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) { |
+ # We don't use exceptions, and when we link statically we can just get |
+ # rid of them entirely. |
+ defines = [ "_HAS_EXCEPTIONS=0" ] |
+ if (is_debug) { |
+ cflags = [ "/MTd" ] |
+ } else { |
+ cflags = [ "/MT" ] |
+ } |
+ } |
+ } |
+ |
+ if (is_win) { |
+ defines += [ |
+ "__STD_C", |
+ "__STDC_CONSTANT_MACROS", |
+ "__STDC_FORMAT_MACROS", |
+ "_CRT_RAND_S", |
+ "_CRT_SECURE_NO_DEPRECATE", |
+ "_SCL_SECURE_NO_DEPRECATE", |
+ "_UNICODE", |
+ "UNICODE", |
+ ] |
+ } |
+} |
+ |
+# chromium_code --------------------------------------------------------------- |
+# |
+# Toggles between higher and lower warnings for code that is (or isn't) |
+# part of Chromium. |
+ |
+config("chromium_code") { |
+ if (is_win) { |
+ cflags = [ |
+ "/W4", # Warning level 4. |
+ ] |
+ } |
+} |
+config("no_chromium_code") { |
+ if (is_win) { |
+ cflags = [ |
+ "/W3", # Warning level 3. |
+ "/wd4800", # Disable warning when forcing value to bool. |
+ ] |
+ defines = [ |
+ "_CRT_NONSTDC_NO_WARNINGS", |
+ "_CRT_NONSTDC_NO_DEPRECATE", |
+ ] |
+ } |
+} |
+ |
+# rtti ------------------------------------------------------------------------ |
+# |
+# Allows turning Run-Time Type Identification on or off. |
+ |
+config("rtti") { |
+ if (is_win) { |
+ cflags = [ "/GR" ] |
+ } |
+} |
+config("no_rtti") { |
+ if (is_win) { |
+ cflags = [ "/GR-" ] |
+ } |
+} |
+ |
+# Warnings --------------------------------------------------------------------- |
+ |
+config("disable_annoying_warnings") { |
+ if (is_win) { |
+ # Please keep ordered and add names if you add more. |
+ cflags = [ |
+ "/wd4018", # Comparing signed and unsigned values. |
+ "/wd4100", # Unreferenced formal function parameter. |
+ "/wd4121", # Alignment of a member was sensitive to packing. |
+ "/wd4125", # Decimal digit terminates octal escape sequence. |
+ "/wd4127", # Conditional expression is constant. |
+ "/wd4130", # Logical operation on address of string constant. |
+ # TODO(brettw) is this necessary? If so, it should probably be on whoever |
+ # is silly enough to be doing this rather than globally. |
+ #"/wd4131", # Function uses old-style declarator. |
+ "/wd4189", # A variable was declared and initialized but never used. |
+ "/wd4201", # Nonstandard extension used: nameless struct/union. |
+ "/wd4238", # Nonstandard extension used: class rvalue used as lvalue. |
+ "/wd4244", # Conversion: possible loss of data. |
+ "/wd4245", # Conversion: signed/unsigned mismatch, |
+ "/wd4251", # Class needs to have dll-interface. |
+ "/wd4310", # Cast truncates constant value. |
+ "/wd4351", # Elements of array will be default initialized. |
+ "/wd4355", # 'this' used in base member initializer list. |
+ "/wd4396", # Inline friend template thing. |
+ "/wd4428", # Universal character name encountered in source. |
+ "/wd4481", # Nonstandard extension: override specifier. |
+ "/wd4503", # Decorated name length exceeded, name was truncated. |
+ "/wd4505", # Unreferenced local function has been removed. |
+ "/wd4510", # Default constructor could not be generated. |
+ "/wd4512", # Assignment operator could not be generated. |
+ "/wd4530", # Exception handler used, but unwind semantics not enabled. |
+ "/wd4610", # Class can never be instantiated, constructor required. |
+ "/wd4611", # C++ object destruction and 'catch'. |
+ "/wd4701", # Potentially uninitialized local variable name used. |
+ "/wd4702", # Unreachable code. |
+ "/wd4706", # Assignment within conditional expression. |
+ "/wd4819", # Character not in the current code page. |
+ ] |
+ } |
+} |