Use C++14 by default when building on systems that support it. (#16972)
This is needed to properly support the latest versions of Protobuf.
Austin S. Hemmelgarn committed
Feb 9, 2024 at 06:51 UTC
63f53de380732ab4c088c6b6d7eb48e33310eea9
4 files changed
+37
-1
CMakeLists.txt
+7
-1
@@ -60,7 +60,13 @@ project(netdata
60
find_package(PkgConfig REQUIRED)
61
62
set(CMAKE_C_STANDARD 11)
63
-set(CMAKE_CXX_STANDARD 11)
63
+set(CMAKE_CXX_STANDARD 14)
64
+
65
+option(USE_CXX_11 "use C++11 instead of C++14" False)
66
+
67
+if(USE_CXX_11)
68
+ set(CMAKE_CXX_STANDARD 11)
69
+endif()
70
71
set(CMAKE_C_STANDARD_REQUIRED On)
72
set(CMAKE_CXX_STANDARD_REQUIRED On)
netdata-installer.sh
+3
@@ -209,6 +209,7 @@ USAGE: ${PROGRAM} [options]
209
--disable-ebpf Disable eBPF Kernel plugin. Default: enabled.
210
--disable-cloud Disable all Netdata Cloud functionality.
211
--require-cloud Fail the install if it can't build Netdata Cloud support.
212
+ --force-legacy-cxx Force usage of an older C++ standard to allow building on older systems. This will usually be autodetected.
213
--enable-plugin-freeipmi Enable the FreeIPMI plugin. Default: enable it when libipmimonitoring is available.
214
--disable-plugin-freeipmi Explicitly disable the FreeIPMI plugin.
215
--disable-https Explicitly disable TLS support.
@@ -257,6 +258,7 @@ ENABLE_H2O=1
258
ENABLE_CLOUD=1
259
ENABLE_LOGS_MANAGEMENT=1
260
ENABLE_LOGS_MANAGEMENT_TESTS=0
261
+FORCE_LEGACY_CXX=0
262
NETDATA_CMAKE_OPTIONS="${NETDATA_CMAKE_OPTIONS-}"
263
264
RELEASE_CHANNEL="nightly" # valid values are 'nightly' and 'stable'
@@ -273,6 +275,7 @@ while [ -n "${1}" ]; do
275
"--auto-update-type") ;;
276
"--stable-channel") RELEASE_CHANNEL="stable" ;;
277
"--nightly-channel") RELEASE_CHANNEL="nightly" ;;
278
+ "--force-legacy-cxx") FORCE_LEGACY_CXX=1 ;;
279
"--enable-plugin-freeipmi") ENABLE_FREEIPMI=1 ;;
280
"--disable-plugin-freeipmi") ENABLE_FREEIPMI=0 ;;
281
"--disable-https")
netdata.spec.in
+5
@@ -352,6 +352,11 @@ make download
352
# Conf step
353
%cmake -G Ninja \
354
-DCMAKE_INSTALL_PREFIX=/ \
355
+ %if 0%{?centos_ver:1}
356
+ %if %{centos_ver} < 8
357
+ -DUSE_CXX_11=On \
358
+ %endif
359
+ %endif
360
%if %{_have_cups}
361
-DENABLE_PLUGIN_CUPS=On \
362
%else
packaging/installer/functions.sh
+22
@@ -235,6 +235,28 @@ check_for_feature() {
235
prepare_cmake_options() {
236
NETDATA_CMAKE_OPTIONS="-S ./ -B ${NETDATA_BUILD_DIR} ${CMAKE_OPTS} ${NETDATA_PREFIX+-DCMAKE_INSTALL_PREFIX="${NETDATA_PREFIX}"} ${NETDATA_USER:+-DNETDATA_USER=${NETDATA_USER}} ${NETDATA_CMAKE_OPTIONS} "
237
238
+ NEED_OLD_CXX=0
239
+
240
+ if [ "${FORCE_LEGACY_CXX:-0}" -eq 1 ]; then
241
+ NEED_OLD_CXX=1
242
+ else
243
+ if command -v gcc >/dev/null 2>&1; then
244
+ if [ "$(gcc --version | head -n 1 | sed 's/(.*) //' | cut -f 2 -d ' ' | cut -f 1 -d '.')" -lt 5 ]; then
245
+ NEED_OLD_CXX=1
246
+ fi
247
+ fi
248
+
249
+ if command -v clang >/dev/null 2>&1; then
250
+ if [ "$(clang --version | head -n 1 | cut -f 3 -d ' ' | cut -f 1 -d '.')" -lt 4 ]; then
251
+ NEED_OLD_CXX=1
252
+ fi
253
+ fi
254
+ fi
255
+
256
+ if [ "${NEED_OLD_CXX}" -eq 1 ]; then
257
+ NETDATA_CMAKE_OPTIONS="${NETDATA_CMAKE_OPTIONS} -DUSE_CXX_11=On"
258
+ fi
259
+
260
if [ "${USE_SYSTEM_PROTOBUF:-1}" -eq 1 ]; then
261
enable_feature BUNDLED_PROTOBUF 0
262
else