summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt101
1 files changed, 30 insertions, 71 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c90e10a966..d72320bc4c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,6 +128,12 @@ option(ENABLE_LOGS_MANAGEMENT_TESTS "enable logs management tests" True)
option(ENABLE_SENTRY "enable sentry" False)
option(ENABLE_WEBRTC "enable webrtc" False)
+if(ENABLE_ACLK OR ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE)
+ set(NEED_PROTOBUF True)
+else()
+ set(NEED_PROTOBUF False)
+endif()
+
if(ENABLE_PLUGIN_GO)
include(NetdataGoTools)
@@ -173,6 +179,14 @@ if(ENABLE_WEBRTC)
FetchContent_MakeAvailable(libdatachannel)
endif()
+if(NEED_PROTOBUF)
+ include(NetdataProtobuf)
+
+ if(ENABLE_BUNDLED_PROTOBUF)
+ netdata_bundle_protobuf()
+ endif()
+endif()
+
#
# handling of extra compiler flags
#
@@ -491,24 +505,8 @@ endif()
# figure out if we need protoc/protobuf
#
-if(ENABLE_ACLK OR ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE)
- if(ENABLE_BUNDLED_PROTOBUF)
- set(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_SOURCE_DIR}/externaldeps/protobuf/src/protoc")
- set(PROTOBUF_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/externaldeps/protobuf/src")
- set(PROTOBUF_LIBRARIES "${CMAKE_SOURCE_DIR}/externaldeps/protobuf/src/.libs/libprotobuf.a")
- else()
- if (NOT BUILD_SHARED_LIBS)
- set(Protobuf_USE_STATIC_LIBS On)
- endif()
-
- find_package(Protobuf REQUIRED)
- endif()
-
- set(ENABLE_PROTOBUF True)
- set(HAVE_PROTOBUF True)
- if (ENABLE_BUNDLED_PROTOBUF)
- set(BUNDLED_PROTOBUF True)
- endif()
+if(NEED_PROTOBUF)
+ netdata_detect_protobuf()
endif()
#
@@ -1610,46 +1608,6 @@ if(MNL_FOUND)
endif()
#
-# helper function to build protos
-#
-
-function(protoc_generate_cpp INC_DIR OUT_DIR SRCS HDRS)
- if(NOT ARGN)
- message(SEND_ERROR "Error: protoc_generate_cpp() called without any proto files")
- return()
- endif()
-
- set(${INC_DIR})
- set(${OUT_DIR})
- set(${SRCS})
- set(${HDRS})
-
- foreach(FIL ${ARGN})
- get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
- get_filename_component(DIR ${ABS_FIL} DIRECTORY)
- get_filename_component(FIL_WE ${FIL} NAME_WE)
-
- set(GENERATED_PB_CC "${DIR}/${FIL_WE}.pb.cc")
- list(APPEND ${SRCS} ${GENERATED_PB_CC})
-
- set(GENERATED_PB_H "${DIR}/${FIL_WE}.pb.h")
- list(APPEND ${HDRS} ${GENERATED_PB_H})
-
- add_custom_command(OUTPUT ${GENERATED_PB_CC} ${GENERATED_PB_H}
- COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} ARGS -I=${INC_DIR} --cpp_out=${OUT_DIR} ${ABS_FIL}
- DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_EXECUTABLE}
- COMMENT "Running C++ protocol buffer compiler on ${FIL}"
- VERBATIM)
- endforeach()
-
- set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
- set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES COMPILE_OPTIONS -Wno-deprecated-declarations)
-
- set(${SRCS} ${${SRCS}} PARENT_SCOPE)
- set(${HDRS} ${${HDRS}} PARENT_SCOPE)
-endfunction()
-
-#
# mqtt library
#
if (ENABLE_H2O OR ENABLE_ACLK)
@@ -1680,11 +1638,11 @@ if(ENABLE_ACLK)
#
# proto definitions
#
- protoc_generate_cpp("${CMAKE_SOURCE_DIR}/src/aclk/aclk-schemas"
- "${CMAKE_SOURCE_DIR}/src/aclk/aclk-schemas"
- ACLK_PROTO_BUILT_SRCS
- ACLK_PROTO_BUILT_HDRS
- ${ACLK_PROTO_DEFS})
+ netdata_protoc_generate_cpp("${CMAKE_SOURCE_DIR}/src/aclk/aclk-schemas"
+ "${CMAKE_SOURCE_DIR}/src/aclk/aclk-schemas"
+ ACLK_PROTO_BUILT_SRCS
+ ACLK_PROTO_BUILT_HDRS
+ ${ACLK_PROTO_DEFS})
list(APPEND ACLK_FILES ${ACLK_PROTO_BUILT_SRCS}
${ACLK_PROTO_BUILT_HDRS})
@@ -2030,11 +1988,11 @@ if(ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE)
endif()
endif()
- protoc_generate_cpp("${CMAKE_SOURCE_DIR}/src/exporting/prometheus/remote_write"
- "${CMAKE_SOURCE_DIR}/src/exporting/prometheus/remote_write"
- PROMETHEUS_REMOTE_WRITE_BUILT_SRCS
- PROMETHEUS_REMOTE_WRITE_BUILT_HDRS
- "src/exporting/prometheus/remote_write/remote_write.proto")
+ netdata_protoc_generate_cpp("${CMAKE_SOURCE_DIR}/src/exporting/prometheus/remote_write"
+ "${CMAKE_SOURCE_DIR}/src/exporting/prometheus/remote_write"
+ PROMETHEUS_REMOTE_WRITE_BUILT_SRCS
+ PROMETHEUS_REMOTE_WRITE_BUILT_HDRS
+ "src/exporting/prometheus/remote_write/remote_write.proto")
list(APPEND PROMETHEUS_REMOTE_WRITE_EXPORTING_FILES
${PROMETHEUS_REMOTE_WRITE_BUILT_SRCS}
@@ -2056,14 +2014,12 @@ add_executable(netdata
)
target_compile_definitions(netdata PRIVATE
- "$<$<BOOL:${ENABLE_PROTOBUF}>:${PROTOBUF_CFLAGS_OTHER}>"
"$<$<BOOL:${ENABLE_ML}>:DLIB_NO_GUI_SUPPORT>"
"$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_CFLAGS_OTHER}>"
"$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_CFLAGS_OTHER}>"
)
target_include_directories(netdata PRIVATE
- "$<$<BOOL:${ENABLE_PROTOBUF}>:${PROTOBUF_INCLUDE_DIRS}>"
"$<$<BOOL:${ENABLE_ACLK}>:${CMAKE_SOURCE_DIR}/src/aclk/aclk-schemas>"
"$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_INCLUDE_DIRS}>"
"$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_INCLUDE_DIRS}>"
@@ -2074,7 +2030,6 @@ target_link_libraries(netdata PRIVATE
libnetdata
"$<$<BOOL:${LINUX}>:rt>"
"$<$<BOOL:${ENABLE_MQTTWEBSOCKETS}>:mqttwebsockets>"
- "$<$<BOOL:${ENABLE_PROTOBUF}>:${PROTOBUF_LIBRARIES}>"
"$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_LIBRARIES}>"
"$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_LIBRARIES}>"
"$<$<BOOL:${MACOS}>:${IOKIT};${FOUNDATION}>"
@@ -2083,6 +2038,10 @@ target_link_libraries(netdata PRIVATE
"$<$<BOOL:${ENABLE_H2O}>:h2o>"
)
+if(NEED_PROTOBUF)
+ netdata_add_protobuf(netdata)
+endif()
+
#
# build systemd-cat-native
#