]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Rework project structure, remove trash files.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 21 Apr 2014 15:25:51 +0000 (16:25 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 21 Apr 2014 15:25:51 +0000 (16:25 +0100)
91 files changed:
CMakeLists.txt
src/CMakeLists.txt
src/dns_private.h [deleted file]
src/libmime/CMakeLists.txt [new file with mode: 0644]
src/libmime/expressions.c [moved from src/expressions.c with 100% similarity]
src/libmime/expressions.h [moved from src/expressions.h with 100% similarity]
src/libmime/filter.c [moved from src/filter.c with 100% similarity]
src/libmime/filter.h [moved from src/filter.h with 100% similarity]
src/libmime/images.c [moved from src/images.c with 100% similarity]
src/libmime/images.h [moved from src/images.h with 100% similarity]
src/libmime/message.c [moved from src/message.c with 100% similarity]
src/libmime/message.h [moved from src/message.h with 100% similarity]
src/libmime/protocol.c [moved from src/protocol.c with 100% similarity]
src/libmime/protocol.h [moved from src/protocol.h with 100% similarity]
src/libmime/smtp_proto.c [moved from src/smtp_proto.c with 100% similarity]
src/libmime/smtp_proto.h [moved from src/smtp_proto.h with 100% similarity]
src/libmime/smtp_utils.c [moved from src/smtp_utils.c with 100% similarity]
src/libmime/smtp_utils.h [moved from src/smtp_utils.h with 100% similarity]
src/libmime/worker_util.c [moved from src/worker_util.c with 100% similarity]
src/libserver/CMakeLists.txt [new file with mode: 0644]
src/libserver/binlog.c [moved from src/binlog.c with 100% similarity]
src/libserver/binlog.h [moved from src/binlog.h with 100% similarity]
src/libserver/buffer.c [moved from src/buffer.c with 100% similarity]
src/libserver/buffer.h [moved from src/buffer.h with 100% similarity]
src/libserver/cfg_file.h [moved from src/cfg_file.h with 100% similarity]
src/libserver/cfg_rcl.c [moved from src/cfg_rcl.c with 100% similarity]
src/libserver/cfg_rcl.h [moved from src/cfg_rcl.h with 100% similarity]
src/libserver/cfg_utils.c [moved from src/cfg_utils.c with 100% similarity]
src/libserver/dkim.c [moved from src/dkim.c with 100% similarity]
src/libserver/dkim.h [moved from src/dkim.h with 100% similarity]
src/libserver/dns.c [moved from src/dns.c with 100% similarity]
src/libserver/dns.h [moved from src/dns.h with 100% similarity]
src/libserver/dynamic_cfg.c [moved from src/dynamic_cfg.c with 100% similarity]
src/libserver/dynamic_cfg.h [moved from src/dynamic_cfg.h with 100% similarity]
src/libserver/events.c [moved from src/events.c with 100% similarity]
src/libserver/events.h [moved from src/events.h with 100% similarity]
src/libserver/html.c [moved from src/html.c with 100% similarity]
src/libserver/html.h [moved from src/html.h with 100% similarity]
src/libserver/proxy.c [moved from src/proxy.c with 100% similarity]
src/libserver/proxy.h [moved from src/proxy.h with 100% similarity]
src/libserver/roll_history.c [moved from src/roll_history.c with 100% similarity]
src/libserver/roll_history.h [moved from src/roll_history.h with 100% similarity]
src/libserver/settings.c [moved from src/settings.c with 100% similarity]
src/libserver/settings.h [moved from src/settings.h with 100% similarity]
src/libserver/spf.c [moved from src/spf.c with 100% similarity]
src/libserver/spf.h [moved from src/spf.h with 100% similarity]
src/libserver/statfile.c [moved from src/statfile.c with 100% similarity]
src/libserver/statfile.h [moved from src/statfile.h with 100% similarity]
src/libserver/statfile_sync.c [moved from src/statfile_sync.c with 100% similarity]
src/libserver/statfile_sync.h [moved from src/statfile_sync.h with 100% similarity]
src/libserver/symbols_cache.c [moved from src/symbols_cache.c with 100% similarity]
src/libserver/symbols_cache.h [moved from src/symbols_cache.h with 100% similarity]
src/libserver/task.c [moved from src/task.c with 100% similarity]
src/libserver/task.h [moved from src/task.h with 100% similarity]
src/libserver/url.c [moved from src/url.c with 100% similarity]
src/libserver/url.h [moved from src/url.h with 100% similarity]
src/libutil/CMakeLists.txt [new file with mode: 0644]
src/libutil/aio_event.c [moved from src/aio_event.c with 100% similarity]
src/libutil/aio_event.h [moved from src/aio_event.h with 100% similarity]
src/libutil/bloom.c [moved from src/bloom.c with 100% similarity]
src/libutil/bloom.h [moved from src/bloom.h with 100% similarity]
src/libutil/diff.c [moved from src/diff.c with 100% similarity]
src/libutil/diff.h [moved from src/diff.h with 100% similarity]
src/libutil/fstring.c [moved from src/fstring.c with 100% similarity]
src/libutil/fstring.h [moved from src/fstring.h with 100% similarity]
src/libutil/fuzzy.c [moved from src/fuzzy.c with 100% similarity]
src/libutil/fuzzy.h [moved from src/fuzzy.h with 100% similarity]
src/libutil/hash.c [moved from src/hash.c with 100% similarity]
src/libutil/hash.h [moved from src/hash.h with 100% similarity]
src/libutil/http.c [moved from src/http.c with 100% similarity]
src/libutil/http.h [moved from src/http.h with 100% similarity]
src/libutil/logger.c [moved from src/logger.c with 100% similarity]
src/libutil/logger.h [moved from src/logger.h with 100% similarity]
src/libutil/map.c [moved from src/map.c with 100% similarity]
src/libutil/map.h [moved from src/map.h with 100% similarity]
src/libutil/mem_pool.c [moved from src/mem_pool.c with 100% similarity]
src/libutil/mem_pool.h [moved from src/mem_pool.h with 100% similarity]
src/libutil/memcached.c [moved from src/memcached.c with 100% similarity]
src/libutil/memcached.h [moved from src/memcached.h with 100% similarity]
src/libutil/printf.c [moved from src/printf.c with 100% similarity]
src/libutil/printf.h [moved from src/printf.h with 100% similarity]
src/libutil/radix.c [moved from src/radix.c with 100% similarity]
src/libutil/radix.h [moved from src/radix.h with 100% similarity]
src/libutil/rrd.c [moved from src/rrd.c with 100% similarity]
src/libutil/rrd.h [moved from src/rrd.h with 100% similarity]
src/libutil/trie.c [moved from src/trie.c with 100% similarity]
src/libutil/trie.h [moved from src/trie.h with 100% similarity]
src/libutil/upstream.c [moved from src/upstream.c with 100% similarity]
src/libutil/upstream.h [moved from src/upstream.h with 100% similarity]
src/libutil/util.c [moved from src/util.c with 100% similarity]
src/libutil/util.h [moved from src/util.h with 100% similarity]

index f465da28d368833669660a6b3113babf8e9f87a9..b970df796b34cd8fe6ecbce79f95a3a26c16d798 100644 (file)
@@ -107,61 +107,7 @@ INCLUDE(CheckCCompilerFlag)
 INCLUDE(FindPerl)
 INCLUDE(FindOpenSSL)
 
-############################# MODULES SECTION #############################################
-
-MACRO(_AddModulesForced MLIST WLIST)
-# Generate unique string for this build
-       STRING(RANDOM LENGTH 8 _MODULES_ID)
-       SET(MODULES_ID ${_MODULES_ID} CACHE INTERNAL "Modules ID" FORCE)
-       FILE(WRITE "src/modules.c" "/* ${MODULES_ID} */\n#include \"config.h\"\n")
-       
-       # Handle even old cmake
-       LIST(LENGTH ${MLIST} MLIST_COUNT)
-       LIST(LENGTH ${WLIST} WLIST_COUNT)
-       MATH(EXPR MLIST_MAX ${MLIST_COUNT}-1)
-       MATH(EXPR WLIST_MAX ${WLIST_COUNT}-1)
-       
-       FOREACH(MOD_IDX RANGE ${MLIST_MAX})
-               LIST(GET ${MLIST} ${MOD_IDX} MOD)
-               FILE(APPEND "src/modules.c" "extern module_t ${MOD}_module;\n")
-       ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
-                
-       FILE(APPEND "src/modules.c" "\n\nmodule_t *modules[] = {\n")
-       
-       FOREACH(MOD_IDX RANGE ${MLIST_MAX})
-               LIST(GET ${MLIST} ${MOD_IDX} MOD)
-               FILE(APPEND "src/modules.c" "&${MOD}_module,\n")
-       ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
-       
-       FILE(APPEND "src/modules.c" "NULL\n};\n")
-       
-       FOREACH(MOD_IDX RANGE ${WLIST_MAX})
-               LIST(GET ${WLIST} ${MOD_IDX} WRK)
-               FILE(APPEND "src/modules.c" "extern worker_t ${WRK}_worker;\n")
-       ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
-        
-       FILE(APPEND "src/modules.c" "\n\nworker_t *workers[] = {\n")
-       
-       FOREACH(MOD_IDX RANGE ${WLIST_MAX})
-               LIST(GET ${WLIST} ${MOD_IDX} WRK)
-               FILE(APPEND "src/modules.c" "&${WRK}_worker,\n")
-       ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
-       FILE(APPEND "src/modules.c" "NULL\n};\n")
-ENDMACRO(_AddModulesForced MLIST WLIST)
-
-MACRO(AddModules MLIST WLIST)
-       _AddModulesForced(${MLIST} ${WLIST})
-       #IF(NOT EXISTS "src/modules.c")
-       #       _AddModulesForced(${MLIST} ${WLIST})
-       #ELSE(NOT EXISTS "src/modules.c")
-       #       FILE(STRINGS "src/modules.c" FILE_ID_RAW REGEX "^/.*[a-zA-Z0-9]+.*/$")
-       #       STRING(REGEX MATCH "[a-zA-Z0-9]+" FILE_ID "${FILE_ID_RAW}")
-       #       IF(NOT FILE_ID STREQUAL MODULES_ID)
-       #               MESSAGE("Regenerate modules info")
-       #               _AddModulesForced(${MLIST} ${WLIST})
-       #       ENDIF(NOT FILE_ID STREQUAL MODULES_ID)
-       #ENDIF(NOT EXISTS "src/modules.c")
-ENDMACRO(AddModules MLIST WLIST)
+############################# MACRO SECTION #############################################
 
 # Find lua installation
 MACRO(FindLua _major _minor)
@@ -839,7 +785,6 @@ ENDIF(HG)
  
 
 ################################ SOURCES SECTION ###########################
-
 INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src" 
                                        "${CMAKE_BINARY_DIR}/src" 
                                        "${CMAKE_SOURCE_DIR}/src/ucl/include"
@@ -849,28 +794,6 @@ INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src"
                                        "${CMAKE_SOURCE_DIR}/contrib/xxhash"
                                        "${CMAKE_SOURCE_DIR}/src/rdns/include")
 
-SET(RSPAMDSRC  src/modules.c
-                               src/controller.c
-                               src/fuzzy_storage.c
-                               src/lua_worker.c
-                               src/main.c
-                               src/map.c
-                               src/smtp_proxy.c
-                               src/webui.c
-                               src/worker.c)
-
-SET(PLUGINSSRC src/plugins/surbl.c
-                               src/plugins/regexp.c
-                               src/plugins/chartable.c
-                               src/plugins/fuzzy_check.c
-                               src/plugins/spf.c
-                               src/plugins/dkim_check.c)
-                               
-SET(MODULES_LIST surbl regexp chartable fuzzy_check spf dkim)
-SET(WORKERS_LIST normal controller smtp_proxy fuzzy lua webui)
-
-AddModules(MODULES_LIST WORKERS_LIST)
-
 ################################ SUBDIRS SECTION ###########################
 
 ADD_SUBDIRECTORY(contrib/lgpl)
@@ -888,21 +811,10 @@ ADD_DEFINITIONS(-DHAVE_CONFIG_H)
 ADD_SUBDIRECTORY(contrib/xxhash)
 ADD_SUBDIRECTORY(contrib/http-parser)
 ADD_SUBDIRECTORY(contrib/libottery)
-ADD_SUBDIRECTORY(src/lua)
-ADD_SUBDIRECTORY(src/json)
-ADD_SUBDIRECTORY(src/cdb)
-ADD_SUBDIRECTORY(src/ucl/cmake)
 ADD_SUBDIRECTORY(src)
-ADD_SUBDIRECTORY(src/client)
-
-SET(SLAVE_BUILD 1)
-ADD_SUBDIRECTORY(src/rdns)
-UNSET(SLAVE_BUILD)
 
 ADD_SUBDIRECTORY(test)
 
-LIST(LENGTH PLUGINSSRC RSPAMD_MODULES_NUM)
-
 ############################ TARGETS SECTION ###############################
 
 
@@ -921,54 +833,9 @@ SET(CONFFILES
        conf/2tld.inc
        conf/surbl-whitelist.inc)
 
-######################### LINK SECTION ###############################
-
-ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${PLUGINSSRC})
-SET_TARGET_PROPERTIES(rspamd PROPERTIES LINKER_LANGUAGE C)
-SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS "-DRSPAMD_MAIN")
-IF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd PROPERTIES VERSION ${RSPAMD_VERSION})
-ENDIF(NOT DEBIAN_BUILD)
-
-TARGET_LINK_LIBRARIES(rspamd rspamd-mime)
-TARGET_LINK_LIBRARIES(rspamd rspamd-server)
-TARGET_LINK_LIBRARIES(rspamd rspamd-util)
-TARGET_LINK_LIBRARIES(rspamd rspamd-lua)
-
-TARGET_LINK_LIBRARIES(rspamd event)
-IF(HAVE_LIBEVENT2)
-       TARGET_LINK_LIBRARIES(rspamd event_pthreads)
-ENDIF(HAVE_LIBEVENT2)
-IF(WITH_DB)
-       TARGET_LINK_LIBRARIES(rspamd db)
-ENDIF(WITH_DB)
-
-IF(OPENSSL_FOUND)
-       TARGET_LINK_LIBRARIES(rspamd ${OPENSSL_LIBRARIES})
-ENDIF(OPENSSL_FOUND)
-IF(HAVE_FETCH_H)
-       TARGET_LINK_LIBRARIES(rspamd fetch)
-ENDIF(HAVE_FETCH_H)
-TARGET_LINK_LIBRARIES(rspamd ${RSPAMD_REQUIRED_LIBRARIES})
-
-IF(ENABLE_LUAJIT MATCHES "ON")
-       TARGET_LINK_LIBRARIES(rspamd "${LUAJIT_LIBRARY}")
-ELSE(ENABLE_LUAJIT MATCHES "ON")
-       TARGET_LINK_LIBRARIES(rspamd "${LUA_LIBRARY}")
-ENDIF(ENABLE_LUAJIT MATCHES "ON")
-
-IF(ENABLE_GPERF_TOOLS MATCHES "ON")
-       TARGET_LINK_LIBRARIES(rspamd profiler)
-ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
-TARGET_LINK_LIBRARIES(rspamd hiredis)
-IF(GLIB_COMPAT)
-       TARGET_LINK_LIBRARIES(rspamd glibadditions)
-ENDIF(GLIB_COMPAT)
-
 ##################### INSTALLATION ##########################################
 
 # Binaries
-INSTALL(TARGETS rspamd RUNTIME DESTINATION bin)
 
 # Configs
 INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR})")
@@ -1012,9 +879,10 @@ FOREACH(LUA_CONF ${LUA_CONFIGS})
 ENDFOREACH(LUA_CONF)
 
 # systemd unit
-
-INSTALL(FILES "rspamd.service" DESTINATION ${SYSTEMDDIR})
-INSTALL(FILES "rspamd.socket" DESTINATION ${SYSTEMDDIR})
+IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+       INSTALL(FILES "rspamd.service" DESTINATION ${SYSTEMDDIR})
+       INSTALL(FILES "rspamd.socket" DESTINATION ${SYSTEMDDIR})
+ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
 
 # Manual pages
 INSTALL(FILES "doc/rspamd.8" DESTINATION ${MANDIR}/man8)
index 70c96f99db05b03500bc64946bfe4d00fe4955fa..270648697695af41cb26cd019364bae0078afef7 100644 (file)
-# Librspamd-util
-SET(LIBRSPAMDUTILSRC                   aio_event.c
-                                                               bloom.c
-                                                               diff.c
-                                                               fstring.c
-                                                               fuzzy.c
-                                                               hash.c
-                                                               http.c
-                                                               logger.c
-                                                               map.c
-                                                               memcached.c
-                                                               mem_pool.c
-                                                               printf.c
-                                                               radix.c
-                                                               rrd.c
-                                                               trie.c
-                                                               upstream.c
-                                                               util.c)
+MACRO(_AddModulesForced MLIST WLIST)
+# Generate unique string for this build
+       STRING(RANDOM LENGTH 8 _MODULES_ID)
+       SET(MODULES_ID ${_MODULES_ID} CACHE INTERNAL "Modules ID" FORCE)
+       FILE(WRITE "src/modules.c" "/* ${MODULES_ID} */\n#include \"config.h\"\n")
+       
+       # Handle even old cmake
+       LIST(LENGTH ${MLIST} MLIST_COUNT)
+       LIST(LENGTH ${WLIST} WLIST_COUNT)
+       MATH(EXPR MLIST_MAX ${MLIST_COUNT}-1)
+       MATH(EXPR WLIST_MAX ${WLIST_COUNT}-1)
+       
+       FOREACH(MOD_IDX RANGE ${MLIST_MAX})
+               LIST(GET ${MLIST} ${MOD_IDX} MOD)
+               FILE(APPEND "src/modules.c" "extern module_t ${MOD}_module;\n")
+       ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
+                
+       FILE(APPEND "src/modules.c" "\n\nmodule_t *modules[] = {\n")
+       
+       FOREACH(MOD_IDX RANGE ${MLIST_MAX})
+               LIST(GET ${MLIST} ${MOD_IDX} MOD)
+               FILE(APPEND "src/modules.c" "&${MOD}_module,\n")
+       ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
+       
+       FILE(APPEND "src/modules.c" "NULL\n};\n")
+       
+       FOREACH(MOD_IDX RANGE ${WLIST_MAX})
+               LIST(GET ${WLIST} ${MOD_IDX} WRK)
+               FILE(APPEND "src/modules.c" "extern worker_t ${WRK}_worker;\n")
+       ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
+        
+       FILE(APPEND "src/modules.c" "\n\nworker_t *workers[] = {\n")
+       
+       FOREACH(MOD_IDX RANGE ${WLIST_MAX})
+               LIST(GET ${WLIST} ${MOD_IDX} WRK)
+               FILE(APPEND "src/modules.c" "&${WRK}_worker,\n")
+       ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
+       FILE(APPEND "src/modules.c" "NULL\n};\n")
+ENDMACRO(_AddModulesForced MLIST WLIST)
 
-# Librspamdserver
-SET(LIBRSPAMDSERVERSRC
-                               binlog.c
-                               buffer.c
-                               cfg_utils.c
-                               cfg_rcl.c
-                               dkim.c
-                               dns.c
-                               dynamic_cfg.c
-                               events.c
-                               html.c
-                               proxy.c
-                               roll_history.c
-                               settings.c
-                               spf.c
-                               statfile.c
-                               statfile_sync.c
-                               symbols_cache.c
-                               task.c
-                               url.c)
-                               
-# Librspamd mime
-SET(LIBRSPAMDMIMESRC
-                               expressions.c
-                               filter.c
-                               images.c
-                               message.c
-                               protocol.c
-                               smtp_utils.c
-                               smtp_proto.c
-                               worker_util.c)
-                               
-SET(TOKENIZERSSRC  tokenizers/tokenizers.c
-                               tokenizers/osb.c)
-
-SET(CLASSIFIERSSRC classifiers/classifiers.c
-                classifiers/bayes.c
-                               classifiers/winnow.c)
-# Add targets
+MACRO(AddModules MLIST WLIST)
+       _AddModulesForced(${MLIST} ${WLIST})
+       #IF(NOT EXISTS "src/modules.c")
+       #       _AddModulesForced(${MLIST} ${WLIST})
+       #ELSE(NOT EXISTS "src/modules.c")
+       #       FILE(STRINGS "src/modules.c" FILE_ID_RAW REGEX "^/.*[a-zA-Z0-9]+.*/$")
+       #       STRING(REGEX MATCH "[a-zA-Z0-9]+" FILE_ID "${FILE_ID_RAW}")
+       #       IF(NOT FILE_ID STREQUAL MODULES_ID)
+       #               MESSAGE("Regenerate modules info")
+       #               _AddModulesForced(${MLIST} ${WLIST})
+       #       ENDIF(NOT FILE_ID STREQUAL MODULES_ID)
+       #ENDIF(NOT EXISTS "src/modules.c")
+ENDMACRO(AddModules MLIST WLIST)
 
-# Rspamdutil
-ADD_LIBRARY(rspamd-util ${LINK_TYPE} ${LIBRSPAMDUTILSRC})
-IF(CMAKE_COMPILER_IS_GNUCC)
-SET_TARGET_PROPERTIES(rspamd-util PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing")
-ENDIF(CMAKE_COMPILER_IS_GNUCC)
+# Contrib software
+ADD_SUBDIRECTORY(json)
+ADD_SUBDIRECTORY(cdb)
+ADD_SUBDIRECTORY(ucl/cmake)
+SET(SLAVE_BUILD 1)
+ADD_SUBDIRECTORY(rdns)
+UNSET(SLAVE_BUILD)
 
+INCLUDE_DIRECTORIES(libutil libserver libmime)
 
-TARGET_LINK_LIBRARIES(rspamd-util ${RSPAMD_REQUIRED_LIBRARIES})
-TARGET_LINK_LIBRARIES(rspamd-util pcre)
-TARGET_LINK_LIBRARIES(rspamd-util ucl)
-TARGET_LINK_LIBRARIES(rspamd-util ottery)
-TARGET_LINK_LIBRARIES(rspamd-util rspamd-http-parser)
-TARGET_LINK_LIBRARIES(rspamd-util event)
-TARGET_LINK_LIBRARIES(rspamd-util xxhash)
-IF(OPENSSL_FOUND)
-       TARGET_LINK_LIBRARIES(rspamd-util ${OPENSSL_LIBRARIES})
-ENDIF(OPENSSL_FOUND)
+# Rspamd core components
+ADD_SUBDIRECTORY(lua)
+ADD_SUBDIRECTORY(libutil)
+ADD_SUBDIRECTORY(libserver)
+ADD_SUBDIRECTORY(libmime)
+ADD_SUBDIRECTORY(client)
+                               
+SET(RSPAMDSRC  modules.c
+                               controller.c
+                               fuzzy_storage.c
+                               lua_worker.c
+                               main.c
+                               smtp_proxy.c
+                               webui.c
+                               worker.c)
 
-IF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd-util PROPERTIES VERSION ${RSPAMD_VERSION})
-ENDIF(NOT DEBIAN_BUILD)
+SET(PLUGINSSRC plugins/surbl.c
+                               plugins/regexp.c
+                               plugins/chartable.c
+                               plugins/fuzzy_check.c
+                               plugins/spf.c
+                               plugins/dkim_check.c)
+                               
+SET(MODULES_LIST surbl regexp chartable fuzzy_check spf dkim)
+SET(WORKERS_LIST normal controller smtp_proxy fuzzy lua webui)
 
-IF(GLIB_COMPAT)
-       INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/contrib/lgpl")
-       TARGET_LINK_LIBRARIES(rspamd-util glibadditions)
-ENDIF(GLIB_COMPAT)
+AddModules(MODULES_LIST WORKERS_LIST)
+LIST(LENGTH PLUGINSSRC RSPAMD_MODULES_NUM)
 
-IF(NO_SHARED MATCHES "OFF")
-       INSTALL(TARGETS rspamd-util 
-       LIBRARY DESTINATION ${LIBDIR} 
-       PUBLIC_HEADER DESTINATION include)
-ENDIF(NO_SHARED MATCHES "OFF")
-    
-# Librspamd-server
+######################### LINK SECTION ###############################
 
-#IF(WITH_DB)
-#      LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_bdb.c)
-#ENDIF(WITH_DB)
-#IF(WITH_SQLITE)
-#      LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_sqlite.c)
-#ENDIF(WITH_SQLITE)
-                               
-ADD_LIBRARY(rspamd-server ${LINK_TYPE} ${LIBRSPAMDSERVERSRC} ${TOKENIZERSSRC} ${CLASSIFIERSSRC})
+ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${PLUGINSSRC})
+SET_TARGET_PROPERTIES(rspamd PROPERTIES LINKER_LANGUAGE C)
+SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS "-DRSPAMD_MAIN")
 IF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd-server PROPERTIES VERSION ${RSPAMD_VERSION})
+SET_TARGET_PROPERTIES(rspamd PROPERTIES VERSION ${RSPAMD_VERSION})
 ENDIF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd-server PROPERTIES LINKER_LANGUAGE C COMPILE_FLAGS "-DRSPAMD_LIB")
-TARGET_LINK_LIBRARIES(rspamd-server rspamd-lua)
-TARGET_LINK_LIBRARIES(rspamd-server rspamd-json)
-TARGET_LINK_LIBRARIES(rspamd-server rspamd-cdb)
-TARGET_LINK_LIBRARIES(rspamd-server rspamd-util)
-TARGET_LINK_LIBRARIES(rspamd-server rdns)   
-IF(CMAKE_COMPILER_IS_GNUCC)
-SET_TARGET_PROPERTIES(rspamd-server PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
-ENDIF(CMAKE_COMPILER_IS_GNUCC)
 
+TARGET_LINK_LIBRARIES(rspamd rspamd-mime)
+TARGET_LINK_LIBRARIES(rspamd rspamd-server)
+TARGET_LINK_LIBRARIES(rspamd rspamd-util)
+TARGET_LINK_LIBRARIES(rspamd rspamd-lua)
+
+TARGET_LINK_LIBRARIES(rspamd event)
+IF(HAVE_LIBEVENT2)
+       TARGET_LINK_LIBRARIES(rspamd event_pthreads)
+ENDIF(HAVE_LIBEVENT2)
 IF(WITH_DB)
-       TARGET_LINK_LIBRARIES(rspamd-server db)
+       TARGET_LINK_LIBRARIES(rspamd db)
 ENDIF(WITH_DB)
 
 IF(OPENSSL_FOUND)
-       TARGET_LINK_LIBRARIES(rspamd-server ${OPENSSL_LIBRARIES})
+       TARGET_LINK_LIBRARIES(rspamd ${OPENSSL_LIBRARIES})
 ENDIF(OPENSSL_FOUND)
+IF(HAVE_FETCH_H)
+       TARGET_LINK_LIBRARIES(rspamd fetch)
+ENDIF(HAVE_FETCH_H)
+TARGET_LINK_LIBRARIES(rspamd ${RSPAMD_REQUIRED_LIBRARIES})
 
-IF(NO_SHARED MATCHES "OFF")
-       INSTALL(TARGETS rspamd-server 
-       LIBRARY DESTINATION ${LIBDIR} 
-       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
-ENDIF(NO_SHARED MATCHES "OFF")
-    
-# Librspamdmime
-ADD_LIBRARY(rspamd-mime ${LINK_TYPE} ${LIBRSPAMDMIMESRC})
-IF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES VERSION ${RSPAMD_VERSION})
-ENDIF(NOT DEBIAN_BUILD)
-SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES LINKER_LANGUAGE C)
-SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
-TARGET_LINK_LIBRARIES(rspamd-mime rspamd-server)
-TARGET_LINK_LIBRARIES(rspamd-mime rspamd-util)      
-IF(CMAKE_COMPILER_IS_GNUCC)
-SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
-ENDIF(CMAKE_COMPILER_IS_GNUCC)
+IF(ENABLE_LUAJIT MATCHES "ON")
+       TARGET_LINK_LIBRARIES(rspamd "${LUAJIT_LIBRARY}")
+ELSE(ENABLE_LUAJIT MATCHES "ON")
+       TARGET_LINK_LIBRARIES(rspamd "${LUA_LIBRARY}")
+ENDIF(ENABLE_LUAJIT MATCHES "ON")
+
+IF(ENABLE_GPERF_TOOLS MATCHES "ON")
+       TARGET_LINK_LIBRARIES(rspamd profiler)
+ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
+TARGET_LINK_LIBRARIES(rspamd hiredis)
+IF(GLIB_COMPAT)
+       TARGET_LINK_LIBRARIES(rspamd glibadditions)
+ENDIF(GLIB_COMPAT)
 
-IF(NO_SHARED MATCHES "OFF")
-       INSTALL(TARGETS rspamd-mime 
-               LIBRARY DESTINATION ${LIBDIR}  
-       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
-ENDIF(NO_SHARED MATCHES "OFF")
 
-INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/src")
\ No newline at end of file
+INSTALL(TARGETS rspamd RUNTIME DESTINATION bin)
\ No newline at end of file
diff --git a/src/dns_private.h b/src/dns_private.h
deleted file mode 100644 (file)
index 1c1df8d..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Copyright (c) 2014, Vsevolod Stakhov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *       * Redistributions of source code must retain the above copyright
- *         notice, this list of conditions and the following disclaimer.
- *       * Redistributions in binary form must reproduce the above copyright
- *         notice, this list of conditions and the following disclaimer in the
- *         documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DNS_PRIVATE_H_
-#define DNS_PRIVATE_H_
-
-#include "config.h"
-
-#define MAX_SERVERS 16
-/* Upstream timeouts */
-#define DEFAULT_UPSTREAM_ERROR_TIME 10
-#define DEFAULT_UPSTREAM_DEAD_TIME 300
-#define DEFAULT_UPSTREAM_MAXERRORS 10
-
-static const unsigned base = 36;
-static const unsigned t_min = 1;
-static const unsigned t_max = 26;
-static const unsigned skew = 38;
-static const unsigned damp = 700;
-static const unsigned initial_n = 128;
-static const unsigned initial_bias = 72;
-
-static const gint dns_port = 53;
-
-#define UDP_PACKET_SIZE 4096
-
-#define DNS_COMPRESSION_BITS 0xC0
-
-#define DNS_D_MAXLABEL  63      /* + 1 '\0' */
-#define DNS_D_MAXNAME   255     /* + 1 '\0' */
-
-#define RESOLV_CONF "/etc/resolv.conf"
-
-/**
- * Represents DNS server
- */
-struct rspamd_dns_server {
-       struct upstream up; /**< upstream structure                                         */
-       gchar *name; /**< name of DNS server                                         */
-       struct rspamd_dns_io_channel *io_channels;
-       struct rspamd_dns_io_channel *cur_io_channel;
-};
-
-/**
- * IO channel for a specific DNS server
- */
-struct rspamd_dns_io_channel {
-       struct rspamd_dns_server *srv;
-       struct rspamd_dns_resolver *resolver;
-       gint sock; /**< persistent socket                                          */
-       struct event ev;
-       GHashTable *requests; /**< requests in flight                                         */
-       struct rspamd_dns_io_channel *prev, *next;
-};
-
-
-struct rspamd_dns_resolver {
-       struct rspamd_dns_server servers[MAX_SERVERS];
-       gint servers_num; /**< number of DNS servers registered           */
-       guint request_timeout;
-       guint max_retransmits;
-       guint max_errors;
-       GHashTable *io_channels; /**< hash of io chains indexed by socket        */
-       gboolean throttling; /**< dns servers are busy                                       */
-       gboolean is_master_slave; /**< if this is true, then select upstreams as master/slave */
-       guint errors; /**< resolver errors                                            */
-       struct timeval throttling_time; /**< throttling time                                            */
-       struct event throttling_event; /**< throttling event                                           */
-       struct event_base *ev_base; /**< base for event ops                                         */
-};
-
-struct dns_header;
-struct dns_query;
-
-/* Internal DNS structs */
-
-struct dns_header {
-       guint qid :16;
-
-#if BYTE_ORDER == BIG_ENDIAN
-       guint qr:1;
-       guint opcode:4;
-       guint aa:1;
-       guint tc:1;
-       guint rd:1;
-
-       guint ra:1;
-       guint unused:3;
-       guint rcode:4;
-#else
-       guint rd :1;
-       guint tc :1;
-       guint aa :1;
-       guint opcode :4;
-       guint qr :1;
-
-       guint rcode :4;
-       guint unused :3;
-       guint ra :1;
-#endif
-
-       guint qdcount :16;
-       guint ancount :16;
-       guint nscount :16;
-       guint arcount :16;
-};
-
-enum dns_section {
-       DNS_S_QD = 0x01,
-#define DNS_S_QUESTION          DNS_S_QD
-
-       DNS_S_AN = 0x02,
-#define DNS_S_ANSWER            DNS_S_AN
-
-       DNS_S_NS = 0x04,
-#define DNS_S_AUTHORITY         DNS_S_NS
-
-       DNS_S_AR = 0x08,
-#define DNS_S_ADDITIONAL        DNS_S_AR
-
-       DNS_S_ALL = 0x0f
-};
-/* enum dns_section */
-
-enum dns_opcode {
-       DNS_OP_QUERY = 0,
-       DNS_OP_IQUERY = 1,
-       DNS_OP_STATUS = 2,
-       DNS_OP_NOTIFY = 4,
-       DNS_OP_UPDATE = 5,
-};
-/* dns_opcode */
-
-enum dns_class {
-       DNS_C_IN = 1,
-
-       DNS_C_ANY = 255
-};
-/* enum dns_class */
-
-struct dns_query {
-       gchar *qname;
-       guint qtype :16;
-       guint qclass :16;
-};
-
-enum dns_type {
-       DNS_T_A = 1,
-       DNS_T_NS = 2,
-       DNS_T_CNAME = 5,
-       DNS_T_SOA = 6,
-       DNS_T_PTR = 12,
-       DNS_T_MX = 15,
-       DNS_T_TXT = 16,
-       DNS_T_AAAA = 28,
-       DNS_T_SRV = 33,
-       DNS_T_OPT = 41,
-       DNS_T_SSHFP = 44,
-       DNS_T_SPF = 99,
-
-       DNS_T_ALL = 255
-};
-/* enum dns_type */
-
-static const gchar dns_rcodes[16][16] = {
-       [DNS_RC_NOERROR]  = "NOERROR",
-       [DNS_RC_FORMERR]  = "FORMERR",
-       [DNS_RC_SERVFAIL] = "SERVFAIL",
-       [DNS_RC_NXDOMAIN] = "NXDOMAIN",
-       [DNS_RC_NOTIMP]   = "NOTIMP",
-       [DNS_RC_REFUSED]  = "REFUSED",
-       [DNS_RC_YXDOMAIN] = "YXDOMAIN",
-       [DNS_RC_YXRRSET]  = "YXRRSET",
-       [DNS_RC_NXRRSET]  = "NXRRSET",
-       [DNS_RC_NOTAUTH]  = "NOTAUTH",
-       [DNS_RC_NOTZONE]  = "NOTZONE",
-};
-
-static const gchar dns_types[7][16] = {
-               [DNS_REQUEST_A] = "A request",
-               [DNS_REQUEST_PTR] = "PTR request",
-               [DNS_REQUEST_MX] = "MX request",
-               [DNS_REQUEST_TXT] = "TXT request",
-               [DNS_REQUEST_SRV] = "SRV request",
-               [DNS_REQUEST_SPF] = "SPF request",
-               [DNS_REQUEST_AAA] = "AAA request"
-};
-
-#endif /* DNS_PRIVATE_H_ */
diff --git a/src/libmime/CMakeLists.txt b/src/libmime/CMakeLists.txt
new file mode 100644 (file)
index 0000000..303b7a0
--- /dev/null
@@ -0,0 +1,29 @@
+# Librspamd mime
+SET(LIBRSPAMDMIMESRC
+                               expressions.c
+                               filter.c
+                               images.c
+                               message.c
+                               protocol.c
+                               smtp_utils.c
+                               smtp_proto.c
+                               worker_util.c)
+
+# Librspamdmime
+ADD_LIBRARY(rspamd-mime ${LINK_TYPE} ${LIBRSPAMDMIMESRC})
+IF(NOT DEBIAN_BUILD)
+SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES VERSION ${RSPAMD_VERSION})
+ENDIF(NOT DEBIAN_BUILD)
+SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES LINKER_LANGUAGE C)
+SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
+TARGET_LINK_LIBRARIES(rspamd-mime rspamd-server)
+TARGET_LINK_LIBRARIES(rspamd-mime rspamd-util)      
+IF(CMAKE_COMPILER_IS_GNUCC)
+SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
+ENDIF(CMAKE_COMPILER_IS_GNUCC)
+
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-mime 
+               LIBRARY DESTINATION ${LIBDIR}  
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
\ No newline at end of file
similarity index 100%
rename from src/expressions.c
rename to src/libmime/expressions.c
similarity index 100%
rename from src/expressions.h
rename to src/libmime/expressions.h
similarity index 100%
rename from src/filter.c
rename to src/libmime/filter.c
similarity index 100%
rename from src/filter.h
rename to src/libmime/filter.h
similarity index 100%
rename from src/images.c
rename to src/libmime/images.c
similarity index 100%
rename from src/images.h
rename to src/libmime/images.h
similarity index 100%
rename from src/message.c
rename to src/libmime/message.c
similarity index 100%
rename from src/message.h
rename to src/libmime/message.h
similarity index 100%
rename from src/protocol.c
rename to src/libmime/protocol.c
similarity index 100%
rename from src/protocol.h
rename to src/libmime/protocol.h
similarity index 100%
rename from src/smtp_proto.c
rename to src/libmime/smtp_proto.c
similarity index 100%
rename from src/smtp_proto.h
rename to src/libmime/smtp_proto.h
similarity index 100%
rename from src/smtp_utils.c
rename to src/libmime/smtp_utils.c
similarity index 100%
rename from src/smtp_utils.h
rename to src/libmime/smtp_utils.h
similarity index 100%
rename from src/worker_util.c
rename to src/libmime/worker_util.c
diff --git a/src/libserver/CMakeLists.txt b/src/libserver/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bd5df18
--- /dev/null
@@ -0,0 +1,63 @@
+# Librspamdserver
+SET(LIBRSPAMDSERVERSRC
+                               binlog.c
+                               buffer.c
+                               cfg_utils.c
+                               cfg_rcl.c
+                               dkim.c
+                               dns.c
+                               dynamic_cfg.c
+                               events.c
+                               html.c
+                               proxy.c
+                               roll_history.c
+                               settings.c
+                               spf.c
+                               statfile.c
+                               statfile_sync.c
+                               symbols_cache.c
+                               task.c
+                               url.c)
+SET(TOKENIZERSSRC  ../tokenizers/tokenizers.c
+                               ../tokenizers/osb.c)
+
+SET(CLASSIFIERSSRC ../classifiers/classifiers.c
+                ../classifiers/bayes.c
+                               ../classifiers/winnow.c)
+
+# Librspamd-server
+
+#IF(WITH_DB)
+#      LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_bdb.c)
+#ENDIF(WITH_DB)
+#IF(WITH_SQLITE)
+#      LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_sqlite.c)
+#ENDIF(WITH_SQLITE)
+                               
+ADD_LIBRARY(rspamd-server ${LINK_TYPE} ${LIBRSPAMDSERVERSRC} ${TOKENIZERSSRC} ${CLASSIFIERSSRC})
+IF(NOT DEBIAN_BUILD)
+SET_TARGET_PROPERTIES(rspamd-server PROPERTIES VERSION ${RSPAMD_VERSION})
+ENDIF(NOT DEBIAN_BUILD)
+SET_TARGET_PROPERTIES(rspamd-server PROPERTIES LINKER_LANGUAGE C COMPILE_FLAGS "-DRSPAMD_LIB")
+TARGET_LINK_LIBRARIES(rspamd-server rspamd-lua)
+TARGET_LINK_LIBRARIES(rspamd-server rspamd-json)
+TARGET_LINK_LIBRARIES(rspamd-server rspamd-cdb)
+TARGET_LINK_LIBRARIES(rspamd-server rspamd-util)
+TARGET_LINK_LIBRARIES(rspamd-server rdns)   
+IF(CMAKE_COMPILER_IS_GNUCC)
+SET_TARGET_PROPERTIES(rspamd-server PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
+ENDIF(CMAKE_COMPILER_IS_GNUCC)
+
+IF(WITH_DB)
+       TARGET_LINK_LIBRARIES(rspamd-server db)
+ENDIF(WITH_DB)
+
+IF(OPENSSL_FOUND)
+       TARGET_LINK_LIBRARIES(rspamd-server ${OPENSSL_LIBRARIES})
+ENDIF(OPENSSL_FOUND)
+
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-server 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
\ No newline at end of file
similarity index 100%
rename from src/binlog.c
rename to src/libserver/binlog.c
similarity index 100%
rename from src/binlog.h
rename to src/libserver/binlog.h
similarity index 100%
rename from src/buffer.c
rename to src/libserver/buffer.c
similarity index 100%
rename from src/buffer.h
rename to src/libserver/buffer.h
similarity index 100%
rename from src/cfg_file.h
rename to src/libserver/cfg_file.h
similarity index 100%
rename from src/cfg_rcl.c
rename to src/libserver/cfg_rcl.c
similarity index 100%
rename from src/cfg_rcl.h
rename to src/libserver/cfg_rcl.h
similarity index 100%
rename from src/cfg_utils.c
rename to src/libserver/cfg_utils.c
similarity index 100%
rename from src/dkim.c
rename to src/libserver/dkim.c
similarity index 100%
rename from src/dkim.h
rename to src/libserver/dkim.h
similarity index 100%
rename from src/dns.c
rename to src/libserver/dns.c
similarity index 100%
rename from src/dns.h
rename to src/libserver/dns.h
similarity index 100%
rename from src/events.c
rename to src/libserver/events.c
similarity index 100%
rename from src/events.h
rename to src/libserver/events.h
similarity index 100%
rename from src/html.c
rename to src/libserver/html.c
similarity index 100%
rename from src/html.h
rename to src/libserver/html.h
similarity index 100%
rename from src/proxy.c
rename to src/libserver/proxy.c
similarity index 100%
rename from src/proxy.h
rename to src/libserver/proxy.h
similarity index 100%
rename from src/settings.c
rename to src/libserver/settings.c
similarity index 100%
rename from src/settings.h
rename to src/libserver/settings.h
similarity index 100%
rename from src/spf.c
rename to src/libserver/spf.c
similarity index 100%
rename from src/spf.h
rename to src/libserver/spf.h
similarity index 100%
rename from src/statfile.c
rename to src/libserver/statfile.c
similarity index 100%
rename from src/statfile.h
rename to src/libserver/statfile.h
similarity index 100%
rename from src/task.c
rename to src/libserver/task.c
similarity index 100%
rename from src/task.h
rename to src/libserver/task.h
similarity index 100%
rename from src/url.c
rename to src/libserver/url.c
similarity index 100%
rename from src/url.h
rename to src/libserver/url.h
diff --git a/src/libutil/CMakeLists.txt b/src/libutil/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2a5ab46
--- /dev/null
@@ -0,0 +1,50 @@
+# Librspamd-util
+SET(LIBRSPAMDUTILSRC                   aio_event.c
+                                                               bloom.c
+                                                               diff.c
+                                                               fstring.c
+                                                               fuzzy.c
+                                                               hash.c
+                                                               http.c
+                                                               logger.c
+                                                               map.c
+                                                               memcached.c
+                                                               mem_pool.c
+                                                               printf.c
+                                                               radix.c
+                                                               rrd.c
+                                                               trie.c
+                                                               upstream.c
+                                                               util.c)
+# Rspamdutil
+ADD_LIBRARY(rspamd-util ${LINK_TYPE} ${LIBRSPAMDUTILSRC})
+IF(CMAKE_COMPILER_IS_GNUCC)
+SET_TARGET_PROPERTIES(rspamd-util PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing")
+ENDIF(CMAKE_COMPILER_IS_GNUCC)
+
+
+TARGET_LINK_LIBRARIES(rspamd-util ${RSPAMD_REQUIRED_LIBRARIES})
+TARGET_LINK_LIBRARIES(rspamd-util pcre)
+TARGET_LINK_LIBRARIES(rspamd-util ucl)
+TARGET_LINK_LIBRARIES(rspamd-util ottery)
+TARGET_LINK_LIBRARIES(rspamd-util rspamd-http-parser)
+TARGET_LINK_LIBRARIES(rspamd-util event)
+TARGET_LINK_LIBRARIES(rspamd-util xxhash)
+IF(OPENSSL_FOUND)
+       TARGET_LINK_LIBRARIES(rspamd-util ${OPENSSL_LIBRARIES})
+ENDIF(OPENSSL_FOUND)
+
+IF(NOT DEBIAN_BUILD)
+SET_TARGET_PROPERTIES(rspamd-util PROPERTIES VERSION ${RSPAMD_VERSION})
+ENDIF(NOT DEBIAN_BUILD)
+
+IF(GLIB_COMPAT)
+       INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/contrib/lgpl")
+       TARGET_LINK_LIBRARIES(rspamd-util glibadditions)
+ENDIF(GLIB_COMPAT)
+
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-util 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION include)
+ENDIF(NO_SHARED MATCHES "OFF")
\ No newline at end of file
similarity index 100%
rename from src/aio_event.c
rename to src/libutil/aio_event.c
similarity index 100%
rename from src/aio_event.h
rename to src/libutil/aio_event.h
similarity index 100%
rename from src/bloom.c
rename to src/libutil/bloom.c
similarity index 100%
rename from src/bloom.h
rename to src/libutil/bloom.h
similarity index 100%
rename from src/diff.c
rename to src/libutil/diff.c
similarity index 100%
rename from src/diff.h
rename to src/libutil/diff.h
similarity index 100%
rename from src/fstring.c
rename to src/libutil/fstring.c
similarity index 100%
rename from src/fstring.h
rename to src/libutil/fstring.h
similarity index 100%
rename from src/fuzzy.c
rename to src/libutil/fuzzy.c
similarity index 100%
rename from src/fuzzy.h
rename to src/libutil/fuzzy.h
similarity index 100%
rename from src/hash.c
rename to src/libutil/hash.c
similarity index 100%
rename from src/hash.h
rename to src/libutil/hash.h
similarity index 100%
rename from src/http.c
rename to src/libutil/http.c
similarity index 100%
rename from src/http.h
rename to src/libutil/http.h
similarity index 100%
rename from src/logger.c
rename to src/libutil/logger.c
similarity index 100%
rename from src/logger.h
rename to src/libutil/logger.h
similarity index 100%
rename from src/map.c
rename to src/libutil/map.c
similarity index 100%
rename from src/map.h
rename to src/libutil/map.h
similarity index 100%
rename from src/mem_pool.c
rename to src/libutil/mem_pool.c
similarity index 100%
rename from src/mem_pool.h
rename to src/libutil/mem_pool.h
similarity index 100%
rename from src/memcached.c
rename to src/libutil/memcached.c
similarity index 100%
rename from src/memcached.h
rename to src/libutil/memcached.h
similarity index 100%
rename from src/printf.c
rename to src/libutil/printf.c
similarity index 100%
rename from src/printf.h
rename to src/libutil/printf.h
similarity index 100%
rename from src/radix.c
rename to src/libutil/radix.c
similarity index 100%
rename from src/radix.h
rename to src/libutil/radix.h
similarity index 100%
rename from src/rrd.c
rename to src/libutil/rrd.c
similarity index 100%
rename from src/rrd.h
rename to src/libutil/rrd.h
similarity index 100%
rename from src/trie.c
rename to src/libutil/trie.c
similarity index 100%
rename from src/trie.h
rename to src/libutil/trie.h
similarity index 100%
rename from src/upstream.c
rename to src/libutil/upstream.c
similarity index 100%
rename from src/upstream.h
rename to src/libutil/upstream.h
similarity index 100%
rename from src/util.c
rename to src/libutil/util.c
similarity index 100%
rename from src/util.h
rename to src/libutil/util.h