summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/monkey/CMakeLists.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:19:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:19:22 +0000
commitc21c3b0befeb46a51b6bf3758ffa30813bea0ff0 (patch)
tree9754ff1ca740f6346cf8483ec915d4054bc5da2d /fluent-bit/lib/monkey/CMakeLists.txt
parentAdding upstream version 1.43.2. (diff)
downloadnetdata-c21c3b0befeb46a51b6bf3758ffa30813bea0ff0.tar.xz
netdata-c21c3b0befeb46a51b6bf3758ffa30813bea0ff0.zip
Adding upstream version 1.44.3.upstream/1.44.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'fluent-bit/lib/monkey/CMakeLists.txt')
-rw-r--r--fluent-bit/lib/monkey/CMakeLists.txt331
1 files changed, 331 insertions, 0 deletions
diff --git a/fluent-bit/lib/monkey/CMakeLists.txt b/fluent-bit/lib/monkey/CMakeLists.txt
new file mode 100644
index 000000000..2d43835b7
--- /dev/null
+++ b/fluent-bit/lib/monkey/CMakeLists.txt
@@ -0,0 +1,331 @@
+# Let's have fun!
+cmake_minimum_required(VERSION 3.0)
+project(monkey C)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
+set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
+
+# CMake includes
+include(CheckSymbolExists)
+include(CheckLibraryExists)
+include(CheckIncludeFile)
+include(CheckCSourceCompiles)
+include(ExternalProject)
+include(GNUInstallDirs)
+
+# Set default compiler options
+if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -Wextra")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath \$<))\"'")
+else()
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+endif()
+
+# Monkey Version
+set(MK_VERSION_MAJOR 1)
+set(MK_VERSION_MINOR 7)
+set(MK_VERSION_PATCH 2)
+set(MK_VERSION_STR "${MK_VERSION_MAJOR}.${MK_VERSION_MINOR}.${MK_VERSION_PATCH}")
+
+# Output paths
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/library")
+
+# ============================================
+# ============= BUILD OPTIONS ================
+# ============================================
+
+# Monkey Core
+option(MK_DEBUG "Build with debug symbols" No)
+option(MK_ACCEPT "Use accept(2) system call" No)
+option(MK_ACCEPT4 "Use accept4(2) system call" Yes)
+option(MK_LINUX_KQUEUE "Use Linux kqueue emulator" No)
+option(MK_TRACE "Enable Trace mode" No)
+option(MK_UCLIB "Enable uClib libc support" No)
+option(MK_MUSL "Enable Musl libc support" No)
+option(MK_BACKTRACE "Enable Backtrace feature" Yes)
+option(MK_LINUX_TRACE "Enable Lttng support" No)
+option(MK_PTHREAD_TLS "Use old Pthread TLS mode" No)
+option(MK_MBEDTLS_SHARED "Use mbedtls shared lib" No)
+option(MK_VALGRIND "Enable Valgrind support" No)
+option(MK_FUZZ_MODE "Enable HonggFuzz mode" No)
+option(MK_HTTP2 "Enable HTTP Support (dev)" No)
+option(MK_TESTS "Enable Tests" No)
+
+# Plugins: what should be build ?, these options
+# will be processed later on the plugins/CMakeLists.txt file
+option(MK_PLUGIN_AUTH "Basic authentication" No)
+option(MK_PLUGIN_CGI "CGI support" No)
+option(MK_PLUGIN_CHEETAH "Cheetah Shell Interface" No)
+option(MK_PLUGIN_DIRLISTING "Directory Listing" Yes)
+option(MK_PLUGIN_FASTCGI "FastCGI" No)
+option(MK_PLUGIN_LIANA "Basic network layer" Yes)
+option(MK_PLUGIN_LOGGER "Log Writer" No)
+option(MK_PLUGIN_MANDRIL "Security" Yes)
+option(MK_PLUGIN_TLS "TLS/SSL support" No)
+
+# Options to build Monkey with/without binary and
+# static/dynamic library modes (default is always just
+# one target binary).
+option(MK_WITHOUT_BIN "Do not build binary" No)
+option(MK_WITHOUT_CONF "Skip configuration files" No)
+option(MK_STATIC_LIB_MODE "Static library mode" No)
+
+# If building just for a "library" mode, disable plugins
+if(MK_LIB_ONLY)
+ set(MK_PLUGIN_AUTH No)
+ set(MK_PLUGIN_CGI No)
+ set(MK_PLUGIN_CHEETAH No)
+ set(MK_PLUGIN_DIRLISTING No)
+ set(MK_PLUGIN_FASTCGI No)
+ set(MK_PLUGIN_LOGGER No)
+ set(MK_PLUGIN_MANDRIL No)
+endif()
+
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(MK_ACCEPT 1)
+ set(MK_ACCEPT4 0)
+ set(MK_SYSTEM_MALLOC 1)
+endif()
+
+if(MK_STATIC_PLUGINS)
+ set(MK_STATIC_PLUGINS "${MK_STATIC_PLUGINS},liana")
+else()
+ set(MK_STATIC_PLUGINS "liana")
+endif()
+
+# Variable to be populated by plugins/CMakeLists.txt. It will contain the
+# code required to initialize any static plugin.
+set(STATIC_PLUGINS_INIT "")
+set(STATIC_PLUGINS_LIBS "")
+
+# ===========================================
+# ============== DEPENDENCIES ===============
+# ===========================================
+
+# Find pthreads
+find_package(Threads)
+
+if(MK_DEBUG)
+ set(CMAKE_BUILD_TYPE "Debug")
+endif()
+
+# It set's a definition and register into the mk_info.h file */
+macro(MK_DEFINITION var)
+ add_definitions(-D${var})
+ set(MK_BUILD_FLAGS "${MK_BUILD_FLAGS}#ifndef ${var}\n#define ${var}\n#endif\n")
+endmacro()
+
+if (CMAKE_SYSTEM_NAME MATCHES "Windows")
+ MK_DEFINITION(_CRT_SECURE_NO_WARNINGS)
+endif()
+
+# Enable experimental (dev) HTTP/2 support
+if (MK_HTTP2)
+ MK_DEFINITION(MK_HAVE_HTTP2)
+endif()
+
+# Check for accept(2) v/s accept(4)
+list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
+check_symbol_exists(accept4 "sys/socket.h" HAVE_ACCEPT4)
+list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
+if(HAVE_ACCEPT4)
+ MK_DEFINITION(MK_HAVE_ACCEPT4)
+endif()
+
+# Check for Linux Kqueue library emulator
+if(MK_LINUX_KQUEUE)
+ find_package(Libkqueue REQUIRED)
+ if(NOT LIBKQUEUE_FOUND)
+ message(FATAL_ERROR "Linux libkqueue was not found." )
+ else()
+ MK_DEFINITION(MK_LINUX_KQUEUE)
+ endif()
+endif()
+
+# Check Trace
+if(MK_TRACE)
+ MK_DEFINITION(MK_HAVE_TRACE)
+endif()
+
+# Check Uclib library
+if(MK_UCLIB)
+ MK_DEFINITION(MK_HAVE_UCLIB)
+endif()
+
+# Check Musl library
+if(MK_MUSL)
+ MK_DEFINITION(MK_HAVE_MUSL)
+endif()
+
+# Check Backtrace support
+check_include_file("execinfo.h" HAVE_BACKTRACE)
+if (NOT HAVE_BACKTRACE)
+ set(MK_BACKTRACE No)
+else()
+ MK_DEFINITION(MK_HAVE_BACKTRACE)
+endif()
+
+# Check for LTTng-UST
+if(MK_LINUX_TRACE)
+ check_include_file("lttng/tracepoint.h" HAVE_LTTNG)
+ if (NOT HAVE_LTTNG)
+ message(FATAL_ERROR "LTTng-UST is not installed in your system." )
+ else()
+ MK_DEFINITION(MK_HAVE_LINUX_TRACE)
+ endif()
+endif()
+
+# Use old Pthread TLS
+if(NOT MK_PTHREAD_TLS)
+ check_c_source_compiles("
+ __thread int a;
+ int main() {
+ __tls_get_addr(0);
+ return 0;
+ }" HAVE_C_TLS)
+
+ if(HAVE_C_TLS)
+ MK_DEFINITION(MK_HAVE_C_TLS)
+ endif()
+endif()
+
+# Valgrind support
+check_c_source_compiles("
+ #include <valgrind/valgrind.h>
+ int main() {
+ return 0;
+ }" MK_HAVE_VALGRIND)
+
+if(MK_VALGRIND OR MK_HAVE_VALGRIND)
+ MK_DEFINITION(MK_HAVE_VALGRIND)
+endif()
+
+# Regex support
+check_c_source_compiles("
+ #include <regex.h>
+ int main() {
+ regex_t reg;
+ const char str[] = \"[a-zA-Z0-9]*\";
+ ret = regcomp(&reg, str, REG_EXTENDED|REG_ICASE|REG_NOSUB);
+ return 0;
+ }" HAVE_REGEX)
+
+if(HAVE_REGEX)
+ MK_DEFINITION(MK_HAVE_REGEX)
+endif()
+
+
+# ============================================
+# =========== CONFIGURATION FILES=============
+# ============================================
+
+# Default values for conf/monkey.conf
+set(MK_CONF_LISTEN "2001")
+set(MK_CONF_WORKERS "0")
+set(MK_CONF_TIMEOUT "15")
+set(MK_CONF_PIDFILE "monkey.pid")
+set(MK_CONF_USERDIR "public_html")
+set(MK_CONF_INDEXFILE "index.html index.htm index.php")
+set(MK_CONF_HIDEVERSION "Off")
+set(MK_CONF_RESUME "On")
+set(MK_CONF_USER "www-data")
+set(MK_CONF_KA "On")
+set(MK_CONF_KA_TIMEOUT "5")
+set(MK_CONF_KA_MAXREQ "1000")
+set(MK_CONF_REQ_SIZE "32")
+set(MK_CONF_SYMLINK "Off")
+set(MK_CONF_DEFAULT_MIME "text/plain")
+set(MK_CONF_FDT "On")
+set(MK_CONF_OVERCAPACITY "Resist")
+
+# Default values for conf/sites/default
+set(MK_VH_SERVERNAME "127.0.0.1")
+set(MK_VH_DOCUMENT_ROOT MK_DATADIR)
+set(MK_VH_LOG_ACCESS MK_LOGDIR)
+set(MK_VH_LOG_ERROR MK_LOGDIR)
+
+# Paths
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH ${CMAKE_MACOSX_RPATH};${CMAKE_INSTALL_FULL_LIBDIR}/monkey)
+endif()
+
+if(DEFAULT_PORT)
+ set(MK_CONF_LISTEN ${DEFAULT_PORT})
+endif()
+
+if(DEFAULT_USER)
+ set(MK_CONF_USER ${DEFAULT_USER})
+endif()
+
+configure_file(
+ "${PROJECT_SOURCE_DIR}/include/monkey/mk_info.h.in"
+ "${PROJECT_BINARY_DIR}/include/monkey/mk_info.h"
+ )
+
+configure_file(
+ "${PROJECT_SOURCE_DIR}/include/monkey/mk_env.h.in"
+ "${PROJECT_BINARY_DIR}/include/monkey/mk_env.h"
+ )
+
+
+# General Headers
+include_directories(./)
+include_directories(deps/rbtree)
+include_directories(deps/flb_libco)
+include_directories(deps/regex)
+include_directories(include)
+include_directories(include/monkey/)
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/monkey/)
+
+if (CMAKE_SYSTEM_NAME MATCHES "Windows")
+ include_directories(mk_core/deps/libevent/include)
+ include_directories("${PROJECT_BINARY_DIR}/mk_core/deps/libevent/include/")
+endif()
+
+# Instruct CMake to build the the code base
+# =========================================
+# mk_core : generic utilities
+# plugins : plugins for mk_server
+# mk_server: server code base: plugins, protocols, scheduler.. (no executable)
+# mk_bin : server executable
+
+add_subdirectory(man)
+add_subdirectory(deps/rbtree)
+add_subdirectory(deps/regex)
+add_subdirectory(deps/flb_libco)
+add_subdirectory(mk_core)
+add_subdirectory(plugins)
+add_subdirectory(mk_server)
+
+if(NOT MK_WITHOUT_BIN)
+ add_subdirectory(mk_bin)
+endif()
+
+# Configuration, headers generation and others
+if(NOT MK_WITHOUT_CONF)
+ add_subdirectory(conf)
+endif()
+add_subdirectory(htdocs)
+add_subdirectory(include)
+
+# Install (missings ?) paths
+install(DIRECTORY DESTINATION ${MK_PATH_LOG})
+install(DIRECTORY DESTINATION ${MK_PATH_PIDPATH})
+install(DIRECTORY DESTINATION ${MK_PATH_WWW})
+
+if(NOT SKIP_EMPTY_DIRS)
+ install(DIRECTORY DESTINATION ${MK_PATH_PIDPATH})
+ install(DIRECTORY DESTINATION ${MK_PATH_LOG})
+endif()
+
+add_subdirectory(api)
+
+if(MK_FUZZ_MODE)
+ add_subdirectory(fuzz)
+endif()
+
+if(MK_TESTS)
+ add_subdirectory(test)
+endif()