summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-27 14:21:27 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-27 14:21:27 +0300
commita83e5f18a2b6d9dc3196045867bcd842cfea3323 (patch)
tree5272d1159063abc10b92033f0a914aa2d36d06d2 /CMakeLists.txt
parentfdccb337ed73f14b204721cf464ca03a7eca49b6 (diff)
downloadrspamd-a83e5f18a2b6d9dc3196045867bcd842cfea3323.tar.gz
rspamd-a83e5f18a2b6d9dc3196045867bcd842cfea3323.zip
* Add ability to build rspamd without perl support
* Fix creating of uinx socket * Improve some build issues
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt112
1 files changed, 68 insertions, 44 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc9f50f8b..07e61b18b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,6 +18,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
OPTION(DEBUG_MODE "Enable debug output [default: ON]" ON)
OPTION(ENABLE_OPTIMIZATION "Enable optimization [default: OFF]" OFF)
+OPTION(ENABLE_PERL "Enable perl support [default: ON]" ON)
OPTION(SKIP_RELINK_RPATH "Skip relinking and full RPATH for the install tree" OFF)
OPTION(ENABLE_REDIRECTOR "Enable redirector install [default: OFF]" OFF)
@@ -32,27 +33,33 @@ INCLUDE(CheckFunctionExists)
INCLUDE(CheckSymbolExists)
INCLUDE(CheckLibraryExists)
INCLUDE(FindPkgConfig)
-INCLUDE(FindPerl)
-
-IF(NOT PERL_EXECUTABLE)
- MESSAGE(FATAL_ERROR "Error: Perl is not found but is required")
-ENDIF(NOT PERL_EXECUTABLE)
-
-# Find perl libraries and cflags
-EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ccopts OUTPUT_VARIABLE PERL_CFLAGS)
-EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ldopts OUTPUT_VARIABLE PERL_LDFLAGS)
-STRING(REGEX REPLACE "[\r\n]" " " PERL_CFLAGS ${PERL_CFLAGS})
-STRING(REGEX REPLACE " +$" "" PERL_CFLAGS ${PERL_CFLAGS})
-STRING(REGEX REPLACE "[\r\n]" " " PERL_LDFLAGS ${PERL_LDFLAGS})
-STRING(REGEX REPLACE " +$" "" PERL_LDFLAGS ${PERL_LDFLAGS})
-# Handle DynaLoader
-STRING(REGEX MATCH "/[^ ]*/DynaLoader.a" PERL_DYNALOADER ${PERL_LDFLAGS})
-STRING(REGEX REPLACE "/[^ ]*/DynaLoader.a " "" PERL_LDFLAGS ${PERL_LDFLAGS})
-
-IF(PERL_DYNALOADER)
- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${PERL_DYNALOADER} ${rspamd_BINARY_DIR}/compat/libdynaloader.so)
- LINK_DIRECTORIES(${rspamd_BINARY_DIR}/compat/)
-ENDIF(PERL_DYNALOADER)
+
+IF(ENABLE_PERL MATCHES "ON")
+
+ INCLUDE(FindPerl)
+
+ IF(NOT PERL_EXECUTABLE)
+ MESSAGE(FATAL_ERROR "Error: Perl is not found but is required")
+ ENDIF(NOT PERL_EXECUTABLE)
+
+ # Find perl libraries and cflags
+ EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ccopts OUTPUT_VARIABLE PERL_CFLAGS)
+ EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ldopts OUTPUT_VARIABLE PERL_LDFLAGS)
+ STRING(REGEX REPLACE "[\r\n]" " " PERL_CFLAGS ${PERL_CFLAGS})
+ STRING(REGEX REPLACE " +$" "" PERL_CFLAGS ${PERL_CFLAGS})
+ STRING(REGEX REPLACE "[\r\n]" " " PERL_LDFLAGS ${PERL_LDFLAGS})
+ STRING(REGEX REPLACE " +$" "" PERL_LDFLAGS ${PERL_LDFLAGS})
+ # Handle DynaLoader
+ STRING(REGEX MATCH "/[^ ]*/DynaLoader.a" PERL_DYNALOADER ${PERL_LDFLAGS})
+ STRING(REGEX REPLACE "/[^ ]*/DynaLoader.a " "" PERL_LDFLAGS ${PERL_LDFLAGS})
+
+ IF(PERL_DYNALOADER)
+ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${PERL_DYNALOADER} ${rspamd_BINARY_DIR}/compat/libdynaloader.so)
+ LINK_DIRECTORIES(${rspamd_BINARY_DIR}/compat/)
+ ENDIF(PERL_DYNALOADER)
+ELSE(ENABLE_PERL MATCHES "ON")
+ SET(WITHOUT_PERL 1)
+ENDIF(ENABLE_PERL MATCHES "ON")
# Lex and yacc
FIND_PROGRAM(LEX_EXECUTABLE lex)
@@ -214,6 +221,7 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_WARN_FLAGS} -std=c99")
# Platform specific routines
IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_BSD_SOURCE -DFREEBSD")
CONFIGURE_FILE(freebsd/rspamd.sh.in freebsd/rspamd.sh @ONLY)
IF(ENABLE_REDIRECTOR MATCHES "ON")
@@ -222,6 +230,10 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -DLINUX")
+ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+
IF(ENABLE_REDIRECTOR MATCHES "ON")
CONFIGURE_FILE(utils/redirector.pl.in utils/redirector.pl @ONLY)
ENDIF(ENABLE_REDIRECTOR MATCHES "ON")
@@ -238,7 +250,6 @@ SET(RSPAMDSRC src/modules.c
src/upstream.c
src/statfile.c
src/protocol.c
- src/perl.c
src/message.c
src/fuzzy.c
src/expressions.c
@@ -253,6 +264,10 @@ SET(RSPAMDSRC src/modules.c
src/lmtp.c
src/lmtp_proto.c)
+IF(ENABLE_PERL MATCHES "ON")
+ LIST(APPEND RSPAMDSRC src/perl.c)
+ENDIF(ENABLE_PERL MATCHES "ON")
+
SET(TOKENIZERSSRC src/tokenizers/tokenizers.c
src/tokenizers/osb.c)
@@ -303,17 +318,19 @@ ADD_CUSTOM_COMMAND(OUTPUT src/modules.c
COMMAND ../utils/gen-modules.sh ${PLUGINSSRC}
WORKING_DIRECTORY src)
-ADD_CUSTOM_COMMAND(OUTPUT perl/Makefile
- COMMAND ${PERL_EXECUTABLE} ./Makefile.PL
- WORKING_DIRECTORY perl)
-ADD_CUSTOM_TARGET(perlxs
- COMMAND make
- DEPENDS perl/Makefile
- WORKING_DIRECTORY perl
- VERBATIM)
+IF(ENABLE_PERL MATCHES "ON")
+ ADD_CUSTOM_COMMAND(OUTPUT perl/Makefile
+ COMMAND ${PERL_EXECUTABLE} ./Makefile.PL
+ WORKING_DIRECTORY perl)
+ ADD_CUSTOM_TARGET(perlxs
+ COMMAND make
+ DEPENDS perl/Makefile
+ WORKING_DIRECTORY perl
+ VERBATIM)
+ CONFIGURE_FILE(perl/Makefile.PL.in perl/Makefile.PL)
+ENDIF(ENABLE_PERL MATCHES "ON")
CONFIGURE_FILE(config.h.in src/config.h)
-CONFIGURE_FILE(perl/Makefile.PL.in perl/Makefile.PL)
CONFIGURE_FILE(rspamc.pl.in rspamc.pl @ONLY)
ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${CONTRIBSRC} ${TOKENIZERSSRC}
@@ -321,34 +338,41 @@ ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${CONTRIBSRC} ${TOKENIZERSSRC}
${LEX_OUTPUT})
SET_TARGET_PROPERTIES(rspamd PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd PROPERTIES VERSION ${RSPAMD_VERSION})
-SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS ${PERL_CFLAGS}
- LINK_FLAGS ${PERL_LDFLAGS})
-TARGET_LINK_LIBRARIES(rspamd ${GLIB2_LIBRARIES})
+
+IF(ENABLE_PERL MATCHES "ON")
+
+ SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS ${PERL_CFLAGS}
+ LINK_FLAGS ${PERL_LDFLAGS})
+ IF(PERL_DYNALOADER)
+ TARGET_LINK_LIBRARIES(rspamd dynaloader)
+ ENDIF(PERL_DYNALOADER)
+ ADD_DEPENDENCIES(rspamd perlxs ${LEX_OUTPUT} ${YACC_OUTPUT})
+
+ENDIF(ENABLE_PERL MATCHES "ON")
+
+TARGET_LINK_LIBRARIES(rspamd m)
TARGET_LINK_LIBRARIES(rspamd event)
-IF(PERL_DYNALOADER)
- TARGET_LINK_LIBRARIES(rspamd dynaloader)
-ENDIF(PERL_DYNALOADER)
+TARGET_LINK_LIBRARIES(rspamd ${GLIB2_LIBRARIES})
TARGET_LINK_LIBRARIES(rspamd ${GMIME2_LIBRARIES})
-ADD_DEPENDENCIES(rspamd perlxs ${LEX_OUTPUT} ${YACC_OUTPUT})
ADD_EXECUTABLE(test/rspamd-test ${TESTDEPENDS} ${CONTRIBSRC} ${TESTSRC})
SET_TARGET_PROPERTIES(test/rspamd-test PROPERTIES LINKER_LANGUAGE C)
-SET_TARGET_PROPERTIES(test/rspamd-test PROPERTIES COMPILE_FLAGS ${PERL_CFLAGS}
- LINK_FLAGS ${PERL_LDFLAGS})
-TARGET_LINK_LIBRARIES(test/rspamd-test ${GLIB2_LIBRARIES})
+TARGET_LINK_LIBRARIES(test/rspamd-test m)
TARGET_LINK_LIBRARIES(test/rspamd-test event)
+TARGET_LINK_LIBRARIES(test/rspamd-test ${GLIB2_LIBRARIES})
TARGET_LINK_LIBRARIES(test/rspamd-test ${GMIME2_LIBRARIES})
ADD_EXECUTABLE(utils/url-extracter ${UTILSDEPENDS} ${CONTRIBSRC} ${UTILSSRC})
SET_TARGET_PROPERTIES(utils/url-extracter PROPERTIES LINKER_LANGUAGE C)
-SET_TARGET_PROPERTIES(utils/url-extracter PROPERTIES COMPILE_FLAGS ${PERL_CFLAGS}
- LINK_FLAGS ${PERL_LDFLAGS})
+TARGET_LINK_LIBRARIES(utils/url-extracter m)
TARGET_LINK_LIBRARIES(utils/url-extracter ${GLIB2_LIBRARIES})
TARGET_LINK_LIBRARIES(utils/url-extracter ${GMIME2_LIBRARIES})
INSTALL(PROGRAMS rspamd-${RSPAMD_VERSION} DESTINATION bin RENAME rspamd)
INSTALL(PROGRAMS rspamc.pl DESTINATION bin RENAME rspamc)
-INSTALL(CODE "EXECUTE_PROCESS(COMMAND make install WORKING_DIRECTORY perl)")
+IF(ENABLE_PERL MATCHES "ON")
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND make install WORKING_DIRECTORY perl)")
+ENDIF(ENABLE_PERL MATCHES "ON")
IF(ENABLE_REDIRECTOR MATCHES "ON")
INSTALL(PROGRAMS utils/redirector.pl DESTINATION bin RENAME rspamd-redirector)