diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-27 14:21:27 +0300 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-27 14:21:27 +0300 |
commit | a83e5f18a2b6d9dc3196045867bcd842cfea3323 (patch) | |
tree | 5272d1159063abc10b92033f0a914aa2d36d06d2 /CMakeLists.txt | |
parent | fdccb337ed73f14b204721cf464ca03a7eca49b6 (diff) | |
download | rspamd-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.txt | 112 |
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) |