summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-05-23 13:18:59 -0700
committerGarrett D'Amore <garrett@damore.org>2018-05-23 13:20:02 -0700
commit4f4ac6691daf6ee0509f346bed6d0cae4ec4f45c (patch)
treec8c0314f9bef4acad8fe65ab4f10c6e8a2779e2b
parentd27d3b780ebe1b987d180773ea071fd6a89625a6 (diff)
downloadnanomsg-4f4ac6691daf6ee0509f346bed6d0cae4ec4f45c.tar.gz
fixes #976 Enable all warnings by default
While here we fix a few warnings we found, and enable coverage building with CMake. This is in anticipation of switching to Circle CI.
-rw-r--r--CMakeLists.txt27
-rw-r--r--src/utils/atomic.c9
-rw-r--r--tests/bug777.c2
-rw-r--r--tests/ipc_stress.c2
4 files changed, 36 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1727a95..b0aa665 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,6 +98,7 @@ endif()
option (NN_STATIC_LIB "Build static library instead of shared library." OFF)
option (NN_ENABLE_DOC "Enable building documentation." ON)
+option (NN_ENABLE_COVERAGE "Enable coverage reporting." OFF)
option (NN_ENABLE_GETADDRINFO_A "Enable/disable use of getaddrinfo_a in place of getaddrinfo." ON)
option (NN_TESTS "Build and run nanomsg tests" ON)
option (NN_TOOLS "Build nanomsg tools" ON)
@@ -106,6 +107,32 @@ set (NN_MAX_SOCKETS 512 CACHE STRING "max number of nanomsg sockets that can be
# Platform checks.
+if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(NN_WARN_FLAGS "-Wall -Wextra")
+elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ set(NN_WARN_FLAGS "-Wall -Wextra")
+elseif (CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
+ set(NN_WARN_FLAGS "-Wall -Wextra")
+endif()
+
+if (NNG_ENABLE_COVERAGE)
+ # NB: This only works for GCC and Clang 3.0 and newer. If your stuff
+ # is older than that, you will need to find something newer. For
+ # correct reporting, we always turn off all optimizations.
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(NN_COVERAGE_FLAGS "-g -O0 --coverage")
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ set(NN_COVERAGE_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
+ set(NN_COVERAGE_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
+ else()
+ message(FATAL_ERROR "Unable to enable coverage for your compiler.")
+ endif()
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NN_WARN_FLAGS} ${NN_COVERAGE_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NN_WARN_FLAGS} ${NN_COVERAGE_FLAGS}")
+
find_package (Threads REQUIRED)
message(STATUS "OS System is ${CMAKE_SYSTEM_NAME}")
diff --git a/src/utils/atomic.c b/src/utils/atomic.c
index 4018c7e..f82d0b9 100644
--- a/src/utils/atomic.c
+++ b/src/utils/atomic.c
@@ -22,6 +22,7 @@
#include "atomic.h"
#include "err.h"
+#include "attr.h"
void nn_atomic_init (struct nn_atomic *self, uint32_t n)
{
@@ -31,12 +32,16 @@ void nn_atomic_init (struct nn_atomic *self, uint32_t n)
#endif
}
+#if defined NN_ATOMIC_MUTEX
void nn_atomic_term (struct nn_atomic *self)
{
-#if defined NN_ATOMIC_MUTEX
nn_mutex_term (&self->sync);
-#endif
}
+#else
+void nn_atomic_term (NN_UNUSED struct nn_atomic *self)
+{
+}
+#endif
uint32_t nn_atomic_inc (struct nn_atomic *self, uint32_t n)
{
diff --git a/tests/bug777.c b/tests/bug777.c
index 506ec73..7d5e01b 100644
--- a/tests/bug777.c
+++ b/tests/bug777.c
@@ -25,7 +25,7 @@
#include "testutil.h"
-int main (int argc, const char *argv[])
+int main (NN_UNUSED int argc, const NN_UNUSED char *argv[])
{
int sb;
int sc1;
diff --git a/tests/ipc_stress.c b/tests/ipc_stress.c
index a3bbf84..4ebd171 100644
--- a/tests/ipc_stress.c
+++ b/tests/ipc_stress.c
@@ -95,7 +95,7 @@ static void client(void *arg)
bytes = nn_send (cli_sock, msg, sz_msg, 0);
/* This would better be handled via semaphore or condvar. */
nn_sleep (100);
- nn_assert (bytes == sz_msg);
+ nn_assert ((size_t)bytes == sz_msg);
nn_close (cli_sock);
}
}