From 862e39082c67c68876493ae73845db5be521fb75 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 26 Mar 2020 21:11:35 -0400 Subject: [PATCH] Fix: python: suppress -Wmissing-prototypes warning with SWIG 3.0.10 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit SWIG 3.0.10 is used on SLES 12. It produces this warning: CC lttng_wrap.lo lttng_wrap.c:3411:1: error: no previous prototype for ‘SWIG_strnlen’ [-Werror=missing-prototypes] 3411 | SWIG_strnlen(const char* s, size_t maxlen) | ^~~~~~ SWIG_strnlen is defined like this: size_t SWIG_strnlen(const char* s, size_t maxlen) { ... } Since the function is not static and has no previous declaration, the diagnostic is emitted. We can see that they have fixed it in SWIG 3.0.12, where the same function is defined as: SWIGINTERN size_t SWIG_strnlen(const char* s, size_t maxlen) { ... } SWIGINTERN is defined as static. We can workaround the warning by adding our own declaration for SWIG_strnlen in lttng.i(.in). Tested by build with SWIG 3.0.10, 3.0.11 and 3.0.12. Change-Id: I7d9d93cf5fc04f2044a47ad384e16d726e27f72f Signed-off-by: Simon Marchi Signed-off-by: Jérémie Galarneau --- extras/bindings/swig/python/lttng.i.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extras/bindings/swig/python/lttng.i.in b/extras/bindings/swig/python/lttng.i.in index b6b6f960e..684482e1f 100644 --- a/extras/bindings/swig/python/lttng.i.in +++ b/extras/bindings/swig/python/lttng.i.in @@ -32,6 +32,11 @@ multiple concurrent processes and threads. Tracing across multiple systems is al // Avoid -Wmissing-declarations warning. PyObject *SWIG_init(void); + +// Avoid -Wmissing-prototypes warning with SWIG 3.0.10. +#if SWIG_VERSION < 0x30012 +static size_t SWIG_strnlen(const char* s, size_t maxlen); +#endif %} typedef unsigned int uint32_t; -- 2.34.1