GN: detect is_clang, use it to switch Clang to warning blacklist.

Same as the last CL, now with -Wno-over-aligned.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2369033002

TBR=bungeman@google.com

NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2369033002
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index 427ab2e..9ffbf49 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -24,6 +24,13 @@
   cc_wrapper = ""
 }
 
+is_clang = exec_script("is_clang.py",
+                       [
+                         cc,
+                         cxx,
+                       ],
+                       "value")
+
 config("default") {
   asmflags = []
   cflags = []
@@ -70,6 +77,74 @@
 
       "-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") {