diff options
-rw-r--r-- | gn/BUILD.gn | 75 | ||||
-rwxr-xr-x | gn/is_clang.py | 17 |
2 files changed, 92 insertions, 0 deletions
diff --git a/gn/BUILD.gn b/gn/BUILD.gn index 427ab2eec6..9ffbf49718 100644 --- a/gn/BUILD.gn +++ b/gn/BUILD.gn @@ -24,6 +24,13 @@ declare_args() { cc_wrapper = "" } +is_clang = exec_script("is_clang.py", + [ + cc, + cxx, + ], + "value") + config("default") { asmflags = [] cflags = [] @@ -70,6 +77,74 @@ config("default") { "-Wnon-virtual-dtor", ] + if (is_clang) { + cflags += [ + "-Weverything", + "-Wno-unknown-warning-option", # Let older Clangs ignore newer Clangs' warnings. + ] + + # High priority to fix! + cflags += [ + "-Wno-comma", + "-Wno-conditional-uninitialized", + "-Wno-covered-switch-default", + "-Wno-deprecated", + "-Wno-format-nonliteral", + "-Wno-over-aligned", + "-Wno-shadow", + "-Wno-shift-sign-overflow", + "-Wno-undefined-func-template", + "-Wno-undefined-reinterpret-cast", + ] + + cflags += [ + "-Wno-cast-align", + "-Wno-class-varargs", + "-Wno-conversion", + "-Wno-disabled-macro-expansion", + "-Wno-documentation", + "-Wno-documentation-unknown-command", + "-Wno-double-promotion", + "-Wno-exit-time-destructors", # TODO: OK outside libskia + "-Wno-extra-semi", + "-Wno-float-conversion", + "-Wno-float-equal", + "-Wno-global-constructors", # TODO: OK outside libskia + "-Wno-gnu-anonymous-struct", + "-Wno-gnu-zero-variadic-macro-arguments", + "-Wno-missing-prototypes", + "-Wno-missing-variable-declarations", + "-Wno-nested-anon-types", + "-Wno-newline-eof", + "-Wno-pedantic", + "-Wno-reserved-id-macro", + "-Wno-sign-conversion", + "-Wno-switch-enum", + "-Wno-undef", + "-Wno-unreachable-code", + "-Wno-unreachable-code-break", + "-Wno-unreachable-code-return", + "-Wno-unused-macros", + "-Wno-unused-member-function", + ] + cflags_cc += [ + "-Wno-abstract-vbase-init", + "-Wno-range-loop-analysis", + "-Wno-weak-vtables", + ] + + # We are unlikely to want to fix these. + cflags += [ + "-Wno-implicit-fallthrough", + "-Wno-missing-noreturn", + "-Wno-old-style-cast", + "-Wno-padded", + ] + cflags_cc += [ + "-Wno-c++98-compat", + "-Wno-c++98-compat-pedantic", + ] + } } if (current_cpu == "arm") { diff --git a/gn/is_clang.py b/gn/is_clang.py new file mode 100755 index 0000000000..99173a004c --- /dev/null +++ b/gn/is_clang.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import subprocess +import sys +cc,cxx = sys.argv[1:3] + +if ('clang' in subprocess.check_output([cc, '--version']) and + 'clang' in subprocess.check_output([cxx, '--version'])): + print 'true' +else: + print 'false' + |