summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVladimir Kobal <vlad@prokk.net>2019-05-13 15:45:34 +0300
committerChris Akritidis <43294513+cakrit@users.noreply.github.com>2019-05-13 14:45:34 +0200
commit198c7fa3e34c71bc075bcfb067da80242e74bddf (patch)
tree906a580bf1658a09f67836dbff5f93cced079382 /CMakeLists.txt
parent51decad9896131ed478681d90886d63bbd953b14 (diff)
Add AWS Kinesis backend (#5914)
* Add Kinesis backend * Separate config file * Send data in chunks * Fix minor issues * Add error handling * Use existing JSON functions * Do not retry on send failure * Implement building with autotools * Implement building with CMake * Fix CMake variables * Fix build when C++ compiler is not available * Add checks for C++11 * Don't reinitialize API * Don't reinitialize client * Minor cleanup * Fix Codacy warning * Separate sending records and receiving results * Add documentation * Make connection timeout configurable * Fix operation metrics * Fix typo * Change parameter names for credentials * Allow using the default SDK credentials configuration
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt79
1 files changed, 77 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 46a3fed32f..72a31ec4ef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,8 +3,8 @@
# This file is only used for development (netdata in Clion)
# It can build netdata, but you are on your own...
-cmake_minimum_required(VERSION 3.0.2)
-project(netdata C)
+cmake_minimum_required(VERSION 3.1.0)
+project(netdata C CXX)
find_package(Threads REQUIRED)
find_package(PkgConfig REQUIRED)
@@ -158,6 +158,50 @@ ENDIF(MACOS)
# -----------------------------------------------------------------------------
+# Detect libcrypto
+
+pkg_check_modules(CRYPTO libcrypto)
+# later we use:
+# ${CRYPTO_LIBRARIES}
+# ${CRYPTO_CFLAGS_OTHER}
+# ${CRYPTO_INCLUDE_DIRS}
+
+
+# -----------------------------------------------------------------------------
+# Detect libssl
+
+pkg_check_modules(SSL libssl)
+# later we use:
+# ${SSL_LIBRARIES}
+# ${SSL_CFLAGS_OTHER}
+# ${SSL_INCLUDE_DIRS}
+
+
+# -----------------------------------------------------------------------------
+# Detect libcurl
+
+pkg_check_modules(CURL libcurl)
+# later we use:
+# ${CURL_LIBRARIES}
+# ${CURL_CFLAGS_OTHER}
+# ${CURL_INCLUDE_DIRS}
+
+
+# -----------------------------------------------------------------------------
+# Detect libaws-cpp-sdk-core
+
+find_library(HAVE_AWS aws-cpp-sdk-core)
+# later we use:
+# ${HAVE_AWS}
+
+# -----------------------------------------------------------------------------
+# Detect libaws-cpp-sdk-kinesis
+
+find_library(HAVE_KINESIS aws-cpp-sdk-kinesis)
+# later we use:
+# ${HAVE_KINESIS}
+
+# -----------------------------------------------------------------------------
# netdata files
set(LIBNETDATA_FILES
@@ -440,6 +484,13 @@ set(BACKENDS_PLUGIN_FILES
backends/prometheus/backend_prometheus.h
)
+set(KINESIS_BACKEND_FILES
+ backends/aws_kinesis/aws_kinesis.c
+ backends/aws_kinesis/aws_kinesis.h
+ backends/aws_kinesis/aws_kinesis_put_record.cc
+ backends/aws_kinesis/aws_kinesis_put_record.h
+ )
+
set(DAEMON_FILES
daemon/common.c
daemon/common.h
@@ -486,6 +537,25 @@ add_definitions(
)
# -----------------------------------------------------------------------------
+# kinesis backend
+
+IF(HAVE_KINESIS AND HAVE_AWS AND CRYPTO_LIBRARIES AND SSL_LIBRARIES AND CURL_LIBRARIES)
+ SET(ENABLE_BACKEND_KINESIS True)
+ELSE()
+ SET(ENABLE_BACKEND_KINESIS False)
+ENDIF()
+
+IF(ENABLE_BACKEND_KINESIS)
+ message(STATUS "kinesis backend: enabled")
+ list(APPEND NETDATA_FILES ${KINESIS_BACKEND_FILES})
+ list(APPEND NETDATA_COMMON_LIBRARIES aws-cpp-sdk-kinesis aws-cpp-sdk-core ${CRYPTO_LIBRARIES} ${SSL_LIBRARIES} ${CURL_LIBRARIES})
+ list(APPEND NETDATA_COMMON_INCLUDE_DIRS ${CRYPTO_INCLUDE_DIRS} ${SSL_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS})
+ list(APPEND NETDATA_COMMON_CFLAGS ${CRYPTO_CFLAGS_OTHER} ${SSL_CFLAGS_OTHER} ${CURL_CFLAGS_OTHER})
+ELSE()
+ message(STATUS "kinesis backend: disabled (requires AWS SDK for C++)")
+ENDIF()
+
+# -----------------------------------------------------------------------------
# netdata
set(NETDATA_COMMON_LIBRARIES ${NETDATA_COMMON_LIBRARIES} m ${CMAKE_THREAD_LIBS_INIT})
@@ -522,6 +592,11 @@ ELSEIF(MACOS)
ENDIF()
+IF(ENABLE_BACKEND_KINESIS)
+ set_property(TARGET netdata PROPERTY CXX_STANDARD 11)
+ set_property(TARGET netdata PROPERTY CMAKE_CXX_STANDARD_REQUIRED ON)
+ENDIF()
+
IF(IPMI_LIBRARIES)
SET(ENABLE_PLUGIN_FREEIPMI True)
ELSE()