We're adding -Werror argument twice to every compiler invocation,
if configured with --enable-Werror.  The reason is the double
expansion of the OVS_ENABLE_WERROR macro.  It's called once from
the top level in configure.ac and the second time from the
AC_REQUIRE while checking CXX compatibility.  AC_REQUIRE by itself
protects from double expansion, but it can't protect from top
level calls and it can not be used outside of AC_DEFUN.

One way to fix that is to use AC_DEFUN_ONCE for OVS_ENABLE_WERROR,
but it's not available in older autoconf < 2.64.  So, creating a
separate macro with AC_REQUIRE inside for the top level invocation
to make it expanded only once.

Signed-off-by: Ilya Maximets <[email protected]>
---
 acinclude.m4 | 4 ++++
 configure.ac | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/acinclude.m4 b/acinclude.m4
index b518aa624..d15f11a4e 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -111,6 +111,10 @@ AC_DEFUN([OVS_ENABLE_WERROR],
    fi
    AC_SUBST([SPARSE_WERROR])])
 
+dnl Version for a top level invocation, since AC_REQUIRE can not be used
+dnl outside of AC_DEFUN, but needed to protect against double expansion.
+AC_DEFUN([OVS_ENABLE_WERROR_TOP], [AC_REQUIRE([OVS_ENABLE_WERROR])])
+
 dnl OVS_CHECK_LINUX
 dnl
 dnl Configure linux kernel source tree
diff --git a/configure.ac b/configure.ac
index 59ea0a281..6f8679d7c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -181,7 +181,7 @@ OVS_ENABLE_OPTION([-Wno-null-pointer-arithmetic])
 OVS_ENABLE_OPTION([-Warray-bounds-pointer-arithmetic])
 OVS_CONDITIONAL_CC_OPTION([-Wno-unused], [HAVE_WNO_UNUSED])
 OVS_CONDITIONAL_CC_OPTION([-Wno-unused-parameter], [HAVE_WNO_UNUSED_PARAMETER])
-OVS_ENABLE_WERROR
+OVS_ENABLE_WERROR_TOP
 OVS_ENABLE_SPARSE
 OVS_CTAGS_IDENTIFIERS
 OVS_CHECK_DPCLS_AUTOVALIDATOR
-- 
2.34.3

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to