]> granicus.if.org Git - zfs/commitdiff
Disable gcc bool-compare warning
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 13 Jul 2015 19:30:02 +0000 (12:30 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 13 Jul 2015 19:55:26 +0000 (12:55 -0700)
As of gcc version 5.1.1 a new boolean comparison warning has been
introduced.  This warning is harmless but is triggered several places
in the ZFS code base.  Because warnings are promoted to errors when
building with debugging enabled it is necessary to disable the warning
when using versions of gcc which automatically enabling this check.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
config/Rules.am
config/always-no-bool-compare.m4 [new file with mode: 0644]
config/kernel.m4
config/zfs-build.m4

index ff2165e12a84eb3bcedc8a6963e141c3a01a0571..af20ddb3964f9c0273d699d448c070d571e68884 100644 (file)
@@ -3,6 +3,7 @@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h
 AM_LIBTOOLFLAGS = --silent
 AM_CFLAGS  = ${DEBUG_CFLAGS} -Wall -Wstrict-prototypes
 AM_CFLAGS += ${NO_UNUSED_BUT_SET_VARIABLE}
+AM_CFLAGS += ${NO_BOOL_COMPARE}
 AM_CFLAGS += -fno-strict-aliasing
 AM_CPPFLAGS  = -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT
 AM_CPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64
diff --git a/config/always-no-bool-compare.m4 b/config/always-no-bool-compare.m4
new file mode 100644 (file)
index 0000000..316b04b
--- /dev/null
@@ -0,0 +1,27 @@
+dnl #
+dnl # Check if gcc supports -Wno-bool-compare option.
+dnl #
+dnl # We actually invoke gcc with the -Wbool-compare option
+dnl # and infer the 'no-' version does or doesn't exist based upon
+dnl # the results.  This is required because when checking any of
+dnl # no- prefixed options gcc always returns success.
+dnl #
+AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE], [
+       AC_MSG_CHECKING([for -Wno-bool-compare support])
+
+       saved_flags="$CFLAGS"
+       CFLAGS="$CFLAGS -Wbool-compare"
+
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
+       [
+               NO_BOOL_COMPARE=-Wno-bool-compare
+               AC_MSG_RESULT([yes])
+       ],
+       [
+               NO_BOOL_COMPARE=
+               AC_MSG_RESULT([no])
+       ])
+
+       CFLAGS="$saved_flags"
+       AC_SUBST([NO_BOOL_COMPARE])
+])
index 51f8a2bf77821c3b66a67705e461abe37f1042de..806c5747ae6c59526fde06c8b393b499f0ad2514 100644 (file)
@@ -108,6 +108,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other
        dnl # compiler options are added by the kernel build system.
        KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE"
+       KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE"
        KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL"
        KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\""
 
index ccc31d59d5979a14e166a070d4a136a345e8edea..f93c5b5d4ccad503c1dadd1b11e83e6106aec633 100644 (file)
@@ -62,6 +62,7 @@ AC_DEFUN([ZFS_AC_DEBUG_DMU_TX], [
 
 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
        ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE
+       ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE
 ])
 
 AC_DEFUN([ZFS_AC_CONFIG], [