Ignore -Wcast-function-type warning
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 30 Oct 2019 19:20:20 +0000 (15:20 -0400)
committerFrancis Deslauriers <francis.deslauriers@efficios.com>
Tue, 5 Nov 2019 14:26:55 +0000 (09:26 -0500)
We get this when building on CentOS 8:

bt2/native_bt.c:1819:23: error: cast between incompatible function types from ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} [-Werror=cast-function-type]
   {(char *)"disown",  (PyCFunction)SwigPyObject_disown,  METH_NOARGS,  (char *)"releases ownership of the pointer"},
                       ^
bt2/native_bt.c:1820:23: error: cast between incompatible function types from ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} [-Werror=cast-function-type]
   {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS,  (char *)"acquires ownership of the pointer"},
                       ^
bt2/native_bt.c:1823:23: error: cast between incompatible function types from ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} [-Werror=cast-function-type]
   {(char *)"next",    (PyCFunction)SwigPyObject_next,    METH_NOARGS,  (char *)"returns the next 'this' object"},
                       ^
bt2/native_bt.c:1824:23: error: cast between incompatible function types from ‘PyObject * (*)(SwigPyObject *)’ {aka ‘struct _object * (*)(struct <anonymous> *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} [-Werror=cast-function-type]
   {(char *)"__repr__",(PyCFunction)SwigPyObject_repr,    METH_NOARGS,  (char *)"returns object representation"},
                       ^

See comment in configure.ac for detailed explanation.  It would have
been nice to just disable it when building native_bt.c, but I am not
sure how to do that in a way that's compatible with all compilers and
that is not overly complicated.  So let's just disable it globally for
now.

Change-Id: Iae5c5b6d96978f00e8b19098a438c60817226393
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2309
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
configure.ac

index b5090b39d4cc80d29200578e48e0fc59bcf5f369..b2493566c5b422ad94ba751cc9c617e342f56e7a 100644 (file)
@@ -673,6 +673,19 @@ AX_COMPILER_FLAGS(
                -Wno-format-nonliteral dnl
                -Wno-double-promotion dnl
                -Wno-cast-align dnl
+               dnl
+               dnl Some versions of SWIG (like 3.0.12) generate code that produces
+               dnl -Wcast-function-type warnings.  This warning is present in gcc >= 8.  This
+               dnl combo happens on RHEL/Centos 8, for example.  Later versions of SWIG (like
+               dnl 4.0.1) have the correct function signatures to not produce this warning.
+               dnl It's simpler to just disable the warning globally.
+               dnl
+               dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
+               dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
+               dnl reproduce the warning using that package.
+               dnl
+               dnl Ref: https://github.com/swig/swig/issues/1259
+               -Wno-cast-function-type dnl
        ])
 
 # CFLAGS from AX_COMPILER_FLAGS.
This page took 0.025742 seconds and 4 git commands to generate.