suppress unwanted warnings when configuring with clang
authorRich Felker <dalias@aerifal.cx>
Tue, 2 Jun 2020 00:53:42 +0000 (20:53 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 2 Jun 2020 00:59:53 +0000 (20:59 -0400)
coding style warnings enabled by default in clang have long been a
source of spurious questions/bug-reports. since clang provides a -w
that behaves differently from gcc's, and that lets us enable any
warnings we may actually want after turning them all off to start with
a clean slate, use it at configure time if clang is detected.

configure

index a2728969fe8d03f9007b764be9b79efb924e8f7b..435988258db6cf513a485e65c2daf9b3ef621a01 100755 (executable)
--- a/configure
+++ b/configure
@@ -494,6 +494,13 @@ fnmatch '-march=*|*\ -march=*' "$CC $CFLAGS" || tryldflag CFLAGS_AUTO -march=i48
 fnmatch '-mtune=*|*\ -mtune=*' "$CC $CFLAGS" || tryldflag CFLAGS_AUTO -mtune=generic
 fi
 
+#
+# GCC defines -w as overriding any -W options, regardless of order, but
+# clang has a bunch of annoying warnings enabled by default and needs -w
+# to start from a clean slate. So use -w if building with clang.
+#
+test "$cc_family" = clang && tryflag CFLAGS_AUTO -w
+
 #
 # Even with -std=c99, gcc accepts some constructs which are constraint
 # violations. We want to treat these as errors regardless of whether