Procházet zdrojové kódy

[Feature] Improve ragel build target

tags/1.3.0
Vsevolod Stakhov před 8 roky
rodič
revize
3c967aea98
3 změnil soubory, kde provedl 24 přidání a 30 odebrání
  1. 3
    3
      CMakeLists.txt
  2. 10
    23
      FindRagel.cmake
  3. 11
    4
      src/CMakeLists.txt

+ 3
- 3
CMakeLists.txt Zobrazit soubor

@@ -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")

+ 10
- 23
FindRagel.cmake Zobrazit soubor

@@ -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()


+ 11
- 4
src/CMakeLists.txt Zobrazit soubor

@@ -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}

Načítá se…
Zrušit
Uložit