-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 o in -Wno-unused-variable -Wno-unused-parameter
- do
- case "$warn" in
- *$o*) ;;
- *) warn="$warn $o" ;;
+ : The examples are intentionally unreachable as the '*)' case always
+ : matches. To use them, move before the '*)' and edit as appropriate.
+ : It is not a good idea to set ccflags to an absolute value here, as it
+ : often contains general -D defines which are needed for correct
+ : compilation. It is better to edit ccflags as shown, using interpolation
+ : to add flags, or sed to remove flags.
+
+
+ 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
+ ccflags=`echo $ccflags|sed 's/$f/ /'`
+ done
+ ;;
+ esac
+ cppflags=`echo $cppflags|sed 's/-Wdeclaration-after-statement/ /'`
+
+ case "$cc" in
+ *clang*)
+ # clang complains a lot about -Wunused-value which are not fixable
+ warn="$warn -Wno-unused-value"
+ ;;
+ *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 o in -Wno-unused-variable -Wno-unused-parameter
+ do
+ case "$warn" in
+ *$o*) ;;
+ *) warn="$warn $o" ;;
+ esac
+ done
+ ;;
+ *)
+ # clang may not be called clang
+ case "`$cc -v 2>&1`" in
+ *clang*)
+ case "$warn" in
+ *-Wno-unused-value) ;;
+ *) warn="$warn -Wno-unused-value"
+ esac
+ esac