Fix warnings-as-errors for clang
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 15 Feb 2013 17:08:45 +0000 (17:08 +0000)
committerDerrick Brashear <shadow@your-file-system.com>
Wed, 20 Feb 2013 12:15:46 +0000 (04:15 -0800)
It seems like some versions of clang have a problem with using
pragmas to stop particular warnings being converted to errors with
-Werror. These compilers require that the warning be ignored completely
in order to suppress it.

Make the necessary changes to afsd and bozo, and update README.WARNINGS
to note the problem.

Change-Id: I66038130695d2ad27c289f29bcd8f6f2eddf1ded
Reviewed-on: http://gerrit.openafs.org/9135
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>

README.WARNINGS
src/afsd/afsd_kernel.c
src/bozo/bosserver.c

index 7a6abd6..fa5fb8f 100644 (file)
@@ -27,6 +27,17 @@ with non-gcc compilers, and can be disabled if desired. For example:
   # pragma GCC diagnostic warning "-Wold-style-definition"
   #endif
 
+It would appear that when built with -Werror, the llvm clang compiler will
+still upgrade warnings that are suppresed in this way to errors. In this case,
+the fix is to mark that warning as ignored, but only for clang. For example:
+  #ifdef IGNORE_SOME_GCC_WARNINGS
+  # ifdef __clang__
+  #  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+  # else
+  #  pragma GCC diagnostic warning "-Wdeprecated-declarations"
+  # endif
+  #endif
+
 If a pragma isn't available for your particular warning, you will need to
 disable all warnings for the file in question. You can do this by supplying
 the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For
index 2f5f780..7800fcb 100644 (file)
 #include <roken.h>
 
 #ifdef IGNORE_SOME_GCC_WARNINGS
-# pragma GCC diagnostic warning "-Wdeprecated-declarations"
+# ifdef __clang__
+#  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+# else
+#  pragma GCC diagnostic warning "-Wdeprecated-declarations"
+# endif
 #endif
 
 #define VFS 1
index 0885f23..4c68b33 100644 (file)
 #include <roken.h>
 
 #ifdef IGNORE_SOME_GCC_WARNINGS
-# pragma GCC diagnostic warning "-Wdeprecated-declarations"
+# ifdef __clang__
+#  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+# else
+#  pragma GCC diagnostic warning "-Wdeprecated-declarations"
+# endif
 #endif
 
 #ifdef HAVE_SYS_RESOURCE_H