From 501948203fd12718a2372ebfb78e79f33419e10f Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 24 Jun 2013 12:25:48 -0700 Subject: [PATCH] acinclude: Improve detection of not-understood compiler options with clang. By default, clang warns about but does not fail on unknown -W options. This made configure add the option to WARNING_FLAGS, which caused the warning about not-understood warnings to be emitted for every file compiled. In combination with -Werror, clang does fail on unknown -W options. This commit adds -Werror during configure's warning tests, which should cause the not-understood warnings to be detected that way. Reported-by: Ed Maste Tested-by: Ed Maste Signed-off-by: Ben Pfaff --- acinclude.m4 | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index eadc9a76b..717c68166 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -362,15 +362,15 @@ dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -dnl OVS_CHECK_CC_OPTION([OPTION], [ACTION-IF-ACCEPTED], [ACTION-IF-REJECTED]) -dnl Check whether the given C compiler OPTION is accepted. -dnl If so, execute ACTION-IF-ACCEPTED, otherwise ACTION-IF-REJECTED. -AC_DEFUN([OVS_CHECK_CC_OPTION], -[ +AC_DEFUN([_OVS_CHECK_CC_OPTION], [dnl m4_define([ovs_cv_name], [ovs_cv_[]m4_translit([$1], [-], [_])])dnl AC_CACHE_CHECK([whether $CC accepts $1], [ovs_cv_name], [ovs_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $1" + dnl Include -Werror in the compiler options, because without -Werror + dnl clang's GCC-compatible compiler driver does not return a failure + dnl exit status even though it complains about options it does not + dnl understand. + CFLAGS="$CFLAGS $WERROR $1" AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,)], [ovs_cv_name[]=yes], [ovs_cv_name[]=no]) CFLAGS="$ovs_save_CFLAGS"]) if test $ovs_cv_name = yes; then @@ -380,6 +380,21 @@ AC_DEFUN([OVS_CHECK_CC_OPTION], fi ]) +dnl OVS_CHECK_WERROR +dnl +dnl Check whether the C compiler accepts -Werror. +dnl Sets $WERROR to "-Werror", if so, and otherwise to the empty string. +AC_DEFUN([OVS_CHECK_WERROR], + [WERROR= + _OVS_CHECK_CC_OPTION([-Werror], [WERROR=-Werror])]) + +dnl OVS_CHECK_CC_OPTION([OPTION], [ACTION-IF-ACCEPTED], [ACTION-IF-REJECTED]) +dnl Check whether the given C compiler OPTION is accepted. +dnl If so, execute ACTION-IF-ACCEPTED, otherwise ACTION-IF-REJECTED. +AC_DEFUN([OVS_CHECK_CC_OPTION], + [AC_REQUIRE([OVS_CHECK_WERROR]) + _OVS_CHECK_CC_OPTION([$1], [$2], [$3])]) + dnl OVS_ENABLE_OPTION([OPTION]) dnl Check whether the given C compiler OPTION is accepted. dnl If so, add it to WARNING_FLAGS. -- 2.43.0