#include <net/if.h>
]])
-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 <string.h>],
- [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.
dontwarn="$dontwarn -Wmissing-declarations"
fi
+ dnl Check whether strchr(s, char variable) causes a bogus compile
+ dnl warning, which is the case with GCC < 4.6 on some glibc
+ AC_CACHE_CHECK([whether GCC -Wlogical-op gives bogus warnings],
+ [lv_cv_gcc_wlogical_op_broken], [
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="-O2 -Wlogical-op -Werror"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <string.h>
+ ]], [[
+ const char *haystack;
+ char needle;
+ return strchr(haystack, needle) == haystack;]])],
+ [lv_cv_gcc_wlogical_op_broken=no],
+ [lv_cv_gcc_wlogical_op_broken=yes])
+ CFLAGS="$save_CFLAGS"])
+
# We might fundamentally need some of these disabled forever, but
# ideally we'd turn many of them on
dontwarn="$dontwarn -Wfloat-equal"
WARN_PYTHON_CFLAGS=$WARN_CFLAGS
AC_SUBST(WARN_PYTHON_CFLAGS)
WARN_CFLAGS=$save_WARN_CFLAGS
+
+ if test "$gl_cv_warn_c__Wlogical_op" = yes &&
+ test "$lv_cv_gcc_wlogical_op_broken" = yes; then
+ AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP], 1,
+ [Define to 1 if gcc -Wlogical-op reports false positives on strchr])
+ fi
])