diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-07-24 09:53:08 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-07-24 09:53:08 +0000 |
commit | 6a1900e8bd84c282a500ae4032645ae55c614b7b (patch) | |
tree | d4d31289c39fc00da064a825df13a0b98ce95b10 /CMakeLists.txt | |
parent | Adding upstream version 1.45.3+dfsg. (diff) | |
download | netdata-upstream/1.46.3.tar.xz netdata-upstream/1.46.3.zip |
Adding upstream version 1.46.3.upstream/1.46.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 1109 |
1 files changed, 703 insertions, 406 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d07d620e..e8b7c4a37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,71 +1,41 @@ # SPDX-License-Identifier: GPL-3.0-or-later -cmake_minimum_required(VERSION 3.13.0) +cmake_minimum_required(VERSION 3.13.0...3.28) -# -# version atrocities -# +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/packaging/cmake/Modules") -find_package(Git) - -if(GIT_EXECUTABLE) - execute_process(COMMAND ${GIT_EXECUTABLE} describe - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - RESULT_VARIABLE GIT_DESCRIBE_RESULT - OUTPUT_VARIABLE GIT_DESCRIBE_OUTPUT) - if(GIT_DESCRIBE_RESULT) - file(STRINGS packaging/version GIT_DESCRIBE_OUTPUT) - message(WARNING "using version from packaging/version: '${GIT_DESCRIBE_OUTPUT}'") - endif() -else() - file(STRINGS packaging/version GIT_DESCRIBE_OUTPUT) - message(WARNING "using version from packaging/version: '${GIT_DESCRIBE_OUTPUT}'") -endif() - -string(STRIP ${GIT_DESCRIBE_OUTPUT} GIT_DESCRIBE_OUTPUT) -string(REGEX MATCH "v?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?([0-9]+)?-?([0-9a-zA-Z]+)?" MATCHES "${GIT_DESCRIBE_OUTPUT}") - -if(CMAKE_MATCH_COUNT EQUAL 3) - set(FIELD_MAJOR ${CMAKE_MATCH_1}) - set(FIELD_MINOR ${CMAKE_MATCH_2}) - set(FIELD_PATCH ${CMAKE_MATCH_3}) - set(FIELD_TWEAK 0) - set(FIELD_DESCR "N/A") -elseif(CMAKE_MATCH_COUNT EQUAL 4) - set(FIELD_MAJOR ${CMAKE_MATCH_1}) - set(FIELD_MINOR ${CMAKE_MATCH_2}) - set(FIELD_PATCH ${CMAKE_MATCH_3}) - set(FIELD_TWEAK ${CMAKE_MATCH_4}) - set(FIELD_DESCR "N/A") -elseif(CMAKE_MATCH_COUNT EQUAL 5) - set(FIELD_MAJOR ${CMAKE_MATCH_1}) - set(FIELD_MINOR ${CMAKE_MATCH_2}) - set(FIELD_PATCH ${CMAKE_MATCH_3}) - set(FIELD_TWEAK ${CMAKE_MATCH_4}) - set(FIELD_DESCR ${CMAKE_MATCH_5}) -else() - message(FATAL_ERROR "Wrong version regex match count ${CMAKE_MATCH_COUNT} (should be in 3, 4 or 5)") -endif() - -set(NETDATA_VERSION ${FIELD_MAJOR}.${FIELD_MINOR}.${FIELD_PATCH}.${FIELD_TWEAK}) - -# -# project -# +include(NetdataVersion) +netdata_version() project(netdata - VERSION ${NETDATA_VERSION} - DESCRIPTION "Netdata real-time monitoring" + VERSION "${NETDATA_VERSION_MAJOR}.${NETDATA_VERSION_MINOR}.${NETDATA_VERSION_PATCH}.${NETDATA_VERSION_TWEAK}" HOMEPAGE_URL "https://www.netdata.cloud" LANGUAGES C CXX) -list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/packaging/cmake/Modules") +include(CMakeDependentOption) + +if(DEFINED BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) + set(STATIC_BUILD TRUE) + endif() +endif() + +if(STATIC_BUILD) + set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX}") + set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX}") +endif() find_package(PkgConfig REQUIRED) +if(STATIC_BUILD) + list(APPEND PKG_CONFIG_EXECUTABLE "--static") +endif() + set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 14) +set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "netdata") -option(USE_CXX_11 "use C++11 instead of C++14" False) +option(USE_CXX_11 "Use C++11 instead of C++14 (should only be used on legacy systems that cannot support C++14, may disable some features)" False) +mark_as_advanced(USE_CXX_11) if(USE_CXX_11) set(CMAKE_CXX_STANDARD 11) @@ -80,53 +50,149 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() -option(ENABLE_ADDRESS_SANITIZER "enable address sanitizer" False) +include(NetdataCompilerFlags) -if(ENABLE_ADDRESS_SANITIZER) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") -endif() +set(CMAKE_EXPORT_COMPILE_COMMANDS On) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +# Check for the mold linker and try to use it if available +option(USE_MOLD "If the MOLD linker is available on the system, use it instead of the default linker." TRUE) -set(CMAKE_EXPORT_COMPILE_COMMANDS On) +if(USE_MOLD) + message(CHECK_START "Searching for MOLD linker") + find_program(MOLD_LINKER NAMES ld.mold mold) + + if(MOLD_LINKER) + execute_process(COMMAND ${MOLD_LINKER} --version + RESULT_VARIABLE MOLD_VERSION_RESULT + OUTPUT_VARIABLE MOLD_VERSION) + + if(NOT MOLD_VERSION_RESULT) + string(REPLACE "\n" "" MOLD_VERSION "${MOLD_VERSION}") + message(CHECK_PASS "found (version: ${MOLD_VERSION})") + message(STATUS "Using mold instead of the system default for linking.") + add_link_options("-fuse-ld=mold") + else() + message(CHECK_FAIL "failed") + endif() + else() + message(CHECK_FAIL "failed") + endif() +endif() set(CONFIG_H_DIR ${CMAKE_BINARY_DIR}) set(CONFIG_H ${CONFIG_H_DIR}/config.h) -option(ENABLE_CLOUD "enable cloud" True) -option(ENABLE_ACLK "enable aclk" True) -option(ENABLE_ML "enable machine learning" True) -option(ENABLE_H2O "enable h2o" True) -option(ENABLE_DBENGINE "enable dbengine" True) - -option(ENABLE_PLUGIN_APPS "enable apps.plugin" True) -option(ENABLE_PLUGIN_CGROUP_NETWORK "enable cgroup-network plugin" True) -option(ENABLE_PLUGIN_CUPS "enable cups.plugin" True) -option(ENABLE_PLUGIN_DEBUGFS "enable debugfs.plugin" True) -option(ENABLE_PLUGIN_EBPF "enable ebpf.plugin" True) -option(ENABLE_PLUGIN_FREEIPMI "enable freeipmi.plugin" True) -option(ENABLE_PLUGIN_GO "enable go.d.plugin" True) -option(ENABLE_PLUGIN_LOCAL_LISTENERS "enable local-listeners" True) -option(ENABLE_PLUGIN_LOGS_MANAGEMENT "enable logs-management.plugin" True) -option(ENABLE_PLUGIN_NETWORK_VIEWER "enable network-viewer" True) -option(ENABLE_PLUGIN_NFACCT "enable nfacct.plugin" True) -option(ENABLE_PLUGIN_PERF "enable perf.plugin" True) -option(ENABLE_PLUGIN_SLABINFO "enable slabinfo.plugin" True) -option(ENABLE_PLUGIN_SYSTEMD_JOURNAL "enable systemd-journal.plugin" True) -option(ENABLE_PLUGIN_XENSTAT "enable xenstat.plugin" True) - -option(ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE "enable prometheus remote write exporter" True) -option(ENABLE_EXPORTER_MONGODB "enable mongodb exporter" True) - -option(ENABLE_BUNDLED_JSONC "enable bundled json-c" False) -option(ENABLE_BUNDLED_YAML "enable bundled yaml" False) -option(ENABLE_BUNDLED_PROTOBUF "enable bundled protobuf" False) - -option(ENABLE_LOGS_MANAGEMENT_TESTS "enable logs management tests" True) - -option(ENABLE_SENTRY "enable sentry" False) -option(ENABLE_WEBRTC "enable webrtc" False) +# +# detect OS +# + +set(OS_FREEBSD False) +set(OS_LINUX False) +set(OS_MACOS False) +set(OS_WINDOWS False) +set(ALLOW_PLATFORM_SENSITIVE_OPTIONS True) + +if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") + set(OS_MACOS True) + find_library(IOKIT IOKit) + find_library(FOUNDATION Foundation) + message(INFO " Compiling for MacOS... ") +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") + set(OS_FREEBSD True) + message(INFO " Compiling for FreeBSD... ") +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + set(OS_LINUX True) + add_definitions(-D_GNU_SOURCE) + message(INFO " Compiling for Linux... ") + include(NetdataUtil) + netdata_identify_libc(LIBC_IMPLEMENTATION) + if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND LIBC_IMPLEMENTATION STREQUAL "musl") + set(ALLOW_PLATFORM_SENSITIVE_OPTIONS False) + endif() +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "MSYS" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") + set(OS_WINDOWS True) + add_definitions(-D_GNU_SOURCE) + + if($ENV{CLION_IDE}) + # clion needs these to find the includes + if("${CMAKE_SYSTEM_NAME}" STREQUAL "MSYS" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") + if("$ENV{MSYSTEM}" STREQUAL "MSYS") + include_directories(c:/msys64/usr/include) + include_directories(c:/msys64/usr/include/w32api) + elseif("$ENV{MSYSTEM}" STREQUAL "MINGW64") + include_directories(c:/msys64/mingw64/include) + elseif("$ENV{MSYSTEM}" STREQUAL "UCRT64") + include_directories(c:/msys64/ucrt64/include) + endif() + endif() + endif() + + message(INFO " Compiling for Windows (${CMAKE_SYSTEM_NAME}, MSYSTEM=$ENV{MSYSTEM})... ") +else() + message(FATAL_ERROR "Unknown/unsupported platform: ${CMAKE_SYSTEM_NAME} (Supported platforms: FreeBSD, Linux, macOS, Windows)") +endif() + +# This is intended to make life easier for developers who are working on one +# specific feature. +option(DEFAULT_FEATURE_STATE "Specify the default state for most optional features" True) +mark_as_advanced(DEFAULT_FEATURE_STATE) + +# High-level features +option(ENABLE_ACLK "Enable Netdata Cloud support (ACLK)" ${DEFAULT_FEATURE_STATE}) +option(ENABLE_CLOUD "Enable Netdata Cloud by default at runtime" ${DEFAULT_FEATURE_STATE}) +option(ENABLE_ML "Enable machine learning features" ${DEFAULT_FEATURE_STATE}) +option(ENABLE_DBENGINE "Enable dbengine metrics storage" True) + +# Data collection plugins +option(ENABLE_PLUGIN_APPS "Enable per-process resource usage monitoring" ${DEFAULT_FEATURE_STATE}) +option(ENABLE_PLUGIN_GO "Enable metric collectors written in Go" ${DEFAULT_FEATURE_STATE}) + +cmake_dependent_option(ENABLE_PLUGIN_CUPS "Enable CUPS monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX OR OS_FREEBSD OR OS_MACOS" False) + +cmake_dependent_option(ENABLE_PLUGIN_FREEIPMI "Enable IPMI monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX OR OS_FREEBSD" False) + +cmake_dependent_option(ENABLE_PLUGIN_CGROUP_NETWORK "Enable Linux CGroup network usage monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_DEBUGFS "Enable Linux DebugFS metric collection" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_EBPF "Enable Linux eBPF metric collection" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_LEGACY_EBPF_PROGRAMS "Enable eBPF programs for kernels without BTF support" True "ENABLE_PLUGIN_EBPF" False) +mark_as_advanced(ENABLE_LEGACY_EBPF_PROGRAMS) +cmake_dependent_option(ENABLE_PLUGIN_LOCAL_LISTENERS "Enable local listening socket tracking (including service auto-discovery support)" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_LOGS_MANAGEMENT "Enable log collection and monitoring based on Fluent Bit" False "OS_LINUX AND ALLOW_PLATFORM_SENSITIVE_OPTIONS" False) +cmake_dependent_option(ENABLE_PLUGIN_NETWORK_VIEWER "Enable network viewer functionality" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_NFACCT "Enable Linux NFACCT metric collection" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_PERF "Enable Linux performance counter monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_SLABINFO "Enable Linux kernel SLAB allocator monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_SYSTEMD_JOURNAL "Enable systemd journal log collection" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) +cmake_dependent_option(ENABLE_PLUGIN_XENSTAT "Enable Xen domain monitoring" ${DEFAULT_FEATURE_STATE} "OS_LINUX" False) + +# Metrics exporters +option(ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE "Enable exporting to Prometheus via remote write API" ${DEFAULT_FEATURE_STATE}) +option(ENABLE_EXPORTER_MONGODB "Enable exporting to MongoDB" ${DEFAULT_FEATURE_STATE}) + +# Vendoring +option(ENABLE_BUNDLED_JSONC "Force use of a vendored copy of JSON-C" False) +option(ENABLE_BUNDLED_YAML "Force use of a vendored copy of libyaml" False) +option(ENABLE_BUNDLED_PROTOBUF "Use a vendored copy of protobuf" False) + +# Optional test code +cmake_dependent_option(ENABLE_LOGS_MANAGEMENT_TESTS "Enable test code for logs-management plugin." True "ENABLE_PLUGIN_LOGS_MANAGEMENT" False) +mark_as_advanced(ENABLE_LOGS_MANAGEMENT_TESTS) + +# Experimental features +option(ENABLE_WEBRTC "Enable WebRTC dashboard communications (experimental)" False) +mark_as_advanced(ENABLE_WEBRTC) +option(ENABLE_H2O "Enable H2O web server (experimental)" True) +mark_as_advanced(ENABLE_H2O) + +# Other optional functionality +option(ENABLE_SENTRY "Build with Sentry Native crash reporting" False) +mark_as_advanced(ENABLE_SENTRY) + +option(BUILD_FOR_PACKAGING "Include component files for native packages" False) +mark_as_advanced(BUILD_FOR_PACKAGING) + +cmake_dependent_option(FORCE_LEGACY_LIBBPF "Force usage of libbpf 0.0.9 instead of the latest version." False "ENABLE_PLUGIN_EBPF" False) +mark_as_advanced(FORCE_LEGACY_LIBBPF) if(ENABLE_ACLK OR ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE) set(NEED_PROTOBUF True) @@ -142,26 +208,9 @@ if(ENABLE_PLUGIN_GO) find_package(Go "${MIN_GO_VERSION}" REQUIRED) endif() -if(ENABLE_SENTRY) - include(FetchContent) - - # ignore debhelper - set(FETCHCONTENT_FULLY_DISCONNECTED Off) - - set(SENTRY_VERSION 0.6.6) - set(SENTRY_BACKEND "breakpad") - set(SENTRY_BUILD_SHARED_LIBS OFF) - - FetchContent_Declare( - sentry - URL https://github.com/getsentry/sentry-native/releases/download/${SENTRY_VERSION}/sentry-native.zip - URL_HASH SHA256=7a98467c0b2571380a3afc5e681cb13aa406a709529be12d74610b0015ccde0c - ) - FetchContent_MakeAvailable(sentry) -endif() - if(ENABLE_WEBRTC) include(FetchContent) + include(NetdataFetchContentExtra) # ignore debhelper set(FETCHCONTENT_FULLY_DISCONNECTED Off) @@ -175,6 +224,7 @@ if(ENABLE_WEBRTC) FetchContent_Declare(libdatachannel GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git GIT_TAG v0.20.1 + CMAKE_ARGS ${NETDATA_PROPAGATE_TOOLCHAIN_ARGS} ) FetchContent_MakeAvailable(libdatachannel) endif() @@ -187,66 +237,18 @@ if(NEED_PROTOBUF) endif() endif() -# -# handling of extra compiler flags -# - -include(NetdataCompilerFlags) - -# Disable hardening for debug builds by default. -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - option(DISABLE_HARDENING "disable adding extra compiler flags for hardening" TRUE) -else() - option(DISABLE_HARDENING "disable adding extra compiler flags for hardening" FALSE) -endif() - -set(EXTRA_HARDENING_C_FLAGS "") -set(EXTRA_HARDENING_CXX_FLAGS "") +set(PKG_FILES_PATH "${CMAKE_SOURCE_DIR}/packaging/cmake/pkg-files") -set(EXTRA_OPT_C_FLAGS "") -set(EXTRA_OPT_CXX_FLAGS "") - -if(NOT ${DISABLE_HARDENING}) - add_double_extra_compiler_flag("stack-protector" "-fstack-protector-strong" "-fstack-protector" EXTRA_HARDENING) - add_double_extra_compiler_flag("_FORTIFY_SOURCE" "-D_FORTIFY_SOURCE=3" "-D_FORTIFY_SOURCE=2" EXTRA_HARDENING) - add_simple_extra_compiler_flag("stack-clash-protection" "-fstack-clash-protection" EXTRA_HARDENING) - add_simple_extra_compiler_flag("-fcf-protection" "-fcf-protection=full" EXTRA_HARDENING) - add_simple_extra_compiler_flag("branch-protection" "-mbranch-protection=standard" EXTRA_HARDENING) -endif() - -foreach(FLAG function-sections data-sections) - add_simple_extra_compiler_flag("${FLAG}" "-f${FLAG}" EXTRA_OPT) -endforeach() - -add_simple_extra_compiler_flag("-Wbuiltin-macro-redefined" "-Wno-builtin-macro-redefined" EXTRA_OPT) - -foreach(RELTYP RELEASE DEBUG RELWITHDEBINFO MINSIZEREL) - foreach(L C CXX) - set(CMAKE_${L}_FLAGS_${RELTYP} "${CMAKE_${L}_FLAGS_${RELTYP}} ${EXTRA_HARDENING_C_FLAGS} ${EXTRA_OPT_C_FLAGS}") - endforeach() -endforeach() - -# -# detect OS -# - -set(LINUX False) -set(FREEBSD False) -set(MACOS False) +if(ENABLE_PLUGIN_EBPF) + include(NetdataLibBPF) + include(NetdataEBPFCORE) -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(MACOS True) - set(COMPILED_FOR_MACOS True) + if(NOT OS_LINUX) + message(FATAL_ERROR "The eBPF plugin is not supported on non-Linux systems") + endif() - find_library(IOKIT IOKit) - find_library(FOUNDATION Foundation) -elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") - set(FREEBSD True) - set(COMPILED_FOR_FREEBSD True) -else() - set(LINUX True) - set(COMPILED_FOR_LINUX True) - add_definitions(-D_GNU_SOURCE) + netdata_bundle_libbpf() + netdata_fetch_ebpf_co_re() endif() # @@ -264,24 +266,42 @@ if(NOT HAVE_LOG10) list(APPEND CMAKE_REQUIRED_LIBRARIES m) check_function_exists(log10 HAVE_LOG10) if(HAVE_LOG10) - set(LINK_LIBM True CACHE BOOL "" FORCE) + set(LINK_LIBM True) else() message(FATAL_ERROR "Can not use log10 with/without libm.") endif() endif() # -# Custom modules +# Custom Modules # +include(NetdataJSONC) include(NetdataYAML) +if(ENABLE_LEGACY_EBPF_PROGRAMS) + include(NetdataEBPFLegacy) +endif() + +if(ENABLE_SENTRY) + include(NetdataSentry) +endif() + # # Checks from custom modules # +netdata_detect_jsonc() netdata_detect_libyaml() +if(ENABLE_LEGACY_EBPF_PROGRAMS) + netdata_fetch_legacy_ebpf_code() +endif() + +if(ENABLE_SENTRY) + netdata_bundle_sentry() +endif() + # # check include files # @@ -301,15 +321,20 @@ check_include_file("sys/statvfs.h" HAVE_SYS_STATVFS_H) check_include_file("inttypes.h" HAVE_INTTYPES_H) check_include_file("stdint.h" HAVE_STDINT_H) check_include_file("sys/capability.h" HAVE_SYS_CAPABILITY_H) - -# -# check libraries we need -# - -include(CheckLibraryExists) - -check_library_exists(snappy snappy_compress "" HAVE_SNAPPY_LIB) -#check_include_file("snappy.h" HAVE_SNAPPY_H) +check_include_file("arpa/inet.h" HAVE_ARPA_INET_H) +check_include_file("netinet/tcp.h" HAVE_NETINET_TCP_H) +check_include_file("sys/ioctl.h" HAVE_SYS_IOCTL_H) +check_include_file("grp.h" HAVE_GRP_H) +check_include_file("pwd.h" HAVE_PWD_H) +check_include_file("net/if.h" HAVE_NET_IF_H) +check_include_file("poll.h" HAVE_POLL_H) +check_include_file("syslog.h" HAVE_SYSLOG_H) +check_include_file("sys/mman.h" HAVE_SYS_MMAN_H) +check_include_file("sys/resource.h" HAVE_SYS_RESOURCE_H) +check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H) +check_include_file("sys/wait.h" HAVE_SYS_WAIT_H) +check_include_file("sys/un.h" HAVE_SYS_UN_H) +check_include_file("spawn.h" HAVE_SPAWN_H) # # check symbols @@ -324,9 +349,15 @@ check_symbol_exists(finite "math.h" HAVE_FINITE) check_symbol_exists(isfinite "math.h" HAVE_ISFINITE) check_symbol_exists(dlsym "dlfcn.h" HAVE_DLSYM) +check_function_exists(pthread_getthreadid_np HAVE_PTHREAD_GETTHREADID_NP) +check_function_exists(pthread_threadid_np HAVE_PTHREAD_THREADID_NP) +check_function_exists(gettid HAVE_GETTID) +check_function_exists(waitid HAVE_WAITID) check_function_exists(nice HAVE_NICE) check_function_exists(recvmmsg HAVE_RECVMMSG) check_function_exists(getpriority HAVE_GETPRIORITY) +check_function_exists(setenv HAVE_SETENV) +check_function_exists(strndup HAVE_STRNDUP) check_function_exists(sched_getscheduler HAVE_SCHED_GETSCHEDULER) check_function_exists(sched_setscheduler HAVE_SCHED_SETSCHEDULER) @@ -408,9 +439,14 @@ int main() { " HAVE_BUILTIN_ATOMICS) check_c_source_compiles(" +void my_printf(char const *s, ...) __attribute__((format(gnu_printf, 1, 2))); +int main() { return 0; } +" HAVE_FUNC_ATTRIBUTE_FORMAT_GNU_PRINTF FAIL_REGEX "warning:") + +check_c_source_compiles(" void my_printf(char const *s, ...) __attribute__((format(printf, 1, 2))); int main() { return 0; } -" HAVE_FUNC_ATTRIBUTE_FORMAT) +" HAVE_FUNC_ATTRIBUTE_FORMAT_PRINTF FAIL_REGEX "warning:") check_c_source_compiles(" #include <stdio.h> @@ -473,16 +509,16 @@ int my_function() { } " HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT) -if(FREEBSD OR MACOS) +if(OS_FREEBSD OR OS_MACOS) set(HAVE_BUILTIN_ATOMICS True) endif() # openssl/crypto set(ENABLE_OPENSSL True) -pkg_check_modules(OPENSSL openssl) +pkg_check_modules(TLS IMPORTED_TARGET openssl) -if(NOT OPENSSL_FOUND) - if(MACOS) +if(NOT TARGET PkgConfig::TLS) + if(OS_MACOS) execute_process(COMMAND brew --prefix --installed openssl RESULT_VARIABLE BREW_OPENSSL @@ -493,16 +529,21 @@ if(NOT OPENSSL_FOUND) message(FATAL_ERROR "OpenSSL (or LibreSSL) is required for building Netdata, but could not be found.") endif() - set(OPENSSL_INCLUDE_DIRS "${BREW_OPENSSL_PREFIX}/include") - set(OPENSSL_CFLAGS_OTHER "") - set(OPENSSL_LDFLAGS "-L${BREW_OPENSSL_PREFIX}/lib;-lssl;-lcrypto") + add_library(PkgConfig::CRYPTO IMPORTED) + set_target_properties(PkgConfig::CRYPTO + IMPORTED_LOCATION ${BREW_OPENSSL_PREFIX}/lib/libcrypto.dylib + INTERFACE_INCLUDE_DIRECTORIES ${BREW_OPENSSL_PREFIX}/include) + + add_library(PkgConfig::TLS IMPORTED) + set_target_properties(PkgConfig::TLS + IMPORTED_LOCATION ${BREW_OPENSSL_PREFIX}/lib/libssl.dylib + INTERFACE_LINK_LIBRARIES PkgConfig::CRYPTO + INTERFACE_INCLUDE_DIRECTORIES ${BREW_OPENSSL_PREFIX}/include) else() message(FATAL_ERROR "OpenSSL (or LibreSSL) is required for building Netdata, but could not be found.") endif() -endif() - -if(NOT MACOS) - pkg_check_modules(CRYPTO libcrypto) +else() + pkg_check_modules(CRYPTO IMPORTED_TARGET REQUIRED libcrypto) endif() # @@ -608,10 +649,10 @@ set(LIBNETDATA_FILES src/libnetdata/log/journal.h src/libnetdata/log/log.c src/libnetdata/log/log.h - src/libnetdata/os.c - src/libnetdata/os.h + src/libnetdata/os/os.c + src/libnetdata/os/os.h src/libnetdata/simple_hashtable.h - src/libnetdata/byteorder.h + src/libnetdata/os/byteorder.h src/libnetdata/onewayalloc/onewayalloc.c src/libnetdata/onewayalloc/onewayalloc.h src/libnetdata/popen/popen.c @@ -665,14 +706,42 @@ set(LIBNETDATA_FILES src/libnetdata/dictionary/dictionary-callbacks.h src/libnetdata/linked-lists.h src/libnetdata/storage-point.h - src/libnetdata/bitmap.h + src/libnetdata/bitmap64.h + src/libnetdata/os/waitid.c + src/libnetdata/os/waitid.h + src/libnetdata/os/gettid.c + src/libnetdata/os/gettid.h + src/libnetdata/os/adjtimex.c + src/libnetdata/os/adjtimex.h + src/libnetdata/os/setresuid.c + src/libnetdata/os/setresuid.h + src/libnetdata/os/setresgid.c + src/libnetdata/os/setresgid.h + src/libnetdata/os/getgrouplist.c + src/libnetdata/os/getgrouplist.h + src/libnetdata/os/get_pid_max.c + src/libnetdata/os/get_pid_max.h + src/libnetdata/os/os-freebsd-wrappers.c + src/libnetdata/os/os-freebsd-wrappers.h + src/libnetdata/os/os-macos-wrappers.c + src/libnetdata/os/os-macos-wrappers.h + src/libnetdata/os/get_system_cpus.c + src/libnetdata/os/get_system_cpus.h + src/libnetdata/os/tinysleep.c + src/libnetdata/os/tinysleep.h + src/libnetdata/os/uuid_generate.c + src/libnetdata/os/uuid_generate.h + src/libnetdata/os/setenv.c + src/libnetdata/os/setenv.h + src/libnetdata/os/strndup.c + src/libnetdata/os/strndup.h ) if(ENABLE_PLUGIN_EBPF) - list(APPEND LIBNETDATA_FILES - src/libnetdata/ebpf/ebpf.c - src/libnetdata/ebpf/ebpf.h - ) + list(APPEND LIBNETDATA_FILES + src/libnetdata/ebpf/ebpf.c + src/libnetdata/ebpf/ebpf.h + ) endif() set(LIBH2O_FILES @@ -940,6 +1009,17 @@ else() ) endif() +set(INTERNAL_COLLECTORS_FILES + src/collectors/common-contexts/common-contexts.h + src/collectors/common-contexts/disk.io.h + src/collectors/common-contexts/system.io.h + src/collectors/common-contexts/system.processes.h + src/collectors/common-contexts/system.ram.h + src/collectors/common-contexts/mem.swap.h + src/collectors/common-contexts/mem.pgfaults.h + src/collectors/common-contexts/mem.available.h +) + set(PLUGINSD_PLUGIN_FILES src/collectors/plugins.d/plugins_d.c src/collectors/plugins.d/plugins_d.h @@ -1137,6 +1217,12 @@ set(ACLK_ALWAYS_BUILD src/aclk/aclk_util.h src/aclk/https_client.c src/aclk/https_client.h + src/aclk/mqtt_websockets/c-rbuf/cringbuffer.c + src/aclk/mqtt_websockets/c-rbuf/cringbuffer.h + src/aclk/mqtt_websockets/c-rbuf/cringbuffer_internal.h + src/aclk/mqtt_websockets/c_rhash/c_rhash.c + src/aclk/mqtt_websockets/c_rhash/c_rhash.h + src/aclk/mqtt_websockets/c_rhash/c_rhash_internal.h ) set(TIMEX_PLUGIN_FILES @@ -1181,6 +1267,25 @@ set(FREEBSD_PLUGIN_FILES src/collectors/proc.plugin/zfs_common.h ) +set(WINDOWS_PLUGIN_FILES + src/collectors/windows.plugin/windows_plugin.c + src/collectors/windows.plugin/windows_plugin.h + src/collectors/windows.plugin/GetSystemUptime.c + src/collectors/windows.plugin/GetSystemRAM.c + src/collectors/windows.plugin/GetSystemCPU.c + src/collectors/windows.plugin/perflib.c + src/collectors/windows.plugin/perflib.h + src/collectors/windows.plugin/perflib-rrd.c + src/collectors/windows.plugin/perflib-rrd.h + src/collectors/windows.plugin/perflib-names.c + src/collectors/windows.plugin/perflib-dump.c + src/collectors/windows.plugin/perflib-storage.c + src/collectors/windows.plugin/perflib-processor.c + src/collectors/windows.plugin/perflib-network.c + src/collectors/windows.plugin/perflib-memory.c + src/collectors/windows.plugin/perflib-processes.c +) + set(PROC_PLUGIN_FILES src/collectors/proc.plugin/ipc.c src/collectors/proc.plugin/plugin_proc.c @@ -1288,17 +1393,18 @@ set(NETDATA_FILES ${CLAIM_PLUGIN_FILES} ${SPAWN_PLUGIN_FILES} ${ACLK_ALWAYS_BUILD} - ${TIMEX_PLUGIN_FILES} ${PROFILE_PLUGIN_FILES} ) -if(LINUX) +if(OS_LINUX) list(APPEND NETDATA_FILES src/daemon/static_threads_linux.c ${CGROUPS_PLUGIN_FILES} ${DISKSPACE_PLUGIN_FILES} ${PROC_PLUGIN_FILES} ${TC_PLUGIN_FILES} + ${TIMEX_PLUGIN_FILES} + ${INTERNAL_COLLECTORS_FILES} ) if(ENABLE_SENTRY) @@ -1306,15 +1412,25 @@ if(LINUX) src/daemon/sentry-native/sentry-native.c src/daemon/sentry-native/sentry-native.h) endif() -elseif(MACOS) +elseif(OS_MACOS) list(APPEND NETDATA_FILES src/daemon/static_threads_macos.c ${MACOS_PLUGIN_FILES} + ${TIMEX_PLUGIN_FILES} + ${INTERNAL_COLLECTORS_FILES} ) -elseif(FREEBSD) +elseif(OS_FREEBSD) list(APPEND NETDATA_FILES src/daemon/static_threads_freebsd.c ${FREEBSD_PLUGIN_FILES} + ${TIMEX_PLUGIN_FILES} + ${INTERNAL_COLLECTORS_FILES} + ) +elseif(OS_WINDOWS) + list(APPEND NETDATA_FILES + src/daemon/static_threads_windows.c + ${WINDOWS_PLUGIN_FILES} + ${INTERNAL_COLLECTORS_FILES} ) endif() @@ -1330,12 +1446,6 @@ set(MQTT_WEBSOCKETS_FILES src/aclk/mqtt_websockets/common_public.c src/aclk/mqtt_websockets/common_public.h src/aclk/mqtt_websockets/common_internal.h - src/aclk/mqtt_websockets/c-rbuf/cringbuffer.c - src/aclk/mqtt_websockets/c-rbuf/cringbuffer.h - src/aclk/mqtt_websockets/c-rbuf/cringbuffer_internal.h - src/aclk/mqtt_websockets/c_rhash/c_rhash.c - src/aclk/mqtt_websockets/c_rhash/c_rhash.h - src/aclk/mqtt_websockets/c_rhash/c_rhash_internal.h ) set(ACLK_PROTO_DEFS @@ -1441,10 +1551,7 @@ if(ENABLE_H2O) ) target_compile_options(h2o PUBLIC -DH2O_USE_LIBUV=0) - - target_include_directories(h2o BEFORE PRIVATE ${OPENSSL_INCLUDE_DIRS}) - target_compile_options(h2o PRIVATE ${OPENSSL_CFLAGS_OTHER}) - target_link_libraries(h2o PRIVATE ${OPENSSL_LIBRARIES}) + target_link_libraries(h2o PRIVATE PkgConfig::TLS) endif() # @@ -1479,7 +1586,7 @@ set_source_files_properties(JudyLTables.c PROPERTIES COMPILE_OPTIONS "-I${CMAKE_ # build libnetdata # -if(LINUX) +if(OS_LINUX) include(NetdataDetectSystemd) detect_systemd() endif() @@ -1499,56 +1606,32 @@ target_include_directories(libnetdata BEFORE PUBLIC ${CONFIG_H_DIR} ${CMAKE_SOUR target_link_libraries(libnetdata PUBLIC "$<$<NOT:$<BOOL:${HAVE_BUILTIN_ATOMICS}>>:atomic>" - "$<$<OR:$<BOOL:${LINUX}>,$<BOOL:${FREEBSD}>>:pthread;rt>" + "$<$<OR:$<BOOL:${OS_LINUX}>,$<BOOL:${OS_FREEBSD}>>:pthread;rt>" + "$<$<BOOL:${OS_WINDOWS}>:kernel32;advapi32;winmm;rpcrt4>" "$<$<BOOL:${LINK_LIBM}>:m>" "${SYSTEMD_LDFLAGS}") # ebpf if(ENABLE_PLUGIN_EBPF) - target_link_libraries(libnetdata PUBLIC ${CMAKE_SOURCE_DIR}/externaldeps/libbpf/libbpf.a) - target_include_directories(libnetdata BEFORE PUBLIC - ${CMAKE_SOURCE_DIR}/externaldeps/libbpf/include - ${CMAKE_SOURCE_DIR}/externaldeps/libbpf/include/uapi - ) - - pkg_check_modules(ELF REQUIRED libelf) - target_include_directories(libnetdata BEFORE PUBLIC ${ELF_INCLUDE_DIRS}) - target_compile_options(libnetdata PUBLIC ${ELF_CFLAGS_OTHER}) - target_link_libraries(libnetdata PUBLIC ${ELF_LIBRARIES}) + netdata_add_libbpf_to_target(libnetdata) endif() # judy target_link_libraries(libnetdata PUBLIC judy) -# json-c -if(ENABLE_BUNDLED_JSONC) - add_library(jsonc STATIC IMPORTED) - set_property(TARGET jsonc PROPERTY - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/externaldeps/jsonc/libjson-c.a") - - target_include_directories(libnetdata BEFORE PUBLIC "${CMAKE_SOURCE_DIR}/externaldeps/jsonc") - target_link_libraries(libnetdata PUBLIC jsonc) -else() - pkg_check_modules(JSONC REQUIRED json-c) - target_include_directories(libnetdata BEFORE PUBLIC ${JSONC_INCLUDE_DIRS}) - target_compile_definitions(libnetdata PUBLIC ${JSONC_CFLAGS_OTHER}) - target_link_libraries(libnetdata PUBLIC ${JSONC_LDFLAGS}) -endif() - -# message(FATAL_ERROR "jsonc libraries: ${JSONC_LIBRARIES}") -# message(FATAL_ERROR "jsonc ldflags: ${JSONC_LDFLAGS}") +netdata_add_jsonc_to_target(libnetdata) netdata_add_libyaml_to_target(libnetdata) # zlib -if(MACOS) +if(OS_MACOS) find_package(ZLIB REQUIRED) target_include_directories(libnetdata BEFORE PUBLIC ${ZLIB_INCLUDE_DIRS}) target_link_libraries(libnetdata PUBLIC ZLIB::ZLIB) else() pkg_check_modules(ZLIB REQUIRED zlib) target_include_directories(libnetdata BEFORE PUBLIC ${ZLIB_INCLUDE_DIRS}) - target_compile_definitions(libnetdata PUBLIC ${ZLIB_CFLAGS_OTHER}) + target_compile_options(libnetdata PUBLIC ${ZLIB_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${ZLIB_LDFLAGS}) endif() @@ -1563,7 +1646,7 @@ else() endif() target_include_directories(libnetdata BEFORE PUBLIC ${LIBLZ4_INCLUDE_DIRS}) -target_compile_definitions(libnetdata PUBLIC ${LIBLZ4_CFLAGS_OTHER}) +target_compile_options(libnetdata PUBLIC ${LIBLZ4_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${LIBLZ4_LDFLAGS}) # zstd @@ -1571,7 +1654,7 @@ pkg_check_modules(LIBZSTD libzstd) if(LIBZSTD_FOUND) set(ENABLE_ZSTD On) target_include_directories(libnetdata BEFORE PUBLIC ${LIBZSTD_INCLUDE_DIRS}) - target_compile_definitions(libnetdata PUBLIC ${LIBZSTD_CFLAGS_OTHER}) + target_compile_options(libnetdata PUBLIC ${LIBZSTD_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${LIBZSTD_LDFLAGS}) endif() @@ -1580,39 +1663,35 @@ pkg_check_modules(LIBBROTLI libbrotlidec libbrotlienc libbrotlicommon) if(LIBBROTLI_FOUND) set(ENABLE_BROTLI On) target_include_directories(libnetdata PUBLIC ${LIBBROTLI_INCLUDE_DIRS}) - target_compile_definitions(libnetdata PUBLIC ${LIBBROTLI_CFLAGS_OTHER}) + target_compile_options(libnetdata PUBLIC ${LIBBROTLI_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${LIBBROTLI_LDFLAGS}) endif() # uuid -if(MACOS) +if(OS_MACOS OR OS_WINDOWS) # UUID functionality is part of the system libraries here, so no extra # stuff needed. else() pkg_check_modules(UUID REQUIRED uuid) target_include_directories(libnetdata BEFORE PUBLIC ${UUID_INCLUDE_DIRS}) - target_compile_definitions(libnetdata PUBLIC ${UUID_CFLAGS_OTHER}) + target_compile_options(libnetdata PUBLIC ${UUID_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${UUID_LDFLAGS}) endif() # uv pkg_check_modules(LIBUV REQUIRED libuv) target_include_directories(libnetdata BEFORE PUBLIC ${LIBUV_INCLUDE_DIRS}) -target_compile_definitions(libnetdata PUBLIC ${LIBUV_CFLAGS_OTHER}) +target_compile_options(libnetdata PUBLIC ${LIBUV_CFLAGS_OTHER}) target_link_libraries(libnetdata PUBLIC ${LIBUV_LDFLAGS}) # crypto -target_include_directories(libnetdata BEFORE PUBLIC ${CRYPTO_INCLUDE_DIRS}) -target_compile_options(libnetdata PUBLIC ${CRYPTO_CFLAGS_OTHER}) -target_link_libraries(libnetdata PUBLIC ${CRYPTO_LDFLAGS}) +target_link_libraries(libnetdata PUBLIC PkgConfig::CRYPTO) # openssl -target_include_directories(libnetdata BEFORE PUBLIC ${OPENSSL_INCLUDE_DIRS}) -target_compile_options(libnetdata PUBLIC ${OPENSSL_CFLAGS_OTHER}) -target_link_libraries(libnetdata PUBLIC ${OPENSSL_LDFLAGS}) +target_link_libraries(libnetdata PUBLIC PkgConfig::TLS) # mnl -if(NOT MACOS) +if(NOT OS_MACOS) pkg_check_modules(MNL libmnl) if(MNL_FOUND) set(HAVE_LIBMNL True) @@ -1627,12 +1706,6 @@ if (ENABLE_H2O OR ENABLE_ACLK) endif() if(ENABLE_MQTTWEBSOCKETS) - # include_directories(BEFORE - # ${CMAKE_SOURCE_DIR}/aclk/mqtt_websockets/src/include - # ${CMAKE_SOURCE_DIR}/aclk/mqtt_websockets/c-rbuf/include - # ${CMAKE_SOURCE_DIR}/aclk/mqtt_websockets/c_rhash/include - # ) - add_library(mqttwebsockets STATIC ${MQTT_WEBSOCKETS_FILES}) target_compile_options(mqttwebsockets PUBLIC -DMQTT_WSS_CUSTOM_ALLOC @@ -1680,8 +1753,15 @@ if(ENABLE_PLUGIN_DEBUGFS) target_compile_options(debugfs.plugin PRIVATE ${CAP_CFLAGS_OTHER}) install(TARGETS debugfs.plugin - COMPONENT debugfs_plugin + COMPONENT plugin-debugfs DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-debugfs + DESTINATION usr/share/doc/netdata-plugin-debugfs) + endif() endif() if(ENABLE_PLUGIN_APPS) @@ -1711,11 +1791,19 @@ if(ENABLE_PLUGIN_APPS) target_compile_options(apps.plugin PRIVATE ${CAP_CFLAGS_OTHER}) install(TARGETS apps.plugin - COMPONENT apps_plugin + COMPONENT plugin-apps DESTINATION usr/libexec/netdata/plugins.d) + install(FILES src/collectors/apps.plugin/apps_groups.conf - COMPONENT apps_plugin + COMPONENT plugin-apps DESTINATION usr/lib/netdata/conf.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-apps + DESTINATION usr/share/doc/netdata-plugin-apps) + endif() endif() if(CAP_FOUND) @@ -1733,8 +1821,15 @@ if(ENABLE_PLUGIN_FREEIPMI) target_compile_options(freeipmi.plugin PRIVATE ${IPMI_CFLAGS_OTHER}) install(TARGETS freeipmi.plugin - COMPONENT freeipmi_plugin + COMPONENT plugin-freeipmi DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-freeipmi + DESTINATION usr/share/doc/netdata-plugin-freeipmi) + endif() endif() if(ENABLE_PLUGIN_NFACCT) @@ -1752,8 +1847,15 @@ if(ENABLE_PLUGIN_NFACCT) target_compile_options(nfacct.plugin PRIVATE ${MNL_CFLAGS_OTHER} ${NFACCT_CFLAGS_OTHER}) install(TARGETS nfacct.plugin - COMPONENT nfacct_plugin + COMPONENT plugin-nfacct DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-nfacct + DESTINATION usr/share/doc/netdata-plugin-nfacct) + endif() endif() if(ENABLE_PLUGIN_XENSTAT) @@ -1768,8 +1870,15 @@ if(ENABLE_PLUGIN_XENSTAT) target_compile_options(xenstat.plugin PRIVATE ${XENLIGHT_CFLAGS_OTHER} ${XENSTAT_CFLAGS_OTHER}) install(TARGETS xenstat.plugin - COMPONENT xenstat_plugin + COMPONENT plugin-xenstat DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-xenstat + DESTINATION usr/share/doc/netdata-plugin-xenstat) + endif() endif() if(ENABLE_PLUGIN_PERF) @@ -1779,8 +1888,15 @@ if(ENABLE_PLUGIN_PERF) target_link_libraries(perf.plugin libnetdata) install(TARGETS perf.plugin - COMPONENT perf_plugin + COMPONENT plugin-perf DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-perf + DESTINATION usr/share/doc/netdata-plugin-perf) + endif() endif() if(ENABLE_PLUGIN_SLABINFO) @@ -1790,8 +1906,15 @@ if(ENABLE_PLUGIN_SLABINFO) target_link_libraries(slabinfo.plugin libnetdata) install(TARGETS slabinfo.plugin - COMPONENT slabinfo_plugin + COMPONENT plugin-slabinfo DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-slabinfo + DESTINATION usr/share/doc/netdata-plugin-slabinfo) + endif() endif() if(ENABLE_PLUGIN_LOGS_MANAGEMENT) @@ -1807,21 +1930,38 @@ if(ENABLE_PLUGIN_LOGS_MANAGEMENT) target_link_libraries(logs-management.plugin libnetdata) install(TARGETS logs-management.plugin - COMPONENT logs_management_plugin + COMPONENT plugin-logs-management DESTINATION usr/libexec/netdata/plugins.d) install(DIRECTORY src/logsmanagement/stock_conf/logsmanagement.d - COMPONENT logs_management_plugin + COMPONENT plugin-logs-management DESTINATION usr/lib/netdata/conf.d) - install(DIRECTORY DESTINATION etc/netdata/logsmanagement.d) + install(DIRECTORY + COMPONENT plugin-logs-management + DESTINATION etc/netdata/logsmanagement.d) + + configure_file(src/logsmanagement/stock_conf/logsmanagement.d.conf.in + src/logsmanagement/stock_conf/logsmanagement.d.conf + @ONLY) + + install(FILES ${CMAKE_BINARY_DIR}/src/logsmanagement/stock_conf/logsmanagement.d.conf + COMPONENT plugin-logs-management + DESTINATION usr/lib/netdata/conf.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-logs-management + DESTINATION usr/share/doc/netdata-plugin-logs-management) + endif() endif() if(ENABLE_PLUGIN_CUPS) pkg_check_modules(CUPS libcups) - if(NOT CUPS_LIBRARIES) + if(NOT CUPS_FOUND) pkg_check_modules(CUPS cups) - if(NOT CUPS_LIBRARIES) + if(NOT CUPS_FOUND) find_program(CUPS_CONFIG cups-config) if(CUPS_CONFIG) execute_process(COMMAND ${CUPS_CONFIG} --api-version OUTPUT_VARIABLE CUPS_API_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) @@ -1845,8 +1985,15 @@ if(ENABLE_PLUGIN_CUPS) target_compile_options(cups.plugin PRIVATE ${CUPS_CFLAGS_OTHER}) install(TARGETS cups.plugin - COMPONENT cups_plugin + COMPONENT plugin-cups DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-cups + DESTINATION usr/share/doc/netdata-plugin-cups) + endif() endif() endif() @@ -1855,7 +2002,7 @@ set(NDSUDO_FILES src/collectors/plugins.d/ndsudo.c) add_executable(ndsudo ${NDSUDO_FILES}) install(TARGETS ndsudo - COMPONENT ndsudo + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) if(ENABLE_PLUGIN_CGROUP_NETWORK) @@ -1865,17 +2012,28 @@ if(ENABLE_PLUGIN_CGROUP_NETWORK) target_link_libraries(cgroup-network libnetdata) install(TARGETS cgroup-network - COMPONENT cgroup_network_plugin + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) endif() if(ENABLE_PLUGIN_SYSTEMD_JOURNAL) + if(NOT SYSTEMD_FOUND) + message(FATAL_ERROR "Systemd journal plugin requires systemd, but systemd was not found.") + endif() + add_executable(systemd-journal.plugin ${SYSTEMD_JOURNAL_PLUGIN_FILES}) target_link_libraries(systemd-journal.plugin libnetdata) install(TARGETS systemd-journal.plugin - COMPONENT systemd_journal_plugin + COMPONENT plugin-systemd-journal DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-systemd-journal + DESTINATION usr/share/doc/netdata-plugin-systemd-journal) + endif() endif() if(ENABLE_PLUGIN_EBPF) @@ -1927,9 +2085,48 @@ if(ENABLE_PLUGIN_EBPF) add_executable(ebpf.plugin ${EBPF_PLUGIN_FILES}) target_link_libraries(ebpf.plugin libnetdata) + netdata_add_ebpf_co_re_to_target(ebpf.plugin) + install(TARGETS ebpf.plugin - COMPONENT ebpf_plugin + COMPONENT plugin-ebpf DESTINATION usr/libexec/netdata/plugins.d) + + install(FILES + src/collectors/ebpf.plugin/ebpf.d.conf + COMPONENT plugin-ebpf + DESTINATION usr/lib/netdata/conf.d) + + install(FILES + src/collectors/ebpf.plugin/ebpf.d/cachestat.conf + src/collectors/ebpf.plugin/ebpf.d/dcstat.conf + src/collectors/ebpf.plugin/ebpf.d/disk.conf + src/collectors/ebpf.plugin/ebpf.d/ebpf_kernel_reject_list.txt + src/collectors/ebpf.plugin/ebpf.d/fd.conf + src/collectors/ebpf.plugin/ebpf.d/filesystem.conf + src/collectors/ebpf.plugin/ebpf.d/hardirq.conf + src/collectors/ebpf.plugin/ebpf.d/mdflush.conf + src/collectors/ebpf.plugin/ebpf.d/mount.conf + src/collectors/ebpf.plugin/ebpf.d/network.conf + src/collectors/ebpf.plugin/ebpf.d/oomkill.conf + src/collectors/ebpf.plugin/ebpf.d/process.conf + src/collectors/ebpf.plugin/ebpf.d/shm.conf + src/collectors/ebpf.plugin/ebpf.d/softirq.conf + src/collectors/ebpf.plugin/ebpf.d/swap.conf + src/collectors/ebpf.plugin/ebpf.d/sync.conf + src/collectors/ebpf.plugin/ebpf.d/vfs.conf + COMPONENT plugin-ebpf + DESTINATION usr/lib/netdata/conf.d/ebpf.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-ebpf + DESTINATION usr/share/doc/netdata-plugin-ebpf) + endif() + + if(ENABLE_LEGACY_EBPF_PROGRAMS) + netdata_install_legacy_ebpf_code() + endif() endif() if(ENABLE_PLUGIN_LOCAL_LISTENERS) @@ -1948,7 +2145,7 @@ if(ENABLE_PLUGIN_LOCAL_LISTENERS) "$<$<BOOL:${MNL_FOUND}>:${MNL_LIBRARIES}>") install(TARGETS local-listeners - COMPONENT local_listeners + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) endif() @@ -1968,10 +2165,16 @@ if(ENABLE_PLUGIN_NETWORK_VIEWER) target_link_libraries(network-viewer.plugin libnetdata "$<$<BOOL:${MNL_FOUND}>:${MNL_LIBRARIES}>") - install(TARGETS network-viewer.plugin - COMPONENT network_viewer_plugin + COMPONENT plugin-network-viewer DESTINATION usr/libexec/netdata/plugins.d) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-network-viewer + DESTINATION usr/share/doc/netdata-plugin-network-viewer) + endif() endif() # @@ -1991,6 +2194,9 @@ endif() if(ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE) pkg_check_modules(SNAPPY snappy) if (NOT SNAPPY_FOUND) + include(CheckLibraryExists) + check_library_exists(snappy snappy_compress "" HAVE_SNAPPY_LIB) + if(HAVE_SNAPPY_LIB) set(SNAPPY_INCLUDE_DIRS "") set(SNAPPY_CFLAGS_OTHER "") @@ -2027,6 +2233,9 @@ add_executable(netdata target_compile_definitions(netdata PRIVATE "$<$<BOOL:${ENABLE_ML}>:DLIB_NO_GUI_SUPPORT>" +) + +target_compile_options(netdata PRIVATE "$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_CFLAGS_OTHER}>" "$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_CFLAGS_OTHER}>" ) @@ -2040,11 +2249,11 @@ target_include_directories(netdata PRIVATE target_link_libraries(netdata PRIVATE m libnetdata - "$<$<BOOL:${LINUX}>:rt>" + "$<$<BOOL:${OS_LINUX}>:rt>" "$<$<BOOL:${ENABLE_MQTTWEBSOCKETS}>:mqttwebsockets>" "$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_LIBRARIES}>" "$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_LIBRARIES}>" - "$<$<BOOL:${MACOS}>:${IOKIT};${FOUNDATION}>" + "$<$<BOOL:${OS_MACOS}>:${IOKIT};${FOUNDATION}>" "$<$<BOOL:${ENABLE_SENTRY}>:sentry>" "$<$<BOOL:${ENABLE_WEBRTC}>:LibDataChannel::LibDataChannelStatic>" "$<$<BOOL:${ENABLE_H2O}>:h2o>" @@ -2064,7 +2273,7 @@ add_executable(systemd-cat-native ${SYSTEMD_CAT_NATIVE_FILES}) target_link_libraries(systemd-cat-native libnetdata) install(TARGETS systemd-cat-native - COMPONENT systemd-cat-native + COMPONENT netdata DESTINATION usr/sbin) # @@ -2093,17 +2302,17 @@ if(PCRE2_FOUND) add_executable(log2journal ${LOG2JOURNAL_FILES}) target_include_directories(log2journal BEFORE PUBLIC ${CONFIG_H_DIR} ${CMAKE_SOURCE_DIR}/src ${PCRE2_INCLUDE_DIRS}) - target_compile_definitions(log2journal PUBLIC ${PCRE2_CFLAGS_OTHER}) + target_compile_options(log2journal PUBLIC ${PCRE2_CFLAGS_OTHER}) target_link_libraries(log2journal PUBLIC "${PCRE2_LDFLAGS}") netdata_add_libyaml_to_target(log2journal) install(TARGETS log2journal - COMPONENT log2journal + COMPONENT netdata DESTINATION usr/sbin) install(DIRECTORY src/collectors/log2journal/log2journal.d - COMPONENT log2journal + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) endif() @@ -2122,7 +2331,7 @@ add_executable(netdatacli ${NETDATACLI_FILES}) target_link_libraries(netdatacli libnetdata) install(TARGETS netdatacli - COMPONENT netdatacli + COMPONENT netdata DESTINATION usr/sbin) # @@ -2133,7 +2342,7 @@ if(ENABLE_PLUGIN_GO) add_go_target(go-plugin go.d.plugin src/go/collectors/go.d.plugin cmd/godplugin) install(PROGRAMS ${CMAKE_BINARY_DIR}/go.d.plugin - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/libexec/netdata/plugins.d) endif() @@ -2166,7 +2375,6 @@ set(CONFIGURE_COMMAND "dummy-configure-command") if (NOT NETDATA_USER) set(NETDATA_USER "netdata") endif() -set(VERSION "${GIT_DESCRIBE_OUTPUT}") configure_file(packaging/cmake/config.cmake.h.in config.h) @@ -2174,26 +2382,24 @@ configure_file(packaging/cmake/config.cmake.h.in config.h) # install # -install(TARGETS netdata DESTINATION usr/sbin) - -install(DIRECTORY DESTINATION var/cache/netdata) -install(DIRECTORY DESTINATION var/log/netdata) -install(DIRECTORY DESTINATION var/lib/netdata/registry) -install(DIRECTORY DESTINATION var/lib/netdata/cloud.d) -install(DIRECTORY DESTINATION var/run) -install(DIRECTORY DESTINATION etc/netdata) -install(DIRECTORY DESTINATION etc/netdata/charts.d) -install(DIRECTORY DESTINATION etc/netdata/custom-plugins.d) -install(DIRECTORY DESTINATION etc/netdata/ebpf.d) -install(DIRECTORY DESTINATION etc/netdata/go.d) -install(DIRECTORY DESTINATION etc/netdata/health.d) -install(DIRECTORY DESTINATION etc/netdata/python.d) -install(DIRECTORY DESTINATION etc/netdata/ssl) -install(DIRECTORY DESTINATION etc/netdata/statsd.d) -install(DIRECTORY DESTINATION usr/lib/netdata/conf.d) -install(DIRECTORY DESTINATION usr/lib/netdata/conf.d/schema.d) -install(DIRECTORY DESTINATION usr/libexec/netdata/plugins.d) -install(DIRECTORY DESTINATION ${WEB_DEST}) +install(TARGETS netdata COMPONENT netdata DESTINATION usr/sbin) + +install(DIRECTORY COMPONENT netdata DESTINATION var/cache/netdata) +install(DIRECTORY COMPONENT netdata DESTINATION var/log/netdata) +install(DIRECTORY COMPONENT netdata DESTINATION var/lib/netdata/registry) +install(DIRECTORY COMPONENT netdata DESTINATION var/lib/netdata/cloud.d) +install(DIRECTORY COMPONENT netdata DESTINATION var/run/netdata) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/custom-plugins.d) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/go.d) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/health.d) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/python.d) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/ssl) +install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/statsd.d) +install(DIRECTORY COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) +install(DIRECTORY COMPONENT netdata DESTINATION usr/lib/netdata/conf.d/schema.d) +install(DIRECTORY COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) +install(DIRECTORY COMPONENT netdata DESTINATION ${WEB_DEST}) set(libsysdir_POST "${CMAKE_INSTALL_PREFIX}/usr/lib/netdata/system") set(pkglibexecdir_POST "${CMAKE_INSTALL_PREFIX}/usr/libexec/netdata") @@ -2222,6 +2428,7 @@ endif() configure_file(src/claim/netdata-claim.sh.in src/claim/netdata-claim.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/claim/netdata-claim.sh + COMPONENT netdata DESTINATION usr/sbin) # @@ -2232,13 +2439,14 @@ configure_file(src/collectors/cgroups.plugin/cgroup-network-helper.sh.in src/collectors/cgroups.plugin/cgroup-network-helper.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/cgroups.plugin/cgroup-network-helper.sh - COMPONENT cgroup_network_plugin + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) configure_file(src/collectors/cgroups.plugin/cgroup-name.sh.in src/collectors/cgroups.plugin/cgroup-name.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/cgroups.plugin/cgroup-name.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) # @@ -2248,6 +2456,7 @@ install(FILES src/collectors/statsd.plugin/asterisk.conf src/collectors/statsd.plugin/example.conf src/collectors/statsd.plugin/k6.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d/statsd.d) # @@ -2255,6 +2464,7 @@ install(FILES # install(FILES src/exporting/exporting.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) # @@ -2262,6 +2472,7 @@ install(FILES # install(FILES src/collectors/ioping.plugin/ioping.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) # @@ -2269,6 +2480,7 @@ install(FILES # install(FILES src/streaming/stream.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) # @@ -2277,6 +2489,7 @@ install(FILES install(FILES src/web/api/netdata-swagger.json src/web/api/netdata-swagger.yaml + COMPONENT netdata DESTINATION ${WEB_DEST}) # @@ -2286,105 +2499,194 @@ install(FILES configure_file(system/install-service.sh.in system/install-service.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/install-service.sh + COMPONENT netdata DESTINATION usr/libexec/netdata) configure_file(system/cron/netdata-updater-daily.in system/cron/netdata-updater-daily @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/cron/netdata-updater-daily + COMPONENT netdata DESTINATION usr/lib/netdata/system/cron) configure_file(system/launchd/netdata.plist.in system/launchd/netdata.plist @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/launchd/netdata.plist + COMPONENT netdata DESTINATION usr/lib/netdata/system/launchd) configure_file(system/freebsd/rc.d/netdata.in system/freebsd/rc.d/netdata @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/freebsd/rc.d/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/freebsd/rc.d) configure_file(system/initd/init.d/netdata.in system/initd/init.d/netdata @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/initd/init.d/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/initd/init.d) configure_file(system/logrotate/netdata.in system/logrotate/netdata @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/logrotate/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/logrotate) +install(FILES + ${CMAKE_BINARY_DIR}/system/logrotate/netdata + COMPONENT netdata + DESTINATION etc/logrotate.d) configure_file(system/lsb/init.d/netdata.in system/lsb/init.d/netdata @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/lsb/init.d/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/lsb/init.d) configure_file(system/openrc/conf.d/netdata.in system/openrc/conf.d/netdata @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/openrc/conf.d/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/openrc/conf.d) configure_file(system/openrc/init.d/netdata.in system/openrc/init.d/netdata @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/openrc/init.d/netdata + COMPONENT netdata DESTINATION usr/lib/netdata/system/openrc/init.d) configure_file(system/runit/run.in system/runit/run @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/system/runit/run + COMPONENT netdata DESTINATION usr/lib/netdata/system/runit) +configure_file(system/dinit/netdata.in system/dinit/netdata @ONLY) +install(FILES + ${CMAKE_BINARY_DIR}/system/dinit/netdata + COMPONENT netdata + DESTINATION usr/lib/netdata/system/dinit) + configure_file(system/systemd/netdata.service.in system/systemd/netdata.service @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/systemd/netdata.service + COMPONENT netdata + DESTINATION usr/lib/netdata/system/systemd) + +install(FILES + system/systemd/journald@netdata.conf + COMPONENT netdata DESTINATION usr/lib/netdata/system/systemd) configure_file(system/systemd/netdata.service.v235.in system/systemd/netdata.service.v235 @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/systemd/netdata.service.v235 + COMPONENT netdata DESTINATION usr/lib/netdata/system/systemd) configure_file(system/systemd/netdata-updater.service.in system/systemd/netdata-updater.service @ONLY) install(FILES ${CMAKE_BINARY_DIR}/system/systemd/netdata-updater.service + COMPONENT netdata DESTINATION usr/lib/netdata/system/systemd) install(FILES system/systemd/netdata-updater.timer + COMPONENT netdata DESTINATION usr/lib/netdata/system/systemd) + +if(BUILD_FOR_PACKAGING) + install(FILES + ${CMAKE_BINARY_DIR}/system/systemd/netdata.service + COMPONENT netdata + DESTINATION lib/systemd/system) + install(FILES + ${CMAKE_BINARY_DIR}/system/systemd/netdata-updater.service + COMPONENT netdata + DESTINATION lib/systemd/system) + install(FILES + system/systemd/netdata-updater.timer + COMPONENT netdata + DESTINATION lib/systemd/system) + install(DIRECTORY + COMPONENT netdata + DESTINATION usr/lib/systemd/journald@netdata.conf.d) + install(FILES + system/systemd/journald@netdata.conf + COMPONENT netdata + DESTINATION usr/lib/systemd/journald@netdata.conf.d + RENAME netdata.conf) +endif() + install(FILES system/systemd/50-netdata.preset + COMPONENT netdata DESTINATION usr/lib/netdata/system/systemd) install(FILES system/vnodes/vnodes.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d/vnodes) install(FILES system/.install-type - DESTINATION etc/netdata) -install(FILES - system/netdata-updater.conf + COMPONENT netdata DESTINATION etc/netdata) install(PROGRAMS system/edit-config + COMPONENT netdata DESTINATION etc/netdata) +if(BUILD_FOR_PACKAGING) + set(NETDATA_CONF_DEST "etc/netdata") +else() + set(NETDATA_CONF_DEST "usr/lib/netdata/conf.d") +endif() + +install(FILES + system/netdata.conf + system/netdata-updater.conf + COMPONENT netdata + DESTINATION ${NETDATA_CONF_DEST}) + +# +# misc files +# +if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/deb/netdata/etc/default/netdata + COMPONENT netdata + DESTINATION etc/default) + + install(PROGRAMS + ${PKG_FILES_PATH}/deb/netdata/etc/init.d/netdata + COMPONENT netdata + DESTINATION etc/init.d) +endif() + +install(PROGRAMS + packaging/installer/netdata-updater.sh + COMPONENT netdata + DESTINATION usr/libexec/netdata) + # # TODO: check the following files for correct substitutions # configure_file(src/daemon/anonymous-statistics.sh.in src/daemon/anonymous-statistics.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/daemon/anonymous-statistics.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) configure_file(src/daemon/get-kubernetes-labels.sh.in src/daemon/get-kubernetes-labels.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/daemon/get-kubernetes-labels.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) install(PROGRAMS src/daemon/system-info.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) # @@ -2394,21 +2696,25 @@ install(PROGRAMS file(GLOB_RECURSE HEALTH_CONF_FILES "src/health/health.d/*.conf") install(FILES ${HEALTH_CONF_FILES} + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d/health.d) configure_file(src/health/notifications/alarm-notify.sh.in src/health/notifications/alarm-notify.sh @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/health/notifications/alarm-notify.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) install(PROGRAMS src/health/notifications/alarm-email.sh src/health/notifications/alarm-test.sh + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) install(FILES src/health/notifications/health_alarm_notify.conf src/health/notifications/health_email_recipients.conf + COMPONENT netdata DESTINATION usr/lib/netdata/conf.d) # # test/ files @@ -2431,45 +2737,43 @@ install(FILES DESTINATION usr/libexec/netdata/plugins.d) # -# charts.d files +# charts.d plugin # +install(DIRECTORY COMPONENT plugin-chartsd DESTINATION etc/netdata/charts.d) + configure_file(src/collectors/charts.d.plugin/charts.d.plugin.in src/collectors/charts.d.plugin/charts.d.plugin @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/charts.d.plugin/charts.d.plugin + COMPONENT plugin-chartsd DESTINATION usr/libexec/netdata/plugins.d) -install(FILES +install(PROGRAMS src/collectors/charts.d.plugin/charts.d.dryrun-helper.sh + COMPONENT plugin-chartsd + DESTINATION usr/libexec/netdata/plugins.d) + +# loopsleepms is used by the tc.plugin -> ship it in the netdata component +install(FILES src/collectors/charts.d.plugin/loopsleepms.sh.inc + COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d) install(FILES src/collectors/charts.d.plugin/charts.d.conf + COMPONENT plugin-chartsd DESTINATION usr/lib/netdata/conf.d) -# -# tc-qos-helper -# - -configure_file(src/collectors/tc.plugin/tc-qos-helper.sh.in src/collectors/tc.plugin/tc-qos-helper.sh @ONLY) install(PROGRAMS - ${CMAKE_BINARY_DIR}/src/collectors/tc.plugin/tc-qos-helper.sh - DESTINATION usr/libexec/netdata/plugins.d) - -# scripts - -install(FILES src/collectors/charts.d.plugin/ap/ap.chart.sh src/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh src/collectors/charts.d.plugin/example/example.chart.sh src/collectors/charts.d.plugin/libreswan/libreswan.chart.sh src/collectors/charts.d.plugin/opensips/opensips.chart.sh src/collectors/charts.d.plugin/sensors/sensors.chart.sh + COMPONENT plugin-chartsd DESTINATION usr/libexec/netdata/charts.d) -# confs - install(FILES src/collectors/charts.d.plugin/ap/ap.conf src/collectors/charts.d.plugin/apcupsd/apcupsd.conf @@ -2477,82 +2781,66 @@ install(FILES src/collectors/charts.d.plugin/libreswan/libreswan.conf src/collectors/charts.d.plugin/opensips/opensips.conf src/collectors/charts.d.plugin/sensors/sensors.conf + COMPONENT plugin-chartsd DESTINATION usr/lib/netdata/conf.d/charts.d) -install(FILES - src/collectors/systemd-journal.plugin/schema.d/systemd-journal:monitored-directories.json - src/health/schema.d/health:alert:prototype.json - DESTINATION usr/lib/netdata/conf.d/schema.d) +if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-chartsd + DESTINATION usr/share/doc/netdata-plugin-chartsd) +endif() # -# ebpf files +# tc-qos-helper # -if(ENABLE_PLUGIN_EBPF) - install(FILES - src/collectors/ebpf.plugin/ebpf.d.conf - DESTINATION usr/lib/netdata/conf.d) +configure_file(src/collectors/tc.plugin/tc-qos-helper.sh.in src/collectors/tc.plugin/tc-qos-helper.sh @ONLY) +install(PROGRAMS + ${CMAKE_BINARY_DIR}/src/collectors/tc.plugin/tc-qos-helper.sh + COMPONENT netdata + DESTINATION usr/libexec/netdata/plugins.d) - install(FILES - src/collectors/ebpf.plugin/ebpf.d/cachestat.conf - src/collectors/ebpf.plugin/ebpf.d/dcstat.conf - src/collectors/ebpf.plugin/ebpf.d/disk.conf - src/collectors/ebpf.plugin/ebpf.d/ebpf_kernel_reject_list.txt - src/collectors/ebpf.plugin/ebpf.d/fd.conf - src/collectors/ebpf.plugin/ebpf.d/filesystem.conf - src/collectors/ebpf.plugin/ebpf.d/hardirq.conf - src/collectors/ebpf.plugin/ebpf.d/mdflush.conf - src/collectors/ebpf.plugin/ebpf.d/mount.conf - src/collectors/ebpf.plugin/ebpf.d/network.conf - src/collectors/ebpf.plugin/ebpf.d/oomkill.conf - src/collectors/ebpf.plugin/ebpf.d/process.conf - src/collectors/ebpf.plugin/ebpf.d/shm.conf - src/collectors/ebpf.plugin/ebpf.d/softirq.conf - src/collectors/ebpf.plugin/ebpf.d/swap.conf - src/collectors/ebpf.plugin/ebpf.d/sync.conf - src/collectors/ebpf.plugin/ebpf.d/vfs.conf - DESTINATION usr/lib/netdata/conf.d/ebpf.d) -endif() - -# -# python.d files +# confs +install(FILES + src/collectors/systemd-journal.plugin/schema.d/systemd-journal%3Amonitored-directories.json + src/health/schema.d/health%3Aalert%3Aprototype.json + COMPONENT netdata + DESTINATION usr/lib/netdata/conf.d/schema.d) + +# +# python.d plugin # configure_file(src/collectors/python.d.plugin/python.d.plugin.in src/collectors/python.d.plugin/python.d.plugin @ONLY) install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/python.d.plugin/python.d.plugin + COMPONENT plugin-pythond DESTINATION usr/libexec/netdata/plugins.d) install(DIRECTORY src/collectors/python.d.plugin/python_modules + COMPONENT plugin-pythond DESTINATION usr/libexec/netdata/python.d) install(FILES src/collectors/python.d.plugin/python.d.conf + COMPONENT plugin-pythond DESTINATION usr/lib/netdata/conf.d) -# conf files - install(FILES - src/collectors/python.d.plugin/adaptec_raid/adaptec_raid.conf src/collectors/python.d.plugin/alarms/alarms.conf src/collectors/python.d.plugin/am2320/am2320.conf src/collectors/python.d.plugin/anomalies/anomalies.conf src/collectors/python.d.plugin/beanstalk/beanstalk.conf - src/collectors/python.d.plugin/bind_rndc/bind_rndc.conf src/collectors/python.d.plugin/boinc/boinc.conf src/collectors/python.d.plugin/ceph/ceph.conf src/collectors/python.d.plugin/changefinder/changefinder.conf src/collectors/python.d.plugin/dovecot/dovecot.conf src/collectors/python.d.plugin/example/example.conf src/collectors/python.d.plugin/exim/exim.conf - src/collectors/python.d.plugin/fail2ban/fail2ban.conf src/collectors/python.d.plugin/gearman/gearman.conf src/collectors/python.d.plugin/go_expvar/go_expvar.conf src/collectors/python.d.plugin/haproxy/haproxy.conf - src/collectors/python.d.plugin/hddtemp/hddtemp.conf - src/collectors/python.d.plugin/hpssa/hpssa.conf src/collectors/python.d.plugin/icecast/icecast.conf src/collectors/python.d.plugin/ipfs/ipfs.conf - src/collectors/python.d.plugin/litespeed/litespeed.conf - src/collectors/python.d.plugin/megacli/megacli.conf src/collectors/python.d.plugin/memcached/memcached.conf src/collectors/python.d.plugin/monit/monit.conf src/collectors/python.d.plugin/nsd/nsd.conf @@ -2566,8 +2854,6 @@ install(FILES src/collectors/python.d.plugin/retroshare/retroshare.conf src/collectors/python.d.plugin/riakkv/riakkv.conf src/collectors/python.d.plugin/samba/samba.conf - src/collectors/python.d.plugin/sensors/sensors.conf - src/collectors/python.d.plugin/smartd_log/smartd_log.conf src/collectors/python.d.plugin/spigotmc/spigotmc.conf src/collectors/python.d.plugin/squid/squid.conf src/collectors/python.d.plugin/tomcat/tomcat.conf @@ -2577,33 +2863,25 @@ install(FILES src/collectors/python.d.plugin/varnish/varnish.conf src/collectors/python.d.plugin/w1sensor/w1sensor.conf src/collectors/python.d.plugin/zscores/zscores.conf + COMPONENT plugin-pythond DESTINATION usr/lib/netdata/conf.d/python.d) -# scripts - install(FILES - src/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py src/collectors/python.d.plugin/alarms/alarms.chart.py src/collectors/python.d.plugin/am2320/am2320.chart.py src/collectors/python.d.plugin/anomalies/anomalies.chart.py src/collectors/python.d.plugin/beanstalk/beanstalk.chart.py - src/collectors/python.d.plugin/bind_rndc/bind_rndc.chart.py src/collectors/python.d.plugin/boinc/boinc.chart.py src/collectors/python.d.plugin/ceph/ceph.chart.py src/collectors/python.d.plugin/changefinder/changefinder.chart.py src/collectors/python.d.plugin/dovecot/dovecot.chart.py src/collectors/python.d.plugin/example/example.chart.py src/collectors/python.d.plugin/exim/exim.chart.py - src/collectors/python.d.plugin/fail2ban/fail2ban.chart.py src/collectors/python.d.plugin/gearman/gearman.chart.py src/collectors/python.d.plugin/go_expvar/go_expvar.chart.py src/collectors/python.d.plugin/haproxy/haproxy.chart.py - src/collectors/python.d.plugin/hddtemp/hddtemp.chart.py - src/collectors/python.d.plugin/hpssa/hpssa.chart.py src/collectors/python.d.plugin/icecast/icecast.chart.py src/collectors/python.d.plugin/ipfs/ipfs.chart.py - src/collectors/python.d.plugin/litespeed/litespeed.chart.py - src/collectors/python.d.plugin/megacli/megacli.chart.py src/collectors/python.d.plugin/memcached/memcached.chart.py src/collectors/python.d.plugin/monit/monit.chart.py src/collectors/python.d.plugin/nsd/nsd.chart.py @@ -2617,8 +2895,6 @@ install(FILES src/collectors/python.d.plugin/retroshare/retroshare.chart.py src/collectors/python.d.plugin/riakkv/riakkv.chart.py src/collectors/python.d.plugin/samba/samba.chart.py - src/collectors/python.d.plugin/sensors/sensors.chart.py - src/collectors/python.d.plugin/smartd_log/smartd_log.chart.py src/collectors/python.d.plugin/spigotmc/spigotmc.chart.py src/collectors/python.d.plugin/squid/squid.chart.py src/collectors/python.d.plugin/tomcat/tomcat.chart.py @@ -2628,45 +2904,55 @@ install(FILES src/collectors/python.d.plugin/varnish/varnish.chart.py src/collectors/python.d.plugin/w1sensor/w1sensor.chart.py src/collectors/python.d.plugin/zscores/zscores.chart.py + COMPONENT plugin-pythond DESTINATION usr/libexec/netdata/python.d) -# FIXME: don't install this unconditionally -configure_file(src/collectors/ioping.plugin/ioping.plugin.in src/collectors/ioping.plugin/ioping.plugin @ONLY) -install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/ioping.plugin/ioping.plugin DESTINATION usr/libexec/netdata/plugins.d) +if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-pythond + DESTINATION usr/share/doc/netdata-plugin-pythond) +endif() # -# logs management +# ioping.plugin # -if (ENABLE_PLUGIN_LOGS_MANAGEMENT) - configure_file(src/logsmanagement/stock_conf/logsmanagement.d.conf.in src/logsmanagement/stock_conf/logsmanagement.d.conf @ONLY) - install(FILES ${CMAKE_BINARY_DIR}/src/logsmanagement/stock_conf/logsmanagement.d.conf - COMPONENT logs_management_plugin - DESTINATION usr/lib/netdata/conf.d) -endif() + +configure_file(src/collectors/ioping.plugin/ioping.plugin.in src/collectors/ioping.plugin/ioping.plugin @ONLY) +install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/ioping.plugin/ioping.plugin + COMPONENT netdata + DESTINATION usr/libexec/netdata/plugins.d) # # go.d.plugin # if(ENABLE_PLUGIN_GO) install(FILES src/go/collectors/go.d.plugin/config/go.d.conf - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/lib/netdata/conf.d) install(DIRECTORY - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/lib/netdata/conf.d/go.d) file(GLOB GO_CONF_FILES src/go/collectors/go.d.plugin/config/go.d/*.conf) install(FILES ${GO_CONF_FILES} - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/lib/netdata/conf.d/go.d) install(DIRECTORY - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/lib/netdata/conf.d/go.d/sd) file(GLOB GO_SD_CONF_FILES src/go/collectors/go.d.plugin/config/go.d/sd/*.conf) install(FILES ${GO_SD_CONF_FILES} - COMPONENT go.d.plugin + COMPONENT plugin-go DESTINATION usr/lib/netdata/conf.d/go.d/sd) + + if(BUILD_FOR_PACKAGING) + install(FILES + ${PKG_FILES_PATH}/copyright + COMPONENT plugin-go + DESTINATION usr/share/doc/netdata-plugin-go) + endif() endif() # @@ -2691,6 +2977,7 @@ configure_file(${CMAKE_BINARY_DIR}/dashboard.js.in install(FILES ${CMAKE_BINARY_DIR}/dashboard.js + COMPONENT netdata DESTINATION ${WEB_DEST}) install(FILES @@ -2704,26 +2991,36 @@ install(FILES src/web/gui/registry-hello.html src/web/gui/switch.html src/web/gui/ilove.html + COMPONENT netdata DESTINATION ${WEB_DEST}) install(FILES src/web/gui/old/index.html + COMPONENT netdata DESTINATION ${WEB_DEST}/old) install(FILES src/web/gui/static/img/netdata-logomark.svg + COMPONENT netdata DESTINATION ${WEB_DEST}/static/img) install(FILES src/web/gui/css/morris-0.5.1.css src/web/gui/css/c3-0.4.18.min.css + COMPONENT netdata DESTINATION ${WEB_DEST}/css) install(FILES src/web/gui/.well-known/dnt/cookies + COMPONENT netdata DESTINATION ${WEB_DEST}/.well-known/dnt) -# v0 dashboard -install(FILES - src/web/gui/v0/index.html - DESTINATION ${WEB_DEST}/v0) +if(NOT OS_WINDOWS) + # v0 dashboard + install(FILES + src/web/gui/v0/index.html + COMPONENT netdata + DESTINATION ${WEB_DEST}/v0) +endif() + +include(Packaging) |