Fix issues with newer clang

- Clang now complains about declarations after statements in C code,
  even when the standard is set to something higher than C99. Disable
  that warning (but only do this for C source, because GCC doesn't like
  that warning applied to C++ sources).

- As of Clang 14, the default for fp-contract is "on", even when
  optimizations are disabled. This was leading to many test failures.
  https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html#floating-point-support-in-clang

Change-Id: I8cafd5bbde60d629ee5a26e69fd8e7c212296b10
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/583741
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/ninja/clang b/ninja/clang
index ae96f28..1a4b7e6 100644
--- a/ninja/clang
+++ b/ninja/clang
@@ -1,6 +1,6 @@
 cc     = clang
 cxx    = clang++
-cflags = -fcolor-diagnostics -Weverything
+cflags = -fcolor-diagnostics -Weverything -ffp-contract=off
 out    = out/clang$mode
 
 include ninja/local
diff --git a/ninja/common b/ninja/common
index 2984f83..147a569 100644
--- a/ninja/common
+++ b/ninja/common
@@ -10,6 +10,9 @@
            -Wno-float-equal $
            -Wno-padded $
 
+warnings_c = $warnings $
+           -Wno-declaration-after-statement $
+
 warnings_cc = $warnings $
            -Wno-c++98-compat-pedantic $
            -Wno-gnu-anonymous-struct $
@@ -17,7 +20,7 @@
 
 
 rule compile_c
-    command = $disabled && touch $out || $cc -std=c11 -g -Os $warnings $cflags $extra_cflags $
+    command = $disabled && touch $out || $cc -std=c11 -g -Os $warnings_c $cflags $extra_cflags $
              -MD -MF $out.d -c $in -o $out
     depfile = $out.d
     deps    = gcc