@@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 2.8.11)
22project (hyperscan C CXX)
33
44set (HS_MAJOR_VERSION 5)
5- set (HS_MINOR_VERSION 3 )
5+ set (HS_MINOR_VERSION 4 )
66set (HS_PATCH_VERSION 0)
77set (HS_VERSION ${HS_MAJOR_VERSION} .${HS_MINOR_VERSION} .${HS_PATCH_VERSION} )
88
@@ -133,6 +133,13 @@ CMAKE_DEPENDENT_OPTION(DISABLE_ASSERTS "Disable assert(); Asserts are enabled in
133133option (BUILD_AVX512 "Experimental: support avx512 in the fat runtime"
134134 OFF )
135135
136+ option (BUILD_AVX512VBMI "Experimental: support avx512vbmi in the fat runtime"
137+ OFF )
138+
139+ if (BUILD_AVX512VBMI)
140+ set (BUILD_AVX512 ON )
141+ endif ()
142+
136143option (WINDOWS_ICC "Use Intel C++ Compiler on Windows, default off, requires ICC to be set in project" OFF )
137144
138145# TODO: per platform config files?
@@ -277,6 +284,7 @@ else()
277284 set (SKYLAKE_FLAG "-xCORE-AVX512" )
278285 else ()
279286 set (SKYLAKE_FLAG "-march=skylake-avx512" )
287+ set (ICELAKE_FLAG "-march=icelake-server" )
280288 endif ()
281289endif ()
282290
@@ -1197,6 +1205,9 @@ else (FAT_RUNTIME)
11971205 if (NOT BUILD_AVX512)
11981206 set (DISPATCHER_DEFINE "-DDISABLE_AVX512_DISPATCH" )
11991207 endif (NOT BUILD_AVX512)
1208+ if (NOT BUILD_AVX512VBMI)
1209+ set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DDISABLE_AVX512VBMI_DISPATCH" )
1210+ endif (NOT BUILD_AVX512VBMI)
12001211 set_source_files_properties (src/dispatcher.c PROPERTIES
12011212 COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE} " )
12021213
@@ -1229,6 +1240,14 @@ else (FAT_RUNTIME)
12291240 RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH} /keep.syms.in"
12301241 )
12311242 endif (BUILD_AVX512)
1243+ if (BUILD_AVX512VBMI)
1244+ add_library (hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS} )
1245+ list (APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
1246+ set_target_properties (hs_exec_avx512vbmi PROPERTIES
1247+ COMPILE_FLAGS "${ICELAKE_FLAG} "
1248+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH} /keep.syms.in"
1249+ )
1250+ endif (BUILD_AVX512VBMI)
12321251
12331252 add_library (hs_exec_common OBJECT
12341253 ${hs_exec_common_SRCS}
@@ -1287,6 +1306,15 @@ else (FAT_RUNTIME)
12871306 RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH} /keep.syms.in"
12881307 )
12891308 endif (BUILD_AVX512)
1309+ if (BUILD_AVX512VBMI)
1310+ add_library (hs_exec_shared_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS} )
1311+ list (APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512vbmi>)
1312+ set_target_properties (hs_exec_shared_avx512vbmi PROPERTIES
1313+ COMPILE_FLAGS "${ICELAKE_FLAG} "
1314+ POSITION_INDEPENDENT_CODE TRUE
1315+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH} /keep.syms.in"
1316+ )
1317+ endif (BUILD_AVX512VBMI)
12901318 add_library (hs_exec_common_shared OBJECT
12911319 ${hs_exec_common_SRCS}
12921320 src/dispatcher.c
@@ -1380,7 +1408,7 @@ if (NOT BUILD_STATIC_LIBS)
13801408 add_library (hs ALIAS hs_shared)
13811409endif ()
13821410
1383-
1384- if (NOT WIN32 )
1411+ option (BUILD_EXAMPLES "Build Hyperscan example code (default TRUE)" TRUE )
1412+ if (NOT WIN32 AND BUILD_EXAMPLES )
13851413 add_subdirectory (examples)
13861414endif ()
0 commit comments