Skip to content

Commit 78ef0e6

Browse files
committed
Release v3.1
2 parents 0e43e03 + 02c4522 commit 78ef0e6

File tree

162 files changed

+8225
-7164
lines changed

Some content is hidden

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

162 files changed

+8225
-7164
lines changed

.github/FUNDING.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
github: arobenko
2+
custom: "https://www.paypal.me/arobenko"

CMakeLists.txt

Lines changed: 24 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ option (CC_NO_UNIT_TESTS "Disable unittests." OFF)
99
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)
12+
option (CC_NO_CCACHE "Disable use of ccache on UNIX systems")
1213

1314
# Extra variables
1415
# CC_QT_DIR=dir - Directory of QT5 installation. Can be used to provide path to QT5 if
@@ -29,6 +30,9 @@ if (NOT CC_EXTERNALS_DIR)
2930
endif ()
3031

3132
set (CMAKE_SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/cmake")
33+
34+
################################################
35+
3236
while (TRUE)
3337
if (CC_NO_UNIT_TESTS)
3438
message (STATUS "Unittests are disabled")
@@ -45,65 +49,27 @@ while (TRUE)
4549
break()
4650
endwhile ()
4751

48-
if ((CMAKE_COMPILER_IS_GNUCC) OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
49-
set (extra_flags_list
50-
"-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wctor-dtor-privacy"
51-
"-Wmissing-include-dirs"
52-
"-Woverloaded-virtual" "-Wredundant-decls" "-Wshadow" "-Wundef" "-Wunused"
53-
"-Wno-unknown-pragmas" "-fdiagnostics-show-option"
54-
)
55-
56-
if (CMAKE_COMPILER_IS_GNUCC)
57-
list (APPEND extra_flags_list
58-
"-Wnoexcept" "-Wlogical-op" "-Wstrict-null-sentinel"
59-
)
60-
61-
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8")
62-
list (APPEND extra_flags_list
63-
"-Wno-pragmas" "-Wno-type-limits"
64-
)
65-
endif()
66-
67-
endif ()
68-
69-
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
70-
list (APPEND extra_flags_list "-Wno-dangling-field -Wno-unused-command-line-argument")
71-
endif ()
72-
73-
if (NOT CC_NO_WARN_AS_ERR)
74-
list (APPEND extra_flags_list "-Werror")
75-
endif ()
76-
77-
string(REPLACE ";" " " extra_flags "${extra_flags_list}")
78-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${extra_flags}")
79-
80-
if (CC_STATIC_RUNTIME)
81-
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
82-
endif ()
83-
elseif (MSVC)
84-
85-
if (NOT CC_NO_WARN_AS_ERR)
86-
add_definitions("/WX")
87-
endif ()
52+
################################################
53+
# Compiler options
54+
set (warn_opt)
55+
if (NOT CC_NO_WARN_AS_ERR)
56+
set (warn_opt WARN_AS_ERR)
57+
endif ()
8858

89-
if (CC_STATIC_RUNTIME)
90-
foreach(flag_var
91-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
92-
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
93-
if(${flag_var} MATCHES "/MD")
94-
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
95-
endif()
96-
endforeach()
97-
endif ()
59+
set (static_runtime_opt)
60+
if (CC_STATIC_RUNTIME)
61+
set (static_runtime_opt STATIC_RUNTIME)
9862
endif ()
9963

64+
set (ccache_opt)
10065
if ((UNIX) AND (NOT CC_NO_CCACHE))
101-
find_program(CCACHE_FOUND ccache)
102-
if(CCACHE_FOUND)
103-
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
104-
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
105-
endif(CCACHE_FOUND)
106-
endif ()
66+
set (ccache_opt USE_CCACHE)
67+
endif ()
68+
69+
include (${CMAKE_SCRIPTS_DIR}/CC_Compile.cmake)
70+
cc_compile(${warn_opt} ${static_runtime_opt} ${ccache_opt})
71+
72+
################################################
10773

10874
set (COMMS_CHAMPION_LIB_NAME "comms_champion")
10975

@@ -149,17 +115,19 @@ write_basic_package_version_file(
149115
COMPATIBILITY AnyNewerVersion)
150116

151117
set (LIB_COMMS_CMAKE_FILES
118+
${PROJECT_SOURCE_DIR}/cmake/CC_Compile.cmake
119+
${PROJECT_SOURCE_DIR}/cmake/CC_External.cmake
152120
${PROJECT_SOURCE_DIR}/cmake/CC_CxxtestFuncs.cmake
153121
${PROJECT_SOURCE_DIR}/cmake/CC_DefineExternalProjectTargets.cmake
154122
${PROJECT_SOURCE_DIR}/cmake/CC_DocCleanupScript.cmake
123+
${PROJECT_SOURCE_DIR}/cmake/CC_Prefetch.cmake
155124
${PROJECT_SOURCE_DIR}/cmake/CC_RunWithValgrindScript.cmake
156125
${PROJECT_SOURCE_DIR}/cmake/LibCommsConfig.cmake
157126
${PROJECT_SOURCE_DIR}/cmake/DefineExternalProjectTargets.cmake
158127
${CMAKE_BINARY_DIR}/LibCommsConfigVersion.cmake
159128
)
160129

161130
set (COMMS_CHAMPION_CMAKE_FILES
162-
${LIB_COMMS_CMAKE_FILES}
163131
${PROJECT_SOURCE_DIR}/cmake/CC_DeployQt5Script.cmake
164132
${PROJECT_SOURCE_DIR}/cmake/CC_GenWinAppStartBat.cmake
165133
${PROJECT_SOURCE_DIR}/cmake/CommsChampionConfig.cmake

cmake/CC_Compile.cmake

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# This file contains contains a function that prefetches comms_champion project.
2+
3+
# ******************************************************
4+
# cc_compile(
5+
# [WARN_AS_ERR]
6+
# [STATIC_RUNTIME]
7+
# [USE_CCACHE]
8+
# )
9+
#
10+
# - WARN_AS_ERR - Treat warnings as errors.
11+
# - STATIC_RUNTIME - Static link with runtime.
12+
# - USE_CCACHE - Force usage of ccache
13+
#
14+
15+
macro (cc_compile)
16+
set (_prefix CC_COMPILE)
17+
set (_options WARN_AS_ERR STATIC_RUNTIME USE_CCACHE)
18+
set (_oneValueArgs)
19+
set (_mutiValueArgs)
20+
cmake_parse_arguments(${_prefix} "${_options}" "${_oneValueArgs}" "${_mutiValueArgs}" ${ARGN})
21+
22+
if ((CMAKE_COMPILER_IS_GNUCC) OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
23+
set (extra_flags_list
24+
"-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wctor-dtor-privacy"
25+
"-Wmissing-include-dirs"
26+
"-Woverloaded-virtual" "-Wredundant-decls" "-Wshadow" "-Wundef" "-Wunused"
27+
"-Wno-unknown-pragmas" "-fdiagnostics-show-option"
28+
"-Wcast-align" "-Wunused" "-Wconversion"
29+
"-Wold-style-cast" "-Wdouble-promotion"
30+
31+
"-Wno-sign-conversion" # This one is impractical
32+
)
33+
34+
if (CMAKE_COMPILER_IS_GNUCC)
35+
list (APPEND extra_flags_list
36+
"-Wnoexcept" "-Wlogical-op" "-Wstrict-null-sentinel"
37+
)
38+
39+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8")
40+
list (APPEND extra_flags_list
41+
"-Wno-pragmas" "-Wno-type-limits"
42+
)
43+
endif()
44+
45+
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0")
46+
list (APPEND extra_flags_list
47+
"-Wmisleading-indentation" "-Wduplicated-cond"
48+
)
49+
endif()
50+
51+
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.0")
52+
list (APPEND extra_flags_list
53+
"-Wduplicated-branches"
54+
)
55+
endif()
56+
57+
endif ()
58+
59+
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
60+
list (APPEND extra_flags_list "-Wno-dangling-field -Wno-unused-command-line-argument")
61+
endif ()
62+
63+
if (CC_COMPILE_WARN_AS_ERR)
64+
list (APPEND extra_flags_list "-Werror")
65+
endif ()
66+
67+
string(REPLACE ";" " " extra_flags "${extra_flags_list}")
68+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${extra_flags}")
69+
70+
if (CC_COMPILE_STATIC_RUNTIME)
71+
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
72+
endif ()
73+
elseif (MSVC)
74+
75+
if (CC_COMPILE_WARN_AS_ERR)
76+
add_definitions("/WX")
77+
endif ()
78+
79+
if (CC_COMPILE_STATIC_RUNTIME)
80+
foreach(flag_var
81+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
82+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
83+
if(${flag_var} MATCHES "/MD")
84+
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
85+
endif()
86+
endforeach()
87+
endif ()
88+
endif ()
89+
90+
if (CC_COMPILE_USE_CCACHE)
91+
find_program(CCACHE_FOUND ccache)
92+
if(CCACHE_FOUND)
93+
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
94+
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
95+
endif(CCACHE_FOUND)
96+
endif ()
97+
endmacro()

cmake/CC_CxxtestFuncs.cmake

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ macro (cc_get_cxxtest)
121121
add_library(${CC_CXXTEST_TGT_TARGET} ALIAS ${local_cxxtest_name})
122122
target_compile_options(${local_cxxtest_name} INTERFACE
123123
$<$<CXX_COMPILER_ID:MSVC>:/wd5055>
124-
$<$<CXX_COMPILER_ID:GNU>:-Wno-unknown-warning -Wno-old-style-cast -Wno-shadow -Wno-ignored-qualifiers>
125-
$<$<CXX_COMPILER_ID:Clang>:-Wno-unknown-warning-option -Wno-deprecated-enum-float-conversion>
126124
)
127125

128-
target_include_directories(${local_cxxtest_name} INTERFACE ${CXXTEST_INCLUDE_DIR})
126+
target_include_directories(${local_cxxtest_name} SYSTEM INTERFACE ${CXXTEST_INCLUDE_DIR})
129127

130128
if (CC_CXXTEST_TGT_NO_CTEST_INCLUDE)
131129
break()

cmake/CC_External.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ function (cc_pull_sources)
140140

141141
execute_process (
142142
COMMAND
143-
${GIT_EXECUTABLE} clone -b ${CC_PULL_TAG} --depth 1 ${CC_PULL_REPO} ${CC_PULL_SRC_DIR}
143+
${GIT_EXECUTABLE} clone -b ${CC_PULL_TAG} ${CC_PULL_REPO} ${CC_PULL_SRC_DIR}
144144
RESULT_VARIABLE git_result
145145
)
146146

@@ -225,6 +225,7 @@ macro (cc_define_external_project_targets inst_dir)
225225

226226
add_library(comms INTERFACE)
227227
add_library(cc::comms ALIAS comms)
228+
228229
target_include_directories(comms INTERFACE ${CC_INCLUDE_DIRS})
229230

230231
target_compile_options(comms INTERFACE

cmake/CC_Prefetch.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function (cc_prefetch)
5252

5353
execute_process (
5454
COMMAND
55-
${GIT_EXECUTABLE} clone -b ${CC_FETCH_TAG} --depth 1 ${CC_FETCH_REPO} ${CC_FETCH_SRC_DIR}
55+
${GIT_EXECUTABLE} clone -b ${CC_FETCH_TAG} ${CC_FETCH_REPO} ${CC_FETCH_SRC_DIR}
5656
RESULT_VARIABLE git_result
5757
)
5858

cmake/CommsChampionConfig.cmake

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,12 @@ endif ()
6161
set (CC_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR})
6262

6363
find_package(PackageHandleStandardArgs REQUIRED)
64-
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CC_COMMS_CHAMPION REQUIRED_VARS
65-
CC_ROOT_DIR CC_INCLUDE_DIR CC_PLUGIN_LIBRARY_DIR CC_PLUGIN_LIBRARY CC_CMAKE_DIR)
64+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
65+
CommsChampion
66+
REQUIRED_VARS
67+
CC_ROOT_DIR CC_INCLUDE_DIR CC_PLUGIN_LIBRARY_DIR CC_PLUGIN_LIBRARY CC_CMAKE_DIR)
68+
69+
set (CC_COMMS_CHAMPION_FOUND ${CommsChampion_FOUND})
6670

6771
if (CC_COMMS_CHAMPION_FOUND)
6872
set (CC_INCLUDE_DIRS ${CC_INCLUDE_DIR})

cmake/LibCommsConfig.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ endif ()
2424
get_target_property(CC_COMMS_INCLUDE_DIRS cc::comms INTERFACE_INCLUDE_DIRECTORIES)
2525

2626
find_package(PackageHandleStandardArgs REQUIRED)
27-
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CC_COMMS REQUIRED_VARS CC_COMMS_INCLUDE_DIRS)
27+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
28+
LibComms
29+
REQUIRED_VARS CC_COMMS_INCLUDE_DIRS)
30+
31+
set (CC_COMMS_FOUND ${LibComms_FOUND})
2832

2933
if (CC_COMMS_FOUND)
3034
set (CC_COMMS_INCLUDE_DIR ${CC_COMMS_INCLUDE_DIRS})

comms/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ add_library(comms INTERFACE)
2323
add_library (cc::comms ALIAS comms)
2424

2525
target_include_directories(comms INTERFACE
26-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2726
$<INSTALL_INTERFACE:include>
27+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2828
)
2929

3030
target_compile_options(comms INTERFACE
@@ -33,7 +33,7 @@ target_compile_options(comms INTERFACE
3333

3434
install(TARGETS comms EXPORT commsExport)
3535
install(EXPORT commsExport NAMESPACE cc::
36-
DESTINATION ${LIB_INSTALL_DIR}/LibComms/cmake
36+
DESTINATION ${LIB_INSTALL_DIR}/LibComms/cmake
3737
)
3838

3939
install (

comms/include/comms/CompileControl.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
GCC_DIAG_PRAGMA(push) \
2121
GCC_DIAG_PRAGMA(ignored "-Wpedantic") \
2222
GCC_DIAG_PRAGMA(ignored "-Wctor-dtor-privacy")\
23-
GCC_DIAG_PRAGMA(ignored "-Wold-style-cast")
23+
GCC_DIAG_PRAGMA(ignored "-Wold-style-cast") \
24+
GCC_DIAG_PRAGMA(ignored "-Wconversion")
2425

2526
#define CC_ENABLE_WARNINGS() GCC_DIAG_PRAGMA(pop)
2627

@@ -67,6 +68,8 @@
6768
#define COMMS_IS_CLANG_9_OR_ABOVE (COMMS_IS_CLANG && (__clang_major__ >= 9))
6869
#define COMMS_IS_MSVC_2019 (COMMS_IS_MSVC && (_MSC_VER >= 1920) && (_MSC_VER < 1930))
6970
#define COMMS_IS_MSVC_2019_OR_BELOW (COMMS_IS_MSVC && (_MSC_VER < 1930))
71+
#define COMMS_IS_MSVC_2017_OR_BELOW (COMMS_IS_MSVC && (_MSC_VER < 1920))
72+
#define COMMS_IS_MSVC_2015_OR_BELOW (COMMS_IS_MSVC && (_MSC_VER < 1910))
7073

7174
#if !defined(CC_COMPILER_GCC47) && COMMS_IS_GCC_47_OR_BELOW
7275
#define CC_COMPILER_GCC47

0 commit comments

Comments
 (0)