@cryptotaxi247 / netdata-1 / commits / 63f53de38

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