IF(LUA_LIBRARY AND LUA_INCLUDE_DIR)
SET(LUA_FOUND 1)
IF(NOT LUA_VERSION_MAJOR OR NOT LUA_VERSION_MINOR)
- SET(CACHE LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR})
- SET(CACHE LUA_VERSION_MINOR ${LUA_VERSION_MINOR})
+ SET(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR})
+ SET(LUA_VERSION_MINOR ${LUA_VERSION_MINOR})
ENDIF(NOT LUA_VERSION_MAJOR OR NOT LUA_VERSION_MINOR)
IF(ENABLE_LUAJIT MATCHES "ON")
MESSAGE(STATUS "Found luajit ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
IF(${PKG_NAME}_FOUND)
MESSAGE(STATUS "Found package ${PKG_NAME} in pkg-config modules ${PKG_MODULES}")
- SET(WITH_${PKG_NAME} 1)
+ SET(WITH_${PKG_NAME} 1 CACHE INTERNAL "")
IF(ENABLE_STATIC MATCHES "ON")
SET(_XPREFIX "${PKG_NAME}_STATIC")
ELSE(ENABLE_STATIC MATCHES "ON")
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${${_XPREFIX}_LIBRARIES}")
INCLUDE_DIRECTORIES(${${_XPREFIX}_INCLUDEDIR})
ELSE()
- # Try some more heuristic
- FIND_LIBRARY(_lib NAMES ${PKG_LIBRARY}
- HINTS "${PKG_ROOT}" "${RSPAMD_SEARCH_PATH}"
- PATH_SUFFIXES "${PKG_LIB_SUFFIXES}" lib64 lib
- PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS})
- IF(NOT _lib)
- IF(OPTIONAL)
- MESSAGE("Cannot find library ${PKG_LIBRARY} for package ${PKG_NAME}")
- ELSE()
- MESSAGE(FATAL_ERROR "Cannot find library ${PKG_LIBRARY} for package ${PKG_NAME}")
- ENDIF()
- ENDIF(NOT _lib)
-
- FIND_PATH(_incl "${PKG_INCLUDE}"
+ IF(NOT ${PKG_NAME}_GUESSED)
+ # Try some more heuristic
+ FIND_LIBRARY(_lib NAMES ${PKG_LIBRARY}
HINTS "${PKG_ROOT}" "${RSPAMD_SEARCH_PATH}"
- PATH_SUFFIXES "${PKG_INCLUDE_SUFFIXES}" "include"
- PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS})
- IF(NOT _incl)
- IF(OPTIONAL)
- MESSAGE("Cannot find header ${PKG_INCLUDE} for package ${PKG_NAME}")
- ELSE()
- MESSAGE(FATAL_ERROR "Cannot find header ${PKG_INCLUDE} for package ${PKG_NAME}")
+ PATH_SUFFIXES "${PKG_LIB_SUFFIXES}" lib64 lib
+ PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS})
+ IF(NOT _lib)
+ IF(OPTIONAL)
+ MESSAGE("Cannot find library ${PKG_LIBRARY} for package ${PKG_NAME}")
+ ELSE()
+ MESSAGE(FATAL_ERROR "Cannot find library ${PKG_LIBRARY} for package ${PKG_NAME}")
+ ENDIF()
+ ENDIF(NOT _lib)
+
+ FIND_PATH(_incl "${PKG_INCLUDE}"
+ HINTS "${PKG_ROOT}" "${RSPAMD_SEARCH_PATH}"
+ PATH_SUFFIXES "${PKG_INCLUDE_SUFFIXES}" "include"
+ PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS})
+ IF(NOT _incl)
+ IF(OPTIONAL)
+ MESSAGE("Cannot find header ${PKG_INCLUDE} for package ${PKG_NAME}")
+ ELSE()
+ MESSAGE(FATAL_ERROR "Cannot find header ${PKG_INCLUDE} for package ${PKG_NAME}")
+ ENDIF()
+ ENDIF(NOT _incl)
+
+ IF(_incl AND _lib)
+ GET_FILENAME_COMPONENT(_lib_path "${_lib}" PATH)
+ INCLUDE_DIRECTORIES("${_incl}")
+ LINK_DIRECTORIES("${_lib_path}")
+ LIST(APPEND RSPAMD_REQUIRED_LIBRARIES ${_lib})
+ SET(${PKG_NAME}_INCLUDE "${_incl}" CACHE INTERNAL "")
+ SET(${PKG_NAME}_LIBRARY_PATH "${_lib_path}" CACHE INTERNAL "")
+ SET(${PKG_NAME}_LIBRARY "${_lib}" CACHE INTERNAL "")
+ SET(${PKG_NAME}_GUESSED 1 CACHE INTERNAL "")
+ SET(WITH_${PKG_NAME} 1 CACHE INTERNAL "")
+ MESSAGE(STATUS "Found package ${PKG_NAME} in '${_lib_path}' (${_lib}) and '${_incl}' (${PKG_INCLUDE}).")
ENDIF()
- ENDIF(NOT _incl)
- IF(_incl AND _lib)
- GET_FILENAME_COMPONENT(_lib_path "${_lib}" PATH)
- INCLUDE_DIRECTORIES("${_incl}")
- LINK_DIRECTORIES("${_lib_path}")
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES ${_lib})
- SET(${PKG_NAME}_INCLUDE "${_incl}")
- SET(${PKG_NAME}_LIBRARY "${_lib_path}")
- SET(${PKG_NAME}_FOUND 1)
- MESSAGE(STATUS "Found package ${PKG_NAME} in '${_lib_path}' (${_lib}) and '${_incl}' (${PKG_INCLUDE}).")
+ ELSE()
+ MESSAGE(STATUS "Found package ${PKG_NAME} (cached)")
+ INCLUDE_DIRECTORIES("${${PKG_NAME}_INCLUDE}")
+ LINK_DIRECTORIES("${${PKG_NAME}_LIBRARY_PATH}")
+ LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${${PKG_NAME}_LIBRARY}")
ENDIF()
ENDIF(${PKG_NAME}_FOUND)
# Find util library
ProcessPackage(LIBUTIL LIBRARY util INCLUDE libutil.h
ROOT ${LIBUTIL_ROOT_DIR} OPTIONAL)
- IF(LIBUTIL_FOUND)
+ IF(WITH_LIBUTIL)
SET(HAVE_LIBUTIL_H 1)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES util)
LIST(APPEND CMAKE_REQUIRED_LIBRARIES util)
ROOT ${OPENSSL_ROOT_DIR} MODULES openssl)
#Check for openssl (required for dkim)
-IF(OPENSSL_FOUND)
+IF(WITH_OPENSSL)
SET(HAVE_OPENSSL 1)
-ENDIF(OPENSSL_FOUND)
+ENDIF(WITH_OPENSSL)
IF(GMIME2_VERSION VERSION_GREATER "2.4.0" OR NOT GMIME2_VERSION)
SET(GMIME24 1)
IF(ENABLE_HIREDIS MATCHES "ON")
ProcessPackage(HIREDIS LIBRARY hiredis INCLUDE hiredis.h INCLUDE_SUFFIXES include/hiredis
ROOT ${HIREDIS_ROOT_DIR} MODULES hiredis libhiredis)
- SET(WITH_HIREDIS 1)
ENDIF(ENABLE_HIREDIS MATCHES "ON")
return cmkcheckweak == NULL;
}" HAVE_WEAK_SYMBOLS)
-IF(ICONV_FOUND)
+IF(WITH_ICONV)
CHECK_C_SOURCE_COMPILES("
#include <iconv.h>
int main(){
return 0;
}
" ICONV_SECOND_ARGUMENT_IS_CONST)
-ENDIF(ICONV_FOUND)
+ENDIF(WITH_ICONV)
# Check macros
CHECK_SYMBOL_EXISTS(PATH_MAX limits.h HAVE_PATH_MAX)
"${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/pthread_setpshared.c"
CMAKE_FLAGS CMAKE_C_FLAGS="-pthread")
IF(_CAN_RUN EQUAL 1)
- SET(HAVE_PTHREAD_PROCESS_SHARED 1)
+ SET(HAVE_PTHREAD_PROCESS_SHARED 1 CACHE INTERNAL "")
ENDIF(_CAN_RUN EQUAL 1)
IF(HAVE_PTHREAD_PROCESS_SHARED)
MESSAGE(STATUS "pthread_mutexattr_setpshared is supported")
# Try to find libcurl
ProcessPackage(CURL LIBRARY curl INCLUDE curl.h INCLUDE_SUFFIXES include/curl
ROOT ${CURL_ROOT})
- IF(NOT CURL_FOUND)
+ IF(NOT WITH_CURL)
MESSAGE(WARNING "Neither libcurl nor libfetch were found, no support of URL includes in configuration")
- ENDIF(NOT CURL_FOUND)
+ ENDIF(NOT WITH_CURL)
ENDIF(LIBFETCH_LIBRARY)
ENDIF(ENABLE_URL_INCLUDE MATCHES "ON")
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES event)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES xxhash)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES blake2)
-LIST(APPEND RSPAMD_REQUIRED_LIBRARIES sqlite3)
-IF(OPENSSL_FOUND)
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
-ENDIF(OPENSSL_FOUND)
IF(HAVE_FETCH_H)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES fetch)
ENDIF(HAVE_FETCH_H)
-LIST(APPEND RSPAMD_REQUIRED_LIBRARIES event)
-IF(HAVE_LIBEVENT2)
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES event_pthreads)
-ENDIF(HAVE_LIBEVENT2)
IF(WITH_DB)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES db)
ENDIF(WITH_DB)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${LUA_LIBRARY}")
-IF(ENABLE_GPERF_TOOLS MATCHES "ON")
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES profiler)
-ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
-
-IF(ENABLE_HIREDIS MATCHES "ON")
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES hiredis)
-ENDIF(ENABLE_HIREDIS MATCHES "ON")
IF(GLIB_COMPAT)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES glibadditions)
ENDIF(GLIB_COMPAT)
IF(NOT DEBIAN_BUILD)
ADD_CUSTOM_TARGET(check DEPENDS rspamd-test)
ADD_CUSTOM_TARGET(run-test DEPENDS check COMMAND test/rspamd-test)
-ENDIF(NOT DEBIAN_BUILD)
+ENDIF(NOT DEBIAN_BUILD)
\ No newline at end of file
# For now we support only x86_64 architecture with optimizations
IF(${ARCH} STREQUAL "x86_64")
- ASM_OP(HAVE_AVX2 "vpaddq %ymm0, %ymm0, %ymm0" "avx2")
- ASM_OP(HAVE_AVX "vpaddq %xmm0, %xmm0, %xmm0" "avx")
- ASM_OP(HAVE_SSE2 "pmuludq %xmm0, %xmm0" "sse2")
- ASM_OP(HAVE_SSE3 "lddqu 0(%esi), %xmm0" "sse3")
- ASM_OP(HAVE_SSSE3 "pshufb %xmm0, %xmm0" "ssse3")
- ASM_OP(HAVE_SSE41 "pblendw \$0, %xmm0, %xmm0" "sse41")
+ SET(ASM_CODE "vpaddq %ymm0, %ymm0, %ymm0")
+ ASM_OP(HAVE_AVX2 "avx2")
+ SET(ASM_CODE "vpaddq %xmm0, %xmm0, %xmm0")
+ ASM_OP(HAVE_AVX "avx")
+ SET(ASM_CODE "pmuludq %xmm0, %xmm0")
+ ASM_OP(HAVE_SSE2 "sse2")
+ SET(ASM_CODE "lddqu 0(%esi), %xmm0")
+ ASM_OP(HAVE_SSE3 "sse3")
+ SET(ASM_CODE "pshufb %xmm0, %xmm0")
+ ASM_OP(HAVE_SSSE3 "ssse3")
+ SET(ASM_CODE "pblendw \$0, %xmm0, %xmm0")
+ ASM_OP(HAVE_SSE41 "sse41")
- ASM_OP(HAVE_SLASHMACRO "
+ SET(ASM_CODE "
.macro TEST1 op
\\op %eax, %eax
.endm
TEST1 xorl
- " "slash macro convention")
+ ")
+ ASM_OP(HAVE_SLASHMACRO "slash macro convention")
- ASM_OP(HAVE_DOLLARMACRO "
+ SET(ASM_CODE "
.macro TEST1 op
$0 %eax, %eax
.endm
TEST1 xorl
- " "dollar macro convention")
+ ")
+ ASM_OP(HAVE_DOLLARMACRO "dollar macro convention")
SET(CURVESRC ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/curve25519-donna-c64.c)
SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/ref-64.c)