From 8b8fcdea6eb0459a2e873fa5e1b63bcdc7465a65 Mon Sep 17 00:00:00 2001 From: Viktor Mihajlovski Date: Fri, 14 Dec 2012 16:08:23 +0100 Subject: [PATCH] build: Check for broken GCC -Wlogical-op in configure Some older versions of GCC report a false positive on code like char * haystack, needle; strchr(haystack, needle); Added an extra check in configure.ac which will #define BROKEN_GCC_WLOGICALOP 1 in this case, allowing to special handle "offending" code. Signed-off-by: Viktor Mihajlovski --- configure.ac | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/configure.ac b/configure.ac index 3c97e4fed0..20caa92d04 100644 --- a/configure.ac +++ b/configure.ac @@ -255,6 +255,29 @@ AC_CHECK_TYPE([struct ifreq], #include ]]) +dnl Check whether strchr(s, char variable) causes a bogus compile warning +dnl which is the case with a certain range of GCC versions +AC_MSG_CHECKING([whether GCC -Wlogical-op is broken]) + +save_CFLAGS="$CFLAGS" +CFLAGS="-O2 -Wlogical-op -Werror" + +AC_TRY_COMPILE([#include ], + [const char *haystack; + char needle; + return strchr(haystack, needle) == haystack;], + [gcc_false_strchr_warning=no], + [gcc_false_strchr_warning=yes]) + +CFLAGS="$save_CFLAGS" + +if test "x$gcc_false_strchr_warning" = xyes; then + AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP], 1, + [GCC -Wlogical-op is reporting false positive on strchr]) +fi + +AC_MSG_RESULT([$gcc_false_strchr_warning]) + dnl Our only use of libtasn1.h is in the testsuite, and can be skipped dnl if the header is not present. Assume -ltasn1 is present if the dnl header could be found.