From: Oleksii Shumeiko -X (oshumeik - SOFTSERVE INC at Cisco) Date: Wed, 23 Nov 2022 08:36:42 +0000 (+0000) Subject: Pull request #3674: js_norm: add CMake command for noreturn attribute in LexerError X-Git-Tag: 3.1.48.0~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=795105e3859042a019f7bb743e88559814a39340;p=thirdparty%2Fsnort3.git Pull request #3674: js_norm: add CMake command for noreturn attribute in LexerError Merge in SNORT/snort3 from ~OSERHIIE/snort3:js_module_fix to master Squashed commit of the following: commit c7331f2da7b88e955bdbf06cc635e6007524a89f Author: Oleksandr Serhiienko Date: Thu Nov 17 12:51:20 2022 +0100 js_norm: use FLEX macro to build parser commit a5b99c366582d785951e9dfa130d65d7eefc7fc4 Author: Oleksandr Serhiienko Date: Mon Nov 21 15:03:27 2022 +0100 cmake: add FLEX build macro --- diff --git a/cmake/FindFlexLexer.cmake b/cmake/FindFlexLexer.cmake index 3b175c345..1b686d544 100644 --- a/cmake/FindFlexLexer.cmake +++ b/cmake/FindFlexLexer.cmake @@ -8,3 +8,23 @@ find_path(FLEX_INCLUDES "FlexLexer.h" ) mark_as_advanced(FLEX_INCLUDES) + +macro(FLEX NAME LEXER_IN LEXER_OUT) + FLEX_TARGET(${NAME} + ${LEXER_IN} + ${LEXER_OUT}.tmp + COMPILE_FLAGS ${FLEX_FLAGS} + ) + + # we use '+' as a separator for 'sed' to avoid conflicts with '/' in paths from LEXER_OUT + add_custom_command( + OUTPUT ${LEXER_OUT} + COMMAND sed -e + "s+void yyFlexLexer::LexerError+yynoreturn void yyFlexLexer::LexerError+;s+${LEXER_OUT}.tmp+${LEXER_OUT}+" + ${FLEX_${NAME}_OUTPUTS} > ${LEXER_OUT} + DEPENDS ${FLEX_${NAME}_OUTPUTS} + VERBATIM + ) + + set(${NAME}_OUTPUTS ${LEXER_OUT}) +endmacro() diff --git a/src/js_norm/CMakeLists.txt b/src/js_norm/CMakeLists.txt index 30a376c63..7128c458b 100644 --- a/src/js_norm/CMakeLists.txt +++ b/src/js_norm/CMakeLists.txt @@ -1,11 +1,10 @@ -FLEX_TARGET ( js_tokenizer +FLEX ( js_tokenizer ${CMAKE_CURRENT_SOURCE_DIR}/js_tokenizer.l ${CMAKE_CURRENT_BINARY_DIR}/js_tokenizer.cc - COMPILE_FLAGS ${FLEX_FLAGS} ) set ( JS_SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} js_config.h js_enum.h js_identifier_ctx.cc diff --git a/src/js_norm/test/CMakeLists.txt b/src/js_norm/test/CMakeLists.txt index bb4634c96..4dce8615b 100644 --- a/src/js_norm/test/CMakeLists.txt +++ b/src/js_norm/test/CMakeLists.txt @@ -1,11 +1,11 @@ -FLEX_TARGET ( js_tokenizer ${CMAKE_CURRENT_SOURCE_DIR}/../js_tokenizer.l +FLEX ( js_tokenizer + ${CMAKE_CURRENT_SOURCE_DIR}/../js_tokenizer.l ${CMAKE_CURRENT_BINARY_DIR}/../js_tokenizer.cc - COMPILE_FLAGS ${FLEX_FLAGS} ) add_catch_test( js_normalizer_test SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} ../js_identifier_ctx.cc ../js_normalizer.cc ${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc @@ -18,7 +18,7 @@ add_catch_test( js_normalizer_test if (ENABLE_BENCHMARK_TESTS) add_catch_test( js_norm_benchmark SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} ../js_identifier_ctx.cc ../js_normalizer.cc ${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc @@ -31,7 +31,7 @@ endif(ENABLE_BENCHMARK_TESTS) add_catch_test( js_dealias_test SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} ../js_identifier_ctx.cc ../js_normalizer.cc ${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc @@ -43,7 +43,7 @@ add_catch_test( js_dealias_test add_catch_test( js_unescape_test SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} ../js_identifier_ctx.cc ../js_normalizer.cc ${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc @@ -61,7 +61,7 @@ add_catch_test( js_identifier_ctx_test add_catch_test( jsn_test SOURCES - ${FLEX_js_tokenizer_OUTPUTS} + ${js_tokenizer_OUTPUTS} ../js_identifier_ctx.cc ../js_norm.cc ../js_normalizer.cc