@@ -2,30 +2,40 @@ cmake_minimum_required (VERSION 3.1)
22project ("comms_champion" )
33
44# Available options
5- option (CC_COMMS_LIB_ONLY "Install only COMMS library, no other apps will be built." OFF )
6- option (CC_LIBS_ONLY "Build and install COMMS and CommsChampion libraries, no other apps will be built." OFF )
7- option (CC_STATIC_RUNTIME "Enable/Disable static runtime" OFF )
8- option (CC_NO_UNIT_TESTS "Disable unittests." OFF )
9- option (CC_NO_WARN_AS_ERR "Do NOT treat warning as error" OFF )
10- option (CC_ENABLE_DEMO_PROTOCOL "Enable demo protocol" OFF )
11- 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" )
5+
6+ option (CC_INSTALL_COMMS_LIB "Install comms library headers." ON )
7+ option (CC_BUILD_UNIT_TESTS "Build unittests." ${CC_INSTALL_COMMS_LIB} )
138option (CC_UNIT_TESTS_USE_SANITIZERS "Use sanitizers during unittests. Applicable when unittest are enabled." ON )
9+ option (CC_BUILD_TOOLS_LIBRARY "Build tools library." ON )
10+ option (CC_INSTALL_TOOLS_LIBRARY "Install tools library." ${CC_BUILD_TOOLS_LIBRARY} )
11+ option (CC_BUILD_TOOLS "Build tools binaries." ${CC_BUILD_TOOLS_LIBRARY} )
12+ option (CC_INSTALL_TOOLS "Install tools binaries." ${CC_BUILD_TOOLS} )
13+ option (CC_BUILD_DEMO_PROTOCOL "Build demo protocol plugin." OFF )
14+ option (CC_INSTALL_DEMO_PROTOCOL "Install demo protocol plugin." ${CC_BUILD_DEMO_PROTOCOL} )
15+ option (CC_WARN_AS_ERR "Treat warning as error" ON )
16+ option (CC_USE_CCACHE "Use ccache on UNIX systems if it's available" ON )
17+ option (CC_SKIP_CXX_STANDARD_FORCING "Use ccache on UNIX systems if it's available" ON )
18+ option (CC_STATIC_RUNTIME "Enable/Disable static runtime" OFF )
1419
1520# Extra variables
1621# CC_QT_DIR=dir - Directory of QT5 installation. Can be used to provide path to QT5 if
1722# differs from system default installation path.
1823# CC_EXTERNALS_DIR - Directory where pull externals, defaults to
1924# ${PROJECT_SOURCE_DIR}/externals
2025
26+ # Deprecated options for backward compatibility, use the ones above for new builds.
27+ # option (CC_COMMS_LIB_ONLY "Install only COMMS library, no other apps will be built." OFF)
28+ # option (CC_LIBS_ONLY "Build and install COMMS and CommsChampion libraries, no other apps will be built." OFF)
29+ # option (CC_NO_UNIT_TESTS "Disable unittests." OFF)
30+ # option (CC_NO_WARN_AS_ERR "Do NOT treat warning as error" OFF)
31+ # option (CC_ENABLE_DEMO_PROTOCOL "Enable demo protocol" OFF)
32+ # option (CC_NO_CXX_STANDARD_FORCING "Disable forcing C++ standard to C++11 when no CMAKE_CXX_STANDARD is defined" OFF)
33+ # option (CC_NO_CCACHE "Disable use of ccache on UNIX systems" OFF)
34+
2135if (CMAKE_TOOLCHAIN_FILE AND EXISTS ${CMAKE_TOOLCHAIN_FILE} )
2236 message (STATUS "Loading toolchain from ${CMAKE_TOOLCHAIN_FILE} " )
2337endif ()
2438
25- if ((NOT CMAKE_CXX_STANDARD) AND (NOT CC_NO_CXX_STANDARD_FORCING))
26- set (CMAKE_CXX_STANDARD 11)
27- endif ()
28-
2939if (NOT CC_EXTERNALS_DIR)
3040 set (CC_EXTERNALS_DIR "${PROJECT_SOURCE_DIR} /externals" )
3141endif ()
@@ -34,8 +44,60 @@ set (CMAKE_SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/cmake")
3444
3545################################################
3646
47+ # Check usage of deprecated options and ovewrite the default values of proper ones
48+ if ((DEFINED CC_COMMS_LIB_ONLY) AND (${CC_COMMS_LIB_ONLY} ))
49+ set (CC_INSTALL_COMMS_LIB ON )
50+ set (CC_BUILD_TOOLS_LIBRARY OFF )
51+ set (CC_INSTALL_TOOLS_LIBRARY OFF )
52+ set (CC_BUILD_TOOLS OFF )
53+ set (CC_INSTALL_TOOLS OFF )
54+ set (CC_BUILD_DEMO_PROTOCOL OFF )
55+ set (CC_INSTALL_DEMO_PROTOCOL OFF )
56+ endif ()
57+
58+ if ((DEFINED CC_LIBS_ONLY) AND (${CC_LIBS_ONLY} ))
59+ set (CC_INSTALL_COMMS_LIB ON )
60+ set (CC_BUILD_TOOLS_LIBRARY ON )
61+ set (CC_INSTALL_TOOLS_LIBRARY ON )
62+ set (CC_BUILD_TOOLS OFF )
63+ set (CC_INSTALL_TOOLS OFF )
64+ set (CC_BUILD_DEMO_PROTOCOL OFF )
65+ set (CC_INSTALL_DEMO_PROTOCOL OFF )
66+ endif ()
67+
68+ macro (cc_negate_option old_name new_name)
69+ if (DEFINED ${old_name} )
70+ if (${old_name} )
71+ set (${new_name} OFF )
72+ else ()
73+ set (${new_name} ON )
74+ endif ()
75+ endif ()
76+ endmacro ()
77+
78+ cc_negate_option(CC_NO_UNIT_TESTS CC_BUILD_UNIT_TESTS)
79+ cc_negate_option(CC_NO_WARN_AS_ERR CC_WARN_AS_ERR)
80+ cc_negate_option(CC_NO_CCACHE CC_USE_CCACHE)
81+
82+ if (DEFINED CC_NO_CXX_STANDARD_FORCING)
83+ set (CC_SKIP_CXX_STANDARD_FORCING ${CC_NO_CXX_STANDARD_FORCING} )
84+ endif ()
85+
86+ if ((DEFINED CC_ENABLE_DEMO_PROTOCOL) AND (${CC_ENABLE_DEMO_PROTOCOL} ))
87+ set (CC_BUILD_TOOLS_LIBRARY ON )
88+ set (CC_INSTALL_TOOLS_LIBRARY ON )
89+ set (CC_BUILD_DEMO_PROTOCOL ON )
90+ set (CC_INSTALL_DEMO_PROTOCOL ON )
91+ endif ()
92+
93+ ################################################
94+
95+ if ((NOT CMAKE_CXX_STANDARD) AND (NOT CC_SKIP_CXX_STANDARD_FORCING))
96+ set (CMAKE_CXX_STANDARD 11)
97+ endif ()
98+
3799while (TRUE )
38- if (CC_NO_UNIT_TESTS )
100+ if (NOT CC_BUILD_UNIT_TESTS )
39101 message (STATUS "Unittests are disabled" )
40102 break ()
41103 endif ()
@@ -53,7 +115,7 @@ endwhile ()
53115################################################
54116# Compiler options
55117set (warn_opt)
56- if (NOT CC_NO_WARN_AS_ERR )
118+ if (CC_WARN_AS_ERR )
57119 set (warn_opt WARN_AS_ERR)
58120endif ()
59121
@@ -63,7 +125,7 @@ if (CC_STATIC_RUNTIME)
63125endif ()
64126
65127set (ccache_opt)
66- if ((UNIX ) AND (NOT CC_NO_CCACHE ))
128+ if ((UNIX ) AND (CC_USE_CCACHE ))
67129 set (ccache_opt USE_CCACHE)
68130endif ()
69131
@@ -135,31 +197,9 @@ set (COMMS_CHAMPION_CMAKE_FILES
135197 ${PROJECT_SOURCE_DIR} /cmake/CommsChampionConfig.cmake
136198)
137199
138- install (
139- FILES ${LIB_COMMS_CMAKE_FILES}
140- DESTINATION ${LIB_INSTALL_DIR} /LibComms/cmake/
141- )
142-
143- if (NOT CC_COMMS_LIB_ONLY)
144- install (
145- FILES ${COMMS_CHAMPION_CMAKE_FILES}
146- DESTINATION ${LIB_INSTALL_DIR} /CommsChampion/cmake/
147- )
148- endif ()
149-
150-
151200add_subdirectory (comms)
152-
153- if (CC_COMMS_LIB_ONLY)
154- return ()
155- endif ()
156-
157201add_subdirectory (comms_champion)
158202
159- if (CC_LIBS_ONLY)
160- return ()
161- endif ()
162-
163203add_subdirectory (demo)
164204
165205if (WIN32 AND CC_QT_DIR)
0 commit comments