Skip to content

Commit 4f28237

Browse files
committed
Release v3.1.2
2 parents a92c710 + fc2d060 commit 4f28237

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+355
-173
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ option (CC_NO_WARN_AS_ERR "Do NOT treat warning as error" OFF)
1010
option (CC_ENABLE_DEMO_PROTOCOL "Enable demo protocol" OFF)
1111
option (CC_NO_CXX_STANDARD_FORCING "Disable forcing C++ standard to C++11 when no CMAKE_CXX_STANDARD is defined" OFF)
1212
option (CC_NO_CCACHE "Disable use of ccache on UNIX systems")
13+
option (CC_UNIT_TESTS_USE_SANITIZERS "Use sanitizers during unittests. Applicable when unittest are enabled." ON)
1314

1415
# Extra variables
1516
# CC_QT_DIR=dir - Directory of QT5 installation. Can be used to provide path to QT5 if
@@ -68,6 +69,7 @@ endif ()
6869

6970
include (${CMAKE_SCRIPTS_DIR}/CC_Compile.cmake)
7071
cc_compile(${warn_opt} ${static_runtime_opt} ${ccache_opt})
72+
cc_msvc_force_warn_opt("/W4")
7173

7274
################################################
7375

cmake/CC_Compile.cmake

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# This file contains contains a function that prefetches comms_champion project.
22

33
# ******************************************************
4+
# Set predefined compilation flags
45
# cc_compile(
56
# [WARN_AS_ERR]
67
# [STATIC_RUNTIME]
@@ -10,6 +11,13 @@
1011
# - WARN_AS_ERR - Treat warnings as errors.
1112
# - STATIC_RUNTIME - Static link with runtime.
1213
# - USE_CCACHE - Force usage of ccache
14+
#
15+
# ******************************************************
16+
# Update default MSVC warning level option
17+
# cc_msvc_force_warn_opt(opt)
18+
#
19+
# Example:
20+
# cc_msvc_force_warn_opt("/W4")
1321
#
1422

1523
macro (cc_compile)
@@ -71,6 +79,7 @@ macro (cc_compile)
7179
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
7280
endif ()
7381
elseif (MSVC)
82+
add_definitions("/wd4503" "-D_SCL_SECURE_NO_WARNINGS")
7483

7584
if (CC_COMPILE_WARN_AS_ERR)
7685
add_definitions("/WX")
@@ -95,3 +104,18 @@ macro (cc_compile)
95104
endif(CCACHE_FOUND)
96105
endif ()
97106
endmacro()
107+
108+
macro (cc_msvc_force_warn_opt opt)
109+
if (MSVC)
110+
foreach(flag_var
111+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
112+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
113+
114+
string(REGEX REPLACE "/W1" "${opt}" ${flag_var} "${${flag_var}}")
115+
string(REGEX REPLACE "/W2" "${opt}" ${flag_var} "${${flag_var}}")
116+
string(REGEX REPLACE "/W3" "${opt}" ${flag_var} "${${flag_var}}")
117+
string(REGEX REPLACE "/W4" "${opt}" ${flag_var} "${${flag_var}}")
118+
string(REGEX REPLACE "/Wall" "${opt}" ${flag_var} "${${flag_var}}")
119+
endforeach()
120+
endif ()
121+
endmacro()

cmake/CC_CxxtestFuncs.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,9 @@ macro (cc_get_cxxtest)
120120
add_library("cc_cxxtest" INTERFACE)
121121
add_library(${CC_CXXTEST_TGT_TARGET} ALIAS ${local_cxxtest_name})
122122
target_compile_options(${local_cxxtest_name} INTERFACE
123-
$<$<CXX_COMPILER_ID:MSVC>:/wd5055>
123+
$<$<CXX_COMPILER_ID:GNU>:-Wno-old-style-cast>
124+
$<$<CXX_COMPILER_ID:Clang>:-Wno-old-style-cast>
125+
$<$<CXX_COMPILER_ID:MSVC>:/wd4309 /wd5055>
124126
)
125127

126128
target_include_directories(${local_cxxtest_name} SYSTEM INTERFACE ${CXXTEST_INCLUDE_DIR})
@@ -152,7 +154,7 @@ function (cc_cxxtest_add_test)
152154
endif ()
153155

154156
CXXTEST_ADD_TEST (${CC_CXXTEST_TEST_NAME} ${runner} ${CC_CXXTEST_TEST_SRC})
155-
target_link_libraries(${CC_CXXTEST_TEST_NAME} ${CC_CXXTEST_TEST_COMMS_TARGET} ${CC_CXXTEST_TEST_CXXTEST_TARGET})
157+
target_link_libraries(${CC_CXXTEST_TEST_NAME} PUBLIC ${CC_CXXTEST_TEST_COMMS_TARGET} ${CC_CXXTEST_TEST_CXXTEST_TARGET})
156158

157159
if (NOT CC_CXXTEST_TEST_VALGRIND_EXECUTABLE)
158160
return ()

cmake/CC_DefineExternalProjectTargets.cmake

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ macro (cc_define_external_project_targets inst_dir)
4040
add_library(cc::comms ALIAS comms)
4141
target_include_directories(comms INTERFACE ${CC_INCLUDE_DIRS})
4242

43-
target_compile_options(comms INTERFACE
44-
$<$<CXX_COMPILER_ID:MSVC>:/wd4503 /wd4309 /wd4267 -D_SCL_SECURE_NO_WARNINGS>
45-
)
46-
4743
while (TRUE)
4844
if (CC_EXT_TGT_NO_COMMS_CHAMPION OR CC_EXT_TGT_NO_TOOLS)
4945
break ()

cmake/CC_External.cmake

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,6 @@ macro (cc_define_external_project_targets inst_dir)
228228

229229
target_include_directories(comms INTERFACE ${CC_INCLUDE_DIRS})
230230

231-
target_compile_options(comms INTERFACE
232-
$<$<CXX_COMPILER_ID:MSVC>:/wd4503 /wd4309 /wd4267 -D_SCL_SECURE_NO_WARNINGS>
233-
)
234-
235231
while (TRUE)
236232
if (CC_EXT_TGT_NO_COMMS_CHAMPION OR CC_EXT_TGT_NO_TOOLS)
237233
break ()

comms/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ target_include_directories(comms INTERFACE
2727
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2828
)
2929

30-
target_compile_options(comms INTERFACE
31-
$<$<CXX_COMPILER_ID:MSVC>:/wd4503 /wd4309 /wd4267 -D_SCL_SECURE_NO_WARNINGS>
32-
)
33-
3430
install(TARGETS comms EXPORT commsExport)
3531
install(EXPORT commsExport NAMESPACE cc::
3632
DESTINATION ${LIB_INSTALL_DIR}/LibComms/cmake

comms/doc/doxygen.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2105,15 +2105,15 @@ ENABLE_PREPROCESSING = YES
21052105
# The default value is: NO.
21062106
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
21072107

2108-
MACRO_EXPANSION = NO
2108+
MACRO_EXPANSION = YES
21092109

21102110
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
21112111
# the macro expansion is limited to the macros specified with the PREDEFINED and
21122112
# EXPAND_AS_DEFINED tags.
21132113
# The default value is: NO.
21142114
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
21152115

2116-
EXPAND_ONLY_PREDEF = NO
2116+
EXPAND_ONLY_PREDEF = YES
21172117

21182118
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
21192119
# INCLUDE_PATH will be searched if a #include is found.
@@ -2145,7 +2145,7 @@ INCLUDE_FILE_PATTERNS =
21452145
# recursively expanded use the := operator instead of the = operator.
21462146
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
21472147

2148-
PREDEFINED = FOR_DOXYGEN_DOC_ONLY
2148+
PREDEFINED = FOR_DOXYGEN_DOC_ONLY COMMS_MSVC_WARNING_PUSH= COMMS_MSVC_WARNING_POP= COMMS_MSVC_WARNING_DISABLE(x)=
21492149

21502150
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
21512151
# tag can be used to specify a list of macro names that should be expanded. The

comms/include/comms/CompileControl.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929

3030
#define CC_DISABLE_WARNINGS()
3131
#define CC_ENABLE_WARNINGS()
32+
3233
#endif
3334

35+
3436
#define COMMS_IS_MSVC false
3537
#define COMMS_IS_GCC false
3638
#define COMMS_IS_CLANG false
@@ -127,5 +129,21 @@
127129
(COMMS_IS_MSVC && (_MSC_VER >= 1926)) \
128130
)
129131

132+
#if COMMS_IS_MSVC
133+
134+
#define COMMS_MSVC_WARNING_PRAGMA(s_) __pragma(s_)
135+
#define COMMS_MSVC_WARNING_PUSH __pragma(warning(push))
136+
#define COMMS_MSVC_WARNING_POP __pragma(warning(pop))
137+
#define COMMS_MSVC_WARNING_DISABLE(w_) __pragma(warning(disable:w_))
138+
#define COMMS_MSVC_WARNING_SUPPRESS(w_) __pragma(warning(suppress:w_))
139+
140+
#else // #if COMMS_IS_MSVC
141+
142+
#define COMMS_MSVC_WARNING_PRAGMA(s_)
143+
#define COMMS_MSVC_WARNING_PUSH
144+
#define COMMS_MSVC_WARNING_POP
145+
#define COMMS_MSVC_WARNING_DISABLE(w_)
146+
#define COMMS_MSVC_WARNING_SUPPRESS(w_)
130147

148+
#endif // #if COMMS_IS_MSVC
131149

comms/include/comms/details/DispatchMsgLinearSwitchHelper.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99

1010
#include <type_traits>
1111

12+
#include "comms/CompileControl.h"
1213
#include "comms/Message.h"
1314
#include "comms/details/message_check.h"
1415
#include "comms/util/type_traits.h"
1516
#include "comms/details/tag.h"
1617
#include "DispatchMsgHelperType.h"
1718

19+
COMMS_MSVC_WARNING_PUSH
20+
COMMS_MSVC_WARNING_DISABLE(4702) // Gives warning about unreachable code
21+
1822
namespace comms
1923
{
2024

@@ -785,3 +789,5 @@ class DispatchMsgLinearSwitchHelper
785789
} // namespace details
786790

787791
} // namespace comms
792+
793+
COMMS_MSVC_WARNING_POP

comms/include/comms/details/gen_enum.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#pragma once
99

10+
#include <limits>
11+
1012
#include "macro_common.h"
1113

1214
#define COMMS_WRAP_ENUM(p_, v_) COMMS_CONCATENATE(p_, v_)
@@ -65,10 +67,12 @@
6567
#define COMMS_CHOOSE_ENUM(N, p_, ...) COMMS_EXPAND(COMMS_CHOOSE_ENUM_(N, p_, __VA_ARGS__))
6668
#define COMMS_DO_ENUM(p_, ...) COMMS_EXPAND(COMMS_CHOOSE_ENUM(COMMS_NUM_ARGS(__VA_ARGS__), p_, __VA_ARGS__))
6769

68-
#define COMMS_END_ENUM(p_) COMMS_CONCATENATE(p_, _numOfValues)
70+
#define COMMS_END_ENUM(p_) \
71+
COMMS_CONCATENATE(p_, _numOfValues), \
72+
COMMS_CONCATENATE(p_, _typeLimit) = std::numeric_limits<unsigned>::max()
6973

7074
#define COMMS_DEFINE_ENUM(p_, ...) \
71-
enum p_ { \
75+
enum p_ : unsigned { \
7276
COMMS_EXPAND(COMMS_DO_ENUM(COMMS_CONCATENATE(p_, _), __VA_ARGS__)) \
7377
, COMMS_END_ENUM(p_) \
7478
};

0 commit comments

Comments
 (0)