]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #2839 in SNORT/snort3 from ~OSERHIIE/snort3:build_flex to master
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Mon, 12 Apr 2021 17:21:09 +0000 (17:21 +0000)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Mon, 12 Apr 2021 17:21:09 +0000 (17:21 +0000)
Squashed commit of the following:

commit e644105f5c593f23cabcf6486d1c32e4ce87472e
Author: Oleksandr Serhiienko <oserhiie@cisco.com>
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 <oserhiie@cisco.com>
Date:   Thu Apr 8 21:22:21 2021 +0300

    utils: enable Flex C++ mode via its option

README.md
cmake/FindFlexLexer.cmake [new file with mode: 0644]
cmake/create_pkg_config.cmake
cmake/include_libraries.cmake
configure_cmake.sh
snort.pc.in
src/CMakeLists.txt
src/utils/CMakeLists.txt
src/utils/js_tokenizer.l

index 045d0fdf98991900d667c06b9a38b76ea9bce690..34126e39dce15fdfe864c055e096e9085bf3edec 100644 (file)
--- 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 (file)
index 0000000..3b175c3
--- /dev/null
@@ -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)
index b97ed5299a31a5b7d209302837ece6b9c353f0be..9808275e16c43e7f69ef75baf472b4103652bc6b 100644 (file)
@@ -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()
index 82ac24529054b5345741028554322edefef88448..6e3f6f33c21fc1194a2fb9b19132d85272aecc45 100644 (file)
@@ -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)
index f95fbf7ef919187fb640ebc04e78e0135cf7eb9c..4774712be89af404ae560e84cd60f211c8e772ec 100755 (executable)
@@ -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
             ;;
index 8f7817c51eb7299311811e16a678bf668e44e49a..973dcb1f52ae211d32356598ba3a554007bdfafd 100644 (file)
@@ -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@
index cc640a868515182983d4d157697c822af90307ff..cf5887bee9525869fd4534c48020baa06ea375f7 100644 (file)
@@ -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}
index bbaf23380ecfa1603fb436cfa1f45ca5e7f62c8b..38fc2ddce3816fbacce50b0d89927ad24fe4cd64 100644 (file)
@@ -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
index f4f51fbf51d557e190a4786736f2738cd004f476..af06087afb83b753b8a59a2da2b6ab0f14cbe5db 100644 (file)
@@ -22,6 +22,8 @@
 %option yyclass="JSTokenizer"
 /* Disable yywrap() generation */
 %option noyywrap
+/* Generate C++ scanner */
+%option c++
 
 %{
     #ifdef HAVE_CONFIG_H