@@ -9,6 +9,7 @@ option (CC_NO_UNIT_TESTS "Disable unittests." OFF)
99option (CC_NO_WARN_AS_ERR "Do NOT treat warning as error" OFF )
1010option (CC_ENABLE_DEMO_PROTOCOL "Enable demo protocol" OFF )
1111option (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)
2930endif ()
3031
3132set (CMAKE_SCRIPTS_DIR "${PROJECT_SOURCE_DIR} /cmake" )
33+
34+ ################################################
35+
3236while (TRUE )
3337 if (CC_NO_UNIT_TESTS)
3438 message (STATUS "Unittests are disabled" )
@@ -45,65 +49,27 @@ while (TRUE)
4549 break ()
4650endwhile ()
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)
9862endif ()
9963
64+ set (ccache_opt)
10065if ((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
10874set (COMMS_CHAMPION_LIB_NAME "comms_champion" )
10975
@@ -149,17 +115,19 @@ write_basic_package_version_file(
149115 COMPATIBILITY AnyNewerVersion)
150116
151117set (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
161130set (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
0 commit comments