[ovs-discuss] configure tests for gcc builtins with CFLAGS=-Werror

Chris Packham Chris.Packham at alliedtelesis.co.nz
Wed May 25 08:05:38 UTC 2016


Hi,

We've run into a problem trying to compile openvswitch with CFLAGS=-Werror.

I don't think it's an openvswitch problem. It appears to be a 
autoconf/gcc issue.

openvswitch has a test to detect the library that implements 
__atomic_load_8 which boils down to "AC_SEARCH_LIBS([__atomic_load_8], 
[atomic])". The problem is when configure is invoked with 
"CFLAGS=-Werror ./configure" conftest.c fails to compile because the 
dummy prototype used doesn't match the builtin definition. This in turn 
causes openvswitch to fail to link because -latomic isn't included in LIBS.

Here is a small patch that illustrates the problem

--- 8< ---
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..e69de29
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..0607b5b
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,10 @@
+AC_INIT([test], [0.1])
+AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+AC_CONFIG_HEADERS([config.h])
+AC_PROG_CC
+AC_SEARCH_LIBS([__atomic_load_8], [atomic])
+AC_CONFIG_FILES([
+ Makefile
+])
+AC_OUTPUT
+
--- 8< ---

When invoked without specifying CFLAGS I get the following

   $ autoreconf -fvi
   $ ./configure | grep atomic_load
   checking for library containing __atomic_load_8... -latomic

When specifing -Werror I get

   $ autoreconf -fvi
   $ CFLAGS=-Werror ./configure | grep atomic_load
   checking for library containing __atomic_load_8... no

Looking at config.log we can see the following

generated by GNU Autoconf 2.69.
...
configure:2742: checking for C compiler version
configure:2751: gcc --version >&5
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
...
configure:3478: checking for library containing __atomic_load_8
configure:3509: gcc -o conftest -Werror   conftest.c  >&5
conftest.c:18:6: error: conflicting types for built-in function 
'__atomic_load_8' [-Werror]
  char __atomic_load_8 ();
       ^
cc1: all warnings being treated as errors

Any thoughts on how we can get -latomic detected and -Werror passed 
through to the build?



More information about the discuss mailing list