CHECK_SYMBOL_EXISTS(sched_yield "sched.h" HAVE_SCHED_YIELD) | CHECK_SYMBOL_EXISTS(sched_yield "sched.h" HAVE_SCHED_YIELD) | ||||
CHECK_SYMBOL_EXISTS(__get_cpuid "cpuid.h" HAVE_GET_CPUID) | CHECK_SYMBOL_EXISTS(__get_cpuid "cpuid.h" HAVE_GET_CPUID) | ||||
CHECK_SYMBOL_EXISTS(nftw "sys/types.h;ftw.h" HAVE_NFTW) | CHECK_SYMBOL_EXISTS(nftw "sys/types.h;ftw.h" HAVE_NFTW) | ||||
CHECK_SYMBOL_EXISTS(memrchr "string.h" HAVE_MEMRCHR) | |||||
IF(ENABLE_PCRE2 MATCHES "ON") | IF(ENABLE_PCRE2 MATCHES "ON") | ||||
LIST(APPEND CMAKE_REQUIRED_INCLUDES "${PCRE_INCLUDE}") | LIST(APPEND CMAKE_REQUIRED_INCLUDES "${PCRE_INCLUDE}") | ||||
CHECK_SYMBOL_EXISTS(PCRE2_CONFIG_JIT "pcre2.h" HAVE_PCRE_JIT) | CHECK_SYMBOL_EXISTS(PCRE2_CONFIG_JIT "pcre2.h" HAVE_PCRE_JIT) |
# Platform specific configuration | # Platform specific configuration | ||||
IF(CMAKE_SYSTEM_NAME MATCHES "^.*BSD$|DragonFly") | IF(CMAKE_SYSTEM_NAME MATCHES "^.*BSD$|DragonFly") | ||||
ADD_COMPILE_OPTIONS(-DFREEBSD -D_BSD_SOURCE) | ADD_COMPILE_OPTIONS(-DFREEBSD -D_BSD_SOURCE) | ||||
SET(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_BSD_SOURCE") | |||||
CONFIGURE_FILE(freebsd/rspamd.sh.in freebsd/rspamd @ONLY) | CONFIGURE_FILE(freebsd/rspamd.sh.in freebsd/rspamd @ONLY) | ||||
MESSAGE(STATUS "Configuring for BSD system") | MESSAGE(STATUS "Configuring for BSD system") | ||||
# Find util library | # Find util library | ||||
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") | IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||||
ADD_COMPILE_OPTIONS(-D_GNU_SOURCE -DLINUX) | ADD_COMPILE_OPTIONS(-D_GNU_SOURCE -DLINUX) | ||||
SET(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE") | |||||
# Workaround with architecture specific includes | # Workaround with architecture specific includes | ||||
#IF(IS_DIRECTORY "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") | #IF(IS_DIRECTORY "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") | ||||
# INCLUDE_DIRECTORIES("/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") | # INCLUDE_DIRECTORIES("/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") |
#cmakedefine HAVE_MACHINE_ENDIAN_H 1 | #cmakedefine HAVE_MACHINE_ENDIAN_H 1 | ||||
#cmakedefine HAVE_MAXPATHLEN 1 | #cmakedefine HAVE_MAXPATHLEN 1 | ||||
#cmakedefine HAVE_FMEMOPEN 1 | #cmakedefine HAVE_FMEMOPEN 1 | ||||
#cmakedefine HAVE_MEMRCHR 1 | |||||
#cmakedefine HAVE_MEMSET_S 1 | #cmakedefine HAVE_MEMSET_S 1 | ||||
#cmakedefine HAVE_MKSTEMP 1 | #cmakedefine HAVE_MKSTEMP 1 | ||||
#cmakedefine HAVE_MMAP_ANON 1 | #cmakedefine HAVE_MMAP_ANON 1 |
ucl_object_emit_full (obj, emit_type, &func, comments); | ucl_object_emit_full (obj, emit_type, &func, comments); | ||||
} | } | ||||
const void * | |||||
#ifndef HAVE_MEMRCHR | |||||
void * | |||||
rspamd_memrchr (const void *m, gint c, gsize len) | rspamd_memrchr (const void *m, gint c, gsize len) | ||||
{ | { | ||||
const guint8 *p = m; | const guint8 *p = m; | ||||
gsize i; | |||||
for (i = len; i > 0; i --) { | |||||
for (gsize i = len; i > 0; i --) { | |||||
if (p[i - 1] == c) { | if (p[i - 1] == c) { | ||||
return p + i - 1; | |||||
return (void *)(p + i - 1); | |||||
} | } | ||||
} | } | ||||
return NULL; | return NULL; | ||||
} | } | ||||
#endif | |||||
struct UConverter * | struct UConverter * | ||||
rspamd_get_utf8_converter (void) | rspamd_get_utf8_converter (void) |
* @param len | * @param len | ||||
* @return pointer to the last occurrence or NULL | * @return pointer to the last occurrence or NULL | ||||
*/ | */ | ||||
const void *rspamd_memrchr (const void *m, gint c, gsize len); | |||||
#ifdef HAVE_MEMRCHR | |||||
#define rspamd_memrchr memrchr | |||||
#else | |||||
void *rspamd_memrchr (const void *m, gint c, gsize len); | |||||
#endif | |||||
/** | /** | ||||
* Return length of memory segment starting in `s` that contains no chars from `e` | * Return length of memory segment starting in `s` that contains no chars from `e` |