From: Mike Stepanek (mstepane) Date: Mon, 12 Apr 2021 17:21:09 +0000 (+0000) Subject: Merge pull request #2839 in SNORT/snort3 from ~OSERHIIE/snort3:build_flex to master X-Git-Tag: 3.1.4.0~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90d5604925c79fe8204b2410ccadb751ba1b4d35;p=thirdparty%2Fsnort3.git Merge pull request #2839 in SNORT/snort3 from ~OSERHIIE/snort3:build_flex to master Squashed commit of the following: commit e644105f5c593f23cabcf6486d1c32e4ce87472e Author: Oleksandr Serhiienko Date: Fri Apr 9 14:17:58 2021 +0300 build: add better support for flex lexer Thanks to Özkan KIRIK and Moin for reporting the issue. commit 67548b869fa80173561b141b1733e0da41da84bf Author: Oleksandr Serhiienko Date: Thu Apr 8 21:22:21 2021 +0300 utils: enable Flex C++ mode via its option --- diff --git a/README.md b/README.md index 045d0fdf9..34126e39d 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ the latest: * cmake to build from source * daq from https://github.com/snort3/libdaq for packet IO * dnet from https://github.com/dugsong/libdnet.git for network utility functions +* flex >= 2.6.0 from https://github.com/westes/flex for JavaScript syntax parser * g++ >= 5 or other C++14 compiler * hwloc from https://www.open-mpi.org/projects/hwloc/ for CPU affinity management * LuaJIT from http://luajit.org for configuration and scripting diff --git a/cmake/FindFlexLexer.cmake b/cmake/FindFlexLexer.cmake new file mode 100644 index 000000000..3b175c345 --- /dev/null +++ b/cmake/FindFlexLexer.cmake @@ -0,0 +1,10 @@ + +find_package(FLEX 2.6.0 REQUIRED) + +find_path(FLEX_INCLUDES "FlexLexer.h" + HINTS ${FLEX_INCLUDE_DIR_HINT} + PATHS ${FLEX_INCLUDE_DIRS} + REQUIRED +) + +mark_as_advanced(FLEX_INCLUDES) diff --git a/cmake/create_pkg_config.cmake b/cmake/create_pkg_config.cmake index b97ed5299..9808275e1 100644 --- a/cmake/create_pkg_config.cmake +++ b/cmake/create_pkg_config.cmake @@ -40,6 +40,10 @@ if(FLATBUFFERS_INCLUDE_DIR) set(FLATBUFFERS_CPPFLAGS "-I${FLATBUFFERS_INCLUDE_DIR}") endif() +if(FLEX_INCLUDES) + set(FLEX_CPPFLAGS "-I${FLEX_INCLUDES}") +endif() + if(HS_INCLUDE_DIR) set(HYPERSCAN_CPPFLAGS "-I${HS_INCLUDE_DIR}") endif() diff --git a/cmake/include_libraries.cmake b/cmake/include_libraries.cmake index 82ac24529..6e3f6f33c 100644 --- a/cmake/include_libraries.cmake +++ b/cmake/include_libraries.cmake @@ -3,7 +3,7 @@ find_package(Threads REQUIRED) find_package(DAQ REQUIRED) find_package(DNET REQUIRED) -find_package(FLEX REQUIRED) +find_package(FlexLexer REQUIRED) find_package(HWLOC REQUIRED) find_package(LuaJIT REQUIRED) find_package(OpenSSL REQUIRED) diff --git a/configure_cmake.sh b/configure_cmake.sh index f95fbf7ef..4774712be 100755 --- a/configure_cmake.sh +++ b/configure_cmake.sh @@ -107,6 +107,10 @@ Optional Packages: flatbuffers include directory --with-flatbuffers-libraries=DIR flatbuffers library directory + --with-flex-prefix=DIR + flex prefix directory + --with-flex-includes=DIR + flex include directory --with-iconv-includes=DIR libiconv include directory --with-iconv-libraries=DIR @@ -415,6 +419,12 @@ while [ $# -ne 0 ]; do --with-flatbuffers-libraries=*) append_cache_entry FLATBUFFERS_LIBRARIES_DIR_HINT PATH $optarg ;; + --with-flex-prefix=*) + append_cache_entry CMAKE_PREFIX_PATH PATH $optarg + ;; + --with-flex-includes=*) + append_cache_entry FLEX_INCLUDE_DIR_HINT PATH $optarg + ;; --with-iconv-includes=*) append_cache_entry ICONV_INCLUDE_DIR_HINT PATH $optarg ;; diff --git a/snort.pc.in b/snort.pc.in index 8f7817c51..973dcb1f5 100644 --- a/snort.pc.in +++ b/snort.pc.in @@ -16,6 +16,7 @@ LUAJIT_CPPFLAGS=@LUAJIT_CPPFLAGS@ DNET_CPPFLAGS=@DNET_CPPFLAGS@ DAQ_CPPFLAGS=@DAQ_CPPFLAGS@ FLATBUFFERS_CPPFLAGS=@FLATBUFFERS_CPPFLAGS@ +FLEX_CPPFLAGS=@FLEX_CPPFLAGS@ OPENSSL_CPPFLAGS=@OPENSSL_CPPFLAGS@ HWLOC_CPPFLAGS=@HWLOC_CPPFLAGS@ PCRE_CPPFLAGS=@PCRE_CPPFLAGS@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cc640a868..cf5887bee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,6 +17,7 @@ set(EXTERNAL_LIBRARIES set(EXTERNAL_INCLUDES ${DAQ_INCLUDE_DIR} ${DNET_INCLUDE_DIR} + ${FLEX_INCLUDES} ${HWLOC_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR} ${PCAP_INCLUDE_DIR} diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index bbaf23380..38fc2ddce 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -19,8 +19,6 @@ set( UTIL_INCLUDES util_utf.h ) -set (FLEX_EXECUTABLE flex++) - FLEX_TARGET ( js_tokenizer ${CMAKE_CURRENT_SOURCE_DIR}/js_tokenizer.l ${CMAKE_CURRENT_BINARY_DIR}/js_tokenizer.cc COMPILE_FLAGS -Ca diff --git a/src/utils/js_tokenizer.l b/src/utils/js_tokenizer.l index f4f51fbf5..af06087af 100644 --- a/src/utils/js_tokenizer.l +++ b/src/utils/js_tokenizer.l @@ -22,6 +22,8 @@ %option yyclass="JSTokenizer" /* Disable yywrap() generation */ %option noyywrap +/* Generate C++ scanner */ +%option c++ %{ #ifdef HAVE_CONFIG_H