12385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Copyright (c) 2013 The Chromium Authors. All rights reserved. 22385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Use of this source code is governed by a BSD-style license that can be 32385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# found in the LICENSE file. 42385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 52385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Base compiler configuration. 62385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("compiler") { 72385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch includes = [ "//" ] 82385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 92385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) these probably need to be refactored. 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/Od", "/WX", "/Zi", "/Gy", "/GS", "/RTC1", "/EHsc", 122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 132385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else { 142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) obviously this needs to be parameterized. 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-arch i386", 172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # See http://crbug.com/32204 192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fno-strict-aliasing", 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fno-threadsafe-statics", 222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fstack-protector-all", 233240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-fvisibility=hidden", 242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fvisibility-inlines-hidden", 252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # !!! Please keep additions sorted alphabetically. 272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) these should be clang-only. 292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # if (is_clang) { 302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags += [ 312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fcolor-diagnostics", 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch #} 342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags_c = [ 362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-std=c99", 372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags_cc = [ 402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-fno-exceptions", 412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-std=gnu++11", 422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_mac) { 463240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # These are used for both compiler and linker flags on Mac. 473240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch common_mac_flags = [ 483240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # TODO(brettw) obviously this needs to be parameterized. 493240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-arch i386", 503240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Set which SDK to use. 522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) this needs to be configurable somehow. 532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-isysroot", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk", 542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-mmacosx-version-min=10.6", 562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 573240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 583240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # Mac compiler flags. 593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch cflags += [ 603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # Without this, the constructors and destructors of a C++ object inside 613240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # an Objective C struct won't be called, which is very bad. 623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-fobjc-call-cxx-cdtors", 633240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ] 643240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch cflags += common_mac_flags 653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 663240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # Mac linker flags. 673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ldflags = [ 683240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-L.", 693240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 703240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch # TODO(brettW) I don't understand these options. 713240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-Wl,-rpath,@loader_path/.", 723240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-Wl,-rpath,@loader_path/../../..", 733240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ] 743240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ldflags += common_mac_flags 752385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 762385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 772385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# runtime_library ------------------------------------------------------------- 792385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# 802385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Sets the runtime library and associated options. 812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# 822385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# We don't bother making multiple versions that are toggle-able since there 832385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# is more than one axis of control (which makes it complicated) and there's 842385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# no practical reason for anybody to change this since the CRT must agree. 852385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 862385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("runtime_library") { 872385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_component_build) { 882385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Component mode: dynamic CRT. 892385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch defines = [ "COMPONENT_BUILD" ] 902385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 912385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Since the library is shared, it requires exceptions or will give errors 922385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # about things not matching, so keep exceptions on. 932385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_debug) { 942385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ "/MDd" ] 952385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else { 962385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ "/MD" ] 972385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 982385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 992385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else { 1002385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Static CRT. 1012385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1022385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # We don't use exceptions, and when we link statically we can just get 1032385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # rid of them entirely. 1042385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch defines = [ "_HAS_EXCEPTIONS=0" ] 1052385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_debug) { 1062385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ "/MTd" ] 1072385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else { 1082385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ "/MT" ] 1092385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1132385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch defines += [ 1152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "__STD_C", 1162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "__STDC_CONSTANT_MACROS", 1172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "__STDC_FORMAT_MACROS", 1182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_CRT_RAND_S", 1192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_CRT_SECURE_NO_DEPRECATE", 1202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_SCL_SECURE_NO_DEPRECATE", 1212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_UNICODE", 1222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "UNICODE", 1232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 1242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# chromium_code --------------------------------------------------------------- 1282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# 1292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Toggles between higher and lower warnings for code that is (or isn't) 1302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# part of Chromium. 1312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("chromium_code") { 1332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 1352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/W4", # Warning level 4. 1362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 1372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else if (is_mac) { 1382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 1393240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "-Wall", 1402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Werror", 1412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wextra", 1422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 1432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("no_chromium_code") { 1462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 1482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/W3", # Warning level 3. 1492385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4800", # Disable warning when forcing value to bool. 1502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 1512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch defines = [ 1522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_CRT_NONSTDC_NO_WARNINGS", 1532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "_CRT_NONSTDC_NO_DEPRECATE", 1542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 1552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1572385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# rtti ------------------------------------------------------------------------ 1592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# 1602385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Allows turning Run-Time Type Identification on or off. 1612385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("rtti") { 1632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags_cc = [ "/GR" ] 1652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1662385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1672385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("no_rtti") { 1682385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1692385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags_cc = [ "/GR-" ] 1702385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } else { 1712385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags_cc = [ "-fno-rtti" ] 1722385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 1732385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1742385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1752385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch# Warnings --------------------------------------------------------------------- 1762385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1772385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochconfig("default_warnings") { 1782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_win) { 1792385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Please keep ordered and add names if you add more. 1802385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 1812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4018", # Comparing signed and unsigned values. 1822385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4100", # Unreferenced formal function parameter. 1832385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4121", # Alignment of a member was sensitive to packing. 1842385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4125", # Decimal digit terminates octal escape sequence. 1852385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4127", # Conditional expression is constant. 1862385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4130", # Logical operation on address of string constant. 1872385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) is this necessary? If so, it should probably be on whoever 1882385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # is silly enough to be doing this rather than globally. 1892385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch #"/wd4131", # Function uses old-style declarator. 1902385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4189", # A variable was declared and initialized but never used. 1912385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4201", # Nonstandard extension used: nameless struct/union. 1922385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4238", # Nonstandard extension used: class rvalue used as lvalue. 1932385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4244", # Conversion: possible loss of data. 1942385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4245", # Conversion: signed/unsigned mismatch, 1952385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4251", # Class needs to have dll-interface. 1962385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4310", # Cast truncates constant value. 1972385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4351", # Elements of array will be default initialized. 1982385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4355", # 'this' used in base member initializer list. 1992385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4396", # Inline friend template thing. 2002385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4428", # Universal character name encountered in source. 2012385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4481", # Nonstandard extension: override specifier. 2022385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4503", # Decorated name length exceeded, name was truncated. 2032385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4505", # Unreferenced local function has been removed. 2042385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4510", # Default constructor could not be generated. 2052385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4512", # Assignment operator could not be generated. 2062385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4530", # Exception handler used, but unwind semantics not enabled. 2072385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4610", # Class can never be instantiated, constructor required. 2082385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4611", # C++ object destruction and 'catch'. 2092385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4701", # Potentially uninitialized local variable name used. 2102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4702", # Unreachable code. 2112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4706", # Assignment within conditional expression. 2122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "/wd4819", # Character not in the current code page. 2132385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 2142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 2152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) this should probably be if(clang). 2172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (is_mac) { 2182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags = [ 2192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Warn for weird old-style text after an #endif. 2202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wendif-labels", 2212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wnewline-eof", 2232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Don't warn about the "struct foo f = {0};" initialization pattern. 2252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-missing-field-initializers", 2262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Don't warn about unused function parameters. 2282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-unused-parameter", 2292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 2302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) Ones below here should be clang-only when we have a flag 2322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # for it. 2332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch #if (is_clang) { 2342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch cflags += [ 2352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wheader-hygiene", 2362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # This warns on using ints as initializers for floats in 2382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # initializer lists (e.g. |int a = f(); CGSize s = { a, a };|), 2392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # which happens in several places in chrome code. Not sure if 2402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # this is worth fixing. 2412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-c++11-narrowing", 2422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Don't die on dtoa code that uses a char as an array index. 2442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # This is required solely for base/third_party/dmg_fp/dtoa.cc. 2452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) move this to that project then! 2462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-char-subscripts", 2472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Warns on switches on enums that cover all enum values but 2492385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # also contain a default: branch. Chrome is full of that. 2502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-covered-switch-default", 2512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Clang considers the `register` keyword as deprecated, but e.g. 2532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # code generated by flex (used in angle) contains that keyword. 2542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # http://crbug.com/255186 2552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-deprecated-register", 2562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2572385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Clang spots more unused functions. 2582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wno-unused-function", 2592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2602385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # Warns when a const char[] is converted to bool. 2612385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "-Wstring-conversion", 2622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch ] 2632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch #} #is_clang 2642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch } 2652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 266