+ ;;
+esac
+
+case "$cc" in
+*g++*)
+ # Extra paranoia in case people have bad canned ccflags:
+ # bad in the sense that the flags are accepted by g++,
+ # but then whined about.
+ for f in -Wdeclaration-after-statement -std=c89
+ do
+ case "$ccflags" in
+ *"$f"*)
+ echo "cflags.SH: Removing $ccflags because of g++."
+ ccflags=`echo $ccflags|sed 's/$f/ /'` ;;
+ esac
+ done
+ ;;
+esac
+
+for f in -Wdeclaration-after-statement
+do
+ case "$cppflags" in
+ *"$f"*)
+ echo "cflags.SH: Removing $f from cppflags."
+ cppflags=`echo $cppflags|sed 's/$f/ /'` ;;
+ esac
+done
+
+# -Wall includes -Wunused-value and -Wunused-parameter, which may be too much
+# with some compilers.
+#
+# XXX this is related to the unfortunate fact that bare -Wall (without
+# amending -Wno-unused-...) is too much for XS code because of all the
+# often generated but unused things.
+#
+case "$ccflags$warn" in
+*-Wall*)
+ is_clang=undef
+ case "$cc" in
+ *g++*)
+ # Without -Wno-unused-variable g++ 4.x compiles are rather unwatchable
+ # because of all the warnings about Perl___notused, and g++ doesn't do
+ # __attribute__((unused)) (and even if at some stage it may, people do
+ # have older gcc installations), and ((void)x) isn't enough to silence
+ # the noises about XS functions not using their cv parameter, so we need
+ # the -Wno-unused-parameter too.
+ # Yes, we lose some valid warnings, but hopefully other compilers
+ # (like gcc) will still pick up those warnings.
+ for f in -Wno-unused-variable -Wno-unused-parameter
+ do
+ case "$warn" in
+ *"$f"*) ;;
+ *)
+ echo "cflags.SH: Adding $f because of g++."
+ warn="$warn $f" ;;
+ esac
+ done
+ ;;
+ *clang*) is_clang=define ;;
+ *) # clang may not be called clang, it may be called cc.
+ case "`$cc -v 2>&1`" in
+ *clang*) is_clang=define ;;
+ esac ;;
+ esac
+
+ case "$is_clang" in
+ define)
+ for f in -Wno-unused-value
+ do
+ case "$warn" in
+ *"$f"*) ;;
+ *)
+ echo "cflags.SH: Adding $f because of clang."
+ warn="$warn $f" ;;
+ esac
+ done
+ ;;