endif()
if(CMAKE_BUILD_TYPE MATCHES RELEASE|RELWITHDEBINFO|MINSIZEREL)
+ message(STATUS "using release build")
set(RELEASE_BUILD TRUE)
else()
set(RELEASE_BUILD FALSE)
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)
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")
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}
${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
--- /dev/null
+; 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
--- /dev/null
+; 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
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
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()
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()
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)
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))