]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Improve ragel build target
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 14 Jun 2016 19:36:50 +0000 (20:36 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 14 Jun 2016 19:36:50 +0000 (20:36 +0100)
CMakeLists.txt
FindRagel.cmake
src/CMakeLists.txt

index ebef8a1ce3899000ae201770c788686223e92ecc..84a3f50057e86adff18a2db27ba50588947f4918 100644 (file)
@@ -729,11 +729,11 @@ CHECK_C_COMPILER_FLAG(-Wunused-variable SUPPORT_WUNUSED_VAR)
 CHECK_C_COMPILER_FLAG(-Wno-pointer-sign SUPPORT_WPOINTER_SIGN)
 CHECK_C_COMPILER_FLAG(-Wstrict-prototypes SUPPORT_WSTRICT_PROTOTYPES)
 CHECK_C_COMPILER_FLAG(-pedantic SUPPORT_PEDANTIC_FLAG)
-CHECK_C_COMPILER_FLAG(-pedantic SUPPORT_PEDANTIC_FLAG)
+CHECK_C_COMPILER_FLAG(-Wno-unused-const-variable SUPPORT_WNO_UNUSED_CONST)
 # GCC 6 specific
 CHECK_C_COMPILER_FLAG(-Wnull-dereference SUPPORT_WNULL_DEREFERENCE)
 CHECK_C_COMPILER_FLAG(-Wduplicated-cond SUPPORT_WDUPLICATED_COND)
-CHECK_C_COMPILER_FLAG(-Wno-unused-const-variable SUPPORT_WNO_UNUSED_CONST)
+
 IF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
        CHECK_C_COMPILER_FLAG("-std=c11" SUPPORT_STD11_FLAG)
        CHECK_C_COMPILER_FLAG("-std=c99" SUPPORT_STD99_FLAG)
@@ -775,7 +775,7 @@ IF(SUPPORT_WLOGICAL_OP)
        SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wlogical-op")
 ENDIF()
 IF(SUPPORT_WNO_UNUSED_CONST)
-       SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wunused-const-variable")
+       SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-unused-const-variable")
 ENDIF()
 IF(SUPPORT_STD11_FLAG)
        SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -std=c11")
index 7b4534a805025800b6cba5471e278dc671098a07..b6f7fc2e18ad87a53d72bed9a3cb28f3047d46bc 100644 (file)
@@ -7,8 +7,8 @@
 #
 # If ragel is found, the module defines the macros:
 #
-#  RAGEL_TARGET(<Name> <RagelInp> <CodeOutput>
-#              [COMPILE_FLAGS <string>])
+#  RAGEL_TARGET(<Name> INPUTS <inputs> OUTPUT <output>
+#              [COMPILE_FLAGS <string>] [DEPENDS <depends>])
 #
 # which will create  a custom rule to generate a state machine. <RagelInp> is
 # the path to a Ragel file. <CodeOutput> is the name of the source file
@@ -69,33 +69,20 @@ ${RAGEL_version_error}")
   # RAGEL_TARGET (public macro)
   #============================================================
   #
-  macro(RAGEL_TARGET Name Input Output)
-    set(RAGEL_TARGET_usage
-              "RAGEL_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>]")
-    if(${ARGC} GREATER 3)
-      if(${ARGC} EQUAL 5)
-        if("${ARGV3}" STREQUAL "COMPILE_FLAGS")
-          set(RAGEL_EXECUTABLE_opts  "${ARGV4}")
-          separate_arguments(RAGEL_EXECUTABLE_opts)
-        else()
-          message(SEND_ERROR ${RAGEL_TARGET_usage})
-        endif()
-      else()
-        message(SEND_ERROR ${RAGEL_TARGET_usage})
-      endif()
-    endif()
-
-    add_custom_command(OUTPUT ${Output}
+  macro(RAGEL_TARGET Name)
+    CMAKE_PARSE_ARGUMENTS(RAGEL "" "OUTPUT"
+               "INPUTS;DEPENDS;COMPILE_FLAGS" ${ARGN})
+    add_custom_command(OUTPUT ${RAGEL_OUTPUT}
       COMMAND ${RAGEL_EXECUTABLE}
-      ARGS    ${RAGEL_EXECUTABLE_opts} -o${Output} ${Input}
-      DEPENDS ${Input}
+      ARGS    ${RAGEL_EXECUTABLE_opts} -o${RAGEL_OUTPUT} ${RAGEL_INPUTS}
+      DEPENDS ${RAGEL_INPUTS} ${RAGEL_DEPENDS}
       COMMENT
           "[RAGEL][${Name}] Compiling state machine with Ragel ${RAGEL_VERSION}"
       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 
     set(RAGEL_${Name}_DEFINED       TRUE)
-    set(RAGEL_${Name}_OUTPUTS       ${Output})
-    set(RAGEL_${Name}_INPUT         ${Input})
+    set(RAGEL_${Name}_OUTPUTS       ${RAGEL_OUTPUT})
+    set(RAGEL_${Name}_INPUT         ${RAGEL_INPUTS})
     set(RAGEL_${Name}_COMPILE_FLAGS ${RAGEL_EXECUTABLE_opts})
   endmacro()
 
index c9f99a7a507cd5714c4e0abe368d9c2023595f3d..d4765ce79fb1fd17b53051ffc18d1ca1911e7ceb 100644 (file)
@@ -102,12 +102,19 @@ ENDIF()
 AddModules(MODULES_LIST WORKERS_LIST)
 LIST(LENGTH PLUGINSSRC RSPAMD_MODULES_NUM)
 
+SET(RAGEL_DEPENDS "${CMAKE_SOURCE_DIR}/src/ragel/smtp_address.rl"
+       "${CMAKE_SOURCE_DIR}/src/ragel/smtp_date.rl"
+       "${CMAKE_SOURCE_DIR}/src/ragel/smtp_ip.rl"
+       "${CMAKE_SOURCE_DIR}/src/ragel/smtp_whitespace.rl"
+       "${CMAKE_SOURCE_DIR}/src/ragel/smtp_received.rl")
 RAGEL_TARGET(ragel_smtp_addr
-       ragel/smtp_addr_parser.rl
-       ${CMAKE_CURRENT_BINARY_DIR}/smtp_addr_parser.rl.c)
+       INPUTS ragel/smtp_addr_parser.rl
+       DEPENDS ${RAGEL_DEPENDS}
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/smtp_addr_parser.rl.c)
 RAGEL_TARGET(ragel_smtp_received
-       ragel/smtp_received_parser.rl
-       ${CMAKE_CURRENT_BINARY_DIR}/smtp_received_parser.rl.c)
+       INPUTS ragel/smtp_received_parser.rl
+       DEPENDS ${RAGEL_DEPENDS}
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/smtp_received_parser.rl.c)
 ######################### LINK SECTION ###############################
 
 ADD_LIBRARY(rspamd-server STATIC ${RSPAMD_CRYPTOBOX} ${RSPAMD_UTIL} ${RSPAMD_LUA} ${RSPAMD_SERVER}