aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/AddDependencySubdirectories.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/AddDependencySubdirectories.cmake')
-rw-r--r--cmake/AddDependencySubdirectories.cmake107
1 files changed, 107 insertions, 0 deletions
diff --git a/cmake/AddDependencySubdirectories.cmake b/cmake/AddDependencySubdirectories.cmake
new file mode 100644
index 000000000..866204ff5
--- /dev/null
+++ b/cmake/AddDependencySubdirectories.cmake
@@ -0,0 +1,107 @@
+function(AddDependencySubdirectories)
+ # Core dependencies
+ add_subdirectory(contrib/hiredis)
+ include_directories(BEFORE "${CMAKE_SOURCE_DIR}/contrib/hiredis")
+
+ # Configure xxhash
+ if (SYSTEM_XXHASH MATCHES "OFF")
+ add_subdirectory(contrib/xxhash)
+ include_directories("${CMAKE_SOURCE_DIR}/contrib/xxhash")
+ else ()
+ ProcessPackage(XXHASH LIBRARY xxhash INCLUDE xxhash.h
+ ROOT ${LIBXXHASH_ROOT_DIR} MODULES xxhash libxxhash)
+ endif ()
+
+ # Add essential dependencies
+ add_subdirectory(contrib/cdb)
+ add_subdirectory(contrib/http-parser)
+ add_subdirectory(contrib/fpconv)
+ add_subdirectory(contrib/lc-btrie)
+ add_subdirectory(contrib/libottery)
+ add_subdirectory(contrib/simdutf)
+ include_directories("${CMAKE_SOURCE_DIR}/contrib/simdutf/include")
+
+ # Configure zstd
+ if (SYSTEM_ZSTD MATCHES "OFF")
+ add_subdirectory(contrib/zstd)
+ else ()
+ ProcessPackage(LIBZSTD LIBRARY zstd INCLUDE zstd.h
+ ROOT ${LIBZSTD_ROOT_DIR} MODULES zstd libzstd)
+ add_definitions(-DSYS_ZSTD)
+ endif ()
+
+ # Optional dependencies based on configuration
+ if (ENABLE_SNOWBALL)
+ add_subdirectory(contrib/snowball)
+ set(WITH_SNOWBALL 1 PARENT_SCOPE)
+ endif ()
+
+ # Core libraries
+ add_subdirectory(contrib/libucl)
+ add_subdirectory(contrib/librdns)
+ add_subdirectory(contrib/aho-corasick)
+ add_subdirectory(contrib/lua-lpeg)
+ add_subdirectory(contrib/t1ha)
+ add_subdirectory(contrib/libev)
+ add_subdirectory(contrib/kann)
+ add_subdirectory(contrib/google-ced)
+
+ # Backward-cpp for stacktraces
+ if (ENABLE_BACKWARD)
+ add_subdirectory(contrib/backward-cpp)
+ message(STATUS "Backward-cpp config: ${BACKWARD_DEFINITIONS}")
+ else ()
+ set(BACKWARD_ENABLE)
+ macro(add_backward target)
+ # do nothing
+ endmacro()
+ endif ()
+
+ if (BACKWARD_LIBRARIES)
+ message(STATUS "Backward-cpp libraries: ${BACKWARD_LIBRARIES}")
+ endif ()
+
+ # Doctest for testing
+ if (SYSTEM_DOCTEST MATCHES "OFF")
+ add_subdirectory(contrib/doctest)
+ include_directories("${CMAKE_SOURCE_DIR}/contrib/doctest")
+ else ()
+ find_package(doctest)
+ endif ()
+
+ # Lua-specific dependencies
+ if (NOT WITH_LUAJIT)
+ add_subdirectory(contrib/lua-bit)
+ endif ()
+
+ # Lua REPL support
+ add_subdirectory(contrib/replxx)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-replxx)
+
+ # Update the required libraries list based on dependencies
+ if (ENABLE_SNOWBALL)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES stemmer)
+ endif ()
+
+ # Add core required libraries
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-hiredis)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-actrie)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-t1ha)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-ev)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-kann)
+ list(APPEND RSPAMD_REQUIRED_LIBRARIES rspamd-ced)
+
+ # Clang plugin (optional)
+ if (ENABLE_CLANG_PLUGIN)
+ add_subdirectory(clang-plugin)
+ endif ()
+
+ # Main source code
+ add_subdirectory(src)
+
+ # Utilities
+ add_subdirectory(utils)
+
+ # Propagate variables to parent scope
+ set(RSPAMD_REQUIRED_LIBRARIES ${RSPAMD_REQUIRED_LIBRARIES} PARENT_SCOPE)
+endfunction()