]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
Add windows DLL support
authorBobby Martin <bobbymartin2@gmail.com>
Wed, 27 Mar 2019 16:52:00 +0000 (09:52 -0700)
committerChang, Harry <harry.chang@intel.com>
Tue, 13 Aug 2019 06:52:38 +0000 (14:52 +0800)
(with AVX2 flag removed currently)

CMakeLists.txt
hs.def [new file with mode: 0644]
hs_runtime.def [new file with mode: 0644]
tools/hsbench/CMakeLists.txt
tools/hscheck/CMakeLists.txt
tools/hsdump/CMakeLists.txt
unit/CMakeLists.txt

index d399536298d62f022878b0ed012e266deab4cbf6..a37eaa9071f050c652d56e4624dd15b185193f51 100644 (file)
@@ -31,6 +31,7 @@ else()
 endif()
 
 if(CMAKE_BUILD_TYPE MATCHES RELEASE|RELWITHDEBINFO|MINSIZEREL)
+    message(STATUS "using release build")
     set(RELEASE_BUILD TRUE)
 else()
     set(RELEASE_BUILD FALSE)
@@ -109,11 +110,9 @@ option(BUILD_SHARED_LIBS "Build shared libs instead of static" OFF)
 option(BUILD_STATIC_AND_SHARED "Build shared libs as well as static" OFF)
 
 if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
-    if (WIN32)
-        message(FATAL_ERROR "Windows DLLs currently not supported")
-    else()
         message(STATUS "Building shared libraries")
-    endif()
+else()
+        message(STATUS "Building static libraries")
 endif()
 
 if (NOT BUILD_SHARED_LIBS)
@@ -151,9 +150,6 @@ if(MSVC OR MSVC_IDE)
             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /O3 /Qstd=c99 /Qrestrict /wd4267 /Qdiag-disable:remark")
             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Qstd=c++11 /Qrestrict /QxHost /wd4267 /wd4800 /Qdiag-disable:remark -DBOOST_DETAIL_NO_CONTAINER_FWD -D_SCL_SECURE_NO_WARNINGS")
         else()
-            # todo: change these as required
-            set(ARCH_C_FLAGS "/arch:AVX2")
-            set(ARCH_CXX_FLAGS "/arch:AVX2")
             set(MSVC_WARNS "/wd4101 /wd4146 /wd4172 /wd4200 /wd4244 /wd4267 /wd4307 /wd4334 /wd4805 /wd4996 -D_CRT_SECURE_NO_WARNINGS")
             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  /O2 ${MSVC_WARNS}")
             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 ${MSVC_WARNS} /wd4800 -DBOOST_DETAIL_NO_CONTAINER_FWD")
@@ -1298,12 +1294,14 @@ endif()
 if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
     if (NOT FAT_RUNTIME)
         add_library(hs_runtime_shared SHARED src/hs_version.c
-            src/hs_valid_platform.c $<TARGET_OBJECTS:hs_exec_shared>)
+            src/hs_valid_platform.c $<TARGET_OBJECTS:hs_exec_shared>
+            hs_runtime.def)
     else()
         add_library(hs_runtime_shared SHARED src/hs_version.c
             src/hs_valid_platform.c
             $<TARGET_OBJECTS:hs_exec_common_shared>
-            ${RUNTIME_SHLIBS})
+            ${RUNTIME_SHLIBS}
+            hs_runtime.def)
     endif()
     set_target_properties(hs_runtime_shared PROPERTIES
         VERSION ${LIB_VERSION}
@@ -1349,7 +1347,7 @@ if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
             ${RUNTIME_SHLIBS})
     endif ()
 
-    add_library(hs_shared SHARED ${hs_shared_SRCS})
+    add_library(hs_shared SHARED ${hs_shared_SRCS} hs.def)
 
     add_dependencies(hs_shared ragel_Parser)
     set_target_properties(hs_shared PROPERTIES
diff --git a/hs.def b/hs.def
new file mode 100644 (file)
index 0000000..28f7877
--- /dev/null
+++ b/hs.def
@@ -0,0 +1,43 @@
+; Hyperscan DLL export definitions\r
+\r
+LIBRARY hs\r
+\r
+EXPORTS\r
+   hs_alloc_scratch\r
+   hs_clone_scratch\r
+   hs_close_stream\r
+   hs_compile\r
+   hs_compile_ext_multi\r
+   hs_compile_multi\r
+   hs_compress_stream\r
+   hs_copy_stream\r
+   hs_database_info\r
+   hs_database_size\r
+   hs_deserialize_database\r
+   hs_deserialize_database_at\r
+   hs_expand_stream\r
+   hs_expression_ext_info\r
+   hs_expression_info\r
+   hs_free_compile_error\r
+   hs_free_database\r
+   hs_free_scratch\r
+   hs_open_stream\r
+   hs_populate_platform\r
+   hs_reset_and_copy_stream\r
+   hs_reset_and_expand_stream\r
+   hs_reset_stream\r
+   hs_scan\r
+   hs_scan_stream\r
+   hs_scan_vector\r
+   hs_scratch_size\r
+   hs_serialize_database\r
+   hs_serialized_database_info\r
+   hs_serialized_database_size\r
+   hs_set_allocator\r
+   hs_set_database_allocator\r
+   hs_set_misc_allocator\r
+   hs_set_scratch_allocator\r
+   hs_set_stream_allocator\r
+   hs_stream_size\r
+   hs_valid_platform\r
+   hs_version\r
diff --git a/hs_runtime.def b/hs_runtime.def
new file mode 100644 (file)
index 0000000..6c434be
--- /dev/null
@@ -0,0 +1,36 @@
+; Hyperscan DLL export definitions\r
+\r
+LIBRARY hs_runtime\r
+\r
+EXPORTS\r
+   hs_alloc_scratch\r
+   hs_clone_scratch\r
+   hs_close_stream\r
+   hs_compress_stream\r
+   hs_copy_stream\r
+   hs_database_info\r
+   hs_database_size\r
+   hs_deserialize_database\r
+   hs_deserialize_database_at\r
+   hs_expand_stream\r
+   hs_free_database\r
+   hs_free_scratch\r
+   hs_open_stream\r
+   hs_reset_and_copy_stream\r
+   hs_reset_and_expand_stream\r
+   hs_reset_stream\r
+   hs_scan\r
+   hs_scan_stream\r
+   hs_scan_vector\r
+   hs_scratch_size\r
+   hs_serialize_database\r
+   hs_serialized_database_info\r
+   hs_serialized_database_size\r
+   hs_set_allocator\r
+   hs_set_database_allocator\r
+   hs_set_misc_allocator\r
+   hs_set_scratch_allocator\r
+   hs_set_stream_allocator\r
+   hs_stream_size\r
+   hs_valid_platform\r
+   hs_version
\ No newline at end of file
index 465081a8b295e0c6003dd41383fc168ed80ec9e5..bbceda41cb8ad655251b70e54b3142432bc29b18 100644 (file)
@@ -56,10 +56,7 @@ if (BUILD_CHIMERA)
         engine_pcre.cpp
         engine_pcre.h
     )
-endif()
-
-add_executable(hsbench ${hsbench_SOURCES})
-if (BUILD_CHIMERA)
+    add_executable(hsbench ${hsbench_SOURCES})
     include_directories(${PCRE_INCLUDE_DIRS})
     if(NOT WIN32)
         target_link_libraries(hsbench hs chimera ${PCRE_LDFLAGS} databaseutil
@@ -69,6 +66,11 @@ if (BUILD_CHIMERA)
             expressionutil ${SQLITE3_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT})
     endif()
 else()
+    if(WIN32 AND (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS))
+        add_executable(hsbench ${hsbench_SOURCES} $<TARGET_OBJECTS:hs_compile_shared> $<TARGET_OBJECTS:hs_exec_shared>)
+    else()
+        add_executable(hsbench ${hsbench_SOURCES})
+    endif()
     target_link_libraries(hsbench hs databaseutil expressionutil
         ${SQLITE3_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT})
 endif()
index 8f45765a80ba93cc768fea4311f7ebd932607fc9..2ae06137c50ed7fdc8a57254a8c0b0756e3f29a8 100644 (file)
@@ -16,7 +16,11 @@ if (BUILD_CHIMERA)
         target_link_libraries(hscheck hs chimera pcre expressionutil)
     endif()
 else()
-    add_executable(hscheck ${hscheck_SOURCES})
+    if(WIN32 AND (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS))
+        add_executable(hscheck ${hscheck_SOURCES} $<TARGET_OBJECTS:hs_compile_shared> $<TARGET_OBJECTS:hs_exec_shared>)
+    else()
+        add_executable(hscheck ${hscheck_SOURCES})
+    endif()
     if(NOT WIN32)
         target_link_libraries(hscheck hs expressionutil pthread)
     else()
index 4350b0f6d95135e2dba23dc484ff5259d792be03..0466d5720a155fd6ae1a4f5cb67b373d21879d73 100644 (file)
@@ -10,6 +10,10 @@ include_directories(${PROJECT_SOURCE_DIR}/util)
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS}")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}")
 
-add_executable(hsdump main.cpp)
+if(WIN32 AND (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS))
+    add_executable(hsdump main.cpp $<TARGET_OBJECTS:hs_compile_shared> $<TARGET_OBJECTS:hs_exec_shared>)
+else()
+    add_executable(hsdump main.cpp)
+endif()
 target_link_libraries(hsdump hs expressionutil crosscompileutil)
 
index 32e014508e1cbc418401bf91a56ffa4021eb7deb..b0706fa8e6861bad629ae259a512edc796a42db8 100644 (file)
@@ -129,7 +129,11 @@ set(unit_internal_SOURCES
     internal/main.cpp
     )
 
+if(WIN32 AND (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS))
+add_executable(unit-internal ${unit_internal_SOURCES} $<TARGET_OBJECTS:hs_compile_shared> $<TARGET_OBJECTS:hs_exec_shared>)
+else()
 add_executable(unit-internal ${unit_internal_SOURCES})
+endif()
 set_target_properties(unit-internal PROPERTIES COMPILE_FLAGS "${HS_CXX_FLAGS}")
 target_link_libraries(unit-internal hs corpusomatic)
 endif(NOT (RELEASE_BUILD OR FAT_RUNTIME))