diff --git a/CMakeLists.txt b/CMakeLists.txt index d3995362..a37eaa90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 $) + src/hs_valid_platform.c $ + hs_runtime.def) else() add_library(hs_runtime_shared SHARED src/hs_version.c src/hs_valid_platform.c $ - ${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 index 00000000..28f7877c --- /dev/null +++ b/hs.def @@ -0,0 +1,43 @@ +; Hyperscan DLL export definitions + +LIBRARY hs + +EXPORTS + hs_alloc_scratch + hs_clone_scratch + hs_close_stream + hs_compile + hs_compile_ext_multi + hs_compile_multi + hs_compress_stream + hs_copy_stream + hs_database_info + hs_database_size + hs_deserialize_database + hs_deserialize_database_at + hs_expand_stream + hs_expression_ext_info + hs_expression_info + hs_free_compile_error + hs_free_database + hs_free_scratch + hs_open_stream + hs_populate_platform + hs_reset_and_copy_stream + hs_reset_and_expand_stream + hs_reset_stream + hs_scan + hs_scan_stream + hs_scan_vector + hs_scratch_size + hs_serialize_database + hs_serialized_database_info + hs_serialized_database_size + hs_set_allocator + hs_set_database_allocator + hs_set_misc_allocator + hs_set_scratch_allocator + hs_set_stream_allocator + hs_stream_size + hs_valid_platform + hs_version diff --git a/hs_runtime.def b/hs_runtime.def new file mode 100644 index 00000000..6c434bed --- /dev/null +++ b/hs_runtime.def @@ -0,0 +1,36 @@ +; Hyperscan DLL export definitions + +LIBRARY hs_runtime + +EXPORTS + hs_alloc_scratch + hs_clone_scratch + hs_close_stream + hs_compress_stream + hs_copy_stream + hs_database_info + hs_database_size + hs_deserialize_database + hs_deserialize_database_at + hs_expand_stream + hs_free_database + hs_free_scratch + hs_open_stream + hs_reset_and_copy_stream + hs_reset_and_expand_stream + hs_reset_stream + hs_scan + hs_scan_stream + hs_scan_vector + hs_scratch_size + hs_serialize_database + hs_serialized_database_info + hs_serialized_database_size + hs_set_allocator + hs_set_database_allocator + hs_set_misc_allocator + hs_set_scratch_allocator + hs_set_stream_allocator + hs_stream_size + hs_valid_platform + hs_version \ No newline at end of file diff --git a/tools/hsbench/CMakeLists.txt b/tools/hsbench/CMakeLists.txt index 465081a8..bbceda41 100644 --- a/tools/hsbench/CMakeLists.txt +++ b/tools/hsbench/CMakeLists.txt @@ -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} $ $) + else() + add_executable(hsbench ${hsbench_SOURCES}) + endif() target_link_libraries(hsbench hs databaseutil expressionutil ${SQLITE3_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT}) endif() diff --git a/tools/hscheck/CMakeLists.txt b/tools/hscheck/CMakeLists.txt index 8f45765a..2ae06137 100644 --- a/tools/hscheck/CMakeLists.txt +++ b/tools/hscheck/CMakeLists.txt @@ -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} $ $) + else() + add_executable(hscheck ${hscheck_SOURCES}) + endif() if(NOT WIN32) target_link_libraries(hscheck hs expressionutil pthread) else() diff --git a/tools/hsdump/CMakeLists.txt b/tools/hsdump/CMakeLists.txt index 4350b0f6..0466d572 100644 --- a/tools/hsdump/CMakeLists.txt +++ b/tools/hsdump/CMakeLists.txt @@ -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 $ $) +else() + add_executable(hsdump main.cpp) +endif() target_link_libraries(hsdump hs expressionutil crosscompileutil) diff --git a/unit/CMakeLists.txt b/unit/CMakeLists.txt index 32e01450..b0706fa8 100644 --- a/unit/CMakeLists.txt +++ b/unit/CMakeLists.txt @@ -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} $ $) +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))