1
0
Fork 0
arangodb/3rdParty/iresearch/core/CMakeLists.txt

1830 lines
56 KiB
CMake

# set version components
if (NOT IResearch_version_major)
set(IResearch_version_major "1")
endif()
if (NOT IResearch_version_minor)
set(IResearch_version_minor "0")
endif()
if (NOT IResearch_version_revision)
set(IResearch_version_revision "0")
endif()
if (NOT IResearch_version_patch)
set(IResearch_version_patch "0")
endif()
# set libatomic library
# (not available on Windows and Mac)
if (NOT MSVC AND NOT APPLE)
set(ATOMIC_LIBRARY atomic)
endif()
# set required standard version
if ("${CMAKE_CXX_STANDARD}" STREQUAL "")
set(CMAKE_CXX_STANDARD 11)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# calculate version
math(EXPR IResearch_int_version "(${IResearch_version_major} * 1000000) + (${IResearch_version_minor} * 10000) + (${IResearch_version_revision} * 100) + (${IResearch_version_patch} * 1)" )
set(IResearch_version "${IResearch_version_major}.${IResearch_version_minor}.${IResearch_version_revision}.${IResearch_version_patch}")
# generate version_defines.hpp
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/utils/version_defines.template.hpp"
"${CMAKE_CURRENT_BINARY_DIR}/utils/version_defines.hpp"
)
set(IResearch_INCLUDE_DIR
"${PROJECT_SOURCE_DIR}/core"
CACHE INTERNAL
""
)
if (MSVC)
add_definitions(/W4)
# disable "checked iterators" feature
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
# set OS specific sources
set(IResearch_core_os_specific_sources
./utils/mman_win32.cpp
)
# set OS specific headers
set(IResearch_core_os_specific_headers
./utils/mman_win32.hpp
)
else()
add_definitions(-Wall)
if (NOT APPLE)
set(CMAKE_CXX_FLAGS_RELEASE "-s ${CMAKE_CXX_FLAGS_RELEASE}")
endif()
# set OS specific headers
set(IResearch_core_os_specific_headers
./utils/mman_posix.hpp
)
endif()
source_group("analysis" ./analysis/*)
source_group("document" ./document/*)
source_group("error" ./error/*)
source_group("formats" ./formats/*)
source_group("index" ./index/*)
source_group("iql" ./iql/*)
source_group("search" ./search/*)
source_group("store" ./store/*)
source_group("utils" ./utils/*)
if (USE_SIMDCOMP)
set(IResearch_core_optimized_sources
./store/store_utils_optimized.cpp
)
endif()
set(IResearch_core_sources
./utils/string.cpp
./analysis/analyzer.cpp
./analysis/analyzers.cpp
./analysis/token_attributes.cpp
./analysis/token_streams.cpp
./error/error.cpp
./formats/formats.cpp
./formats/format_utils.cpp
./formats/skip_list.cpp
./index/directory_reader.cpp
./index/field_data.cpp
./index/field_meta.cpp
./index/file_names.cpp
./index/index_meta.cpp
./index/index_writer.cpp
./index/index_reader.cpp
./index/iterators.cpp
./index/merge_writer.cpp
./index/postings.cpp
./index/segment_reader.cpp
./index/segment_writer.cpp
./index/sorted_column.cpp
./iql/parser.cc
./iql/parser_common.cpp
./iql/parser_context.cpp
./iql/query_builder.cpp
./search/all_filter.cpp
./search/all_iterator.cpp
./search/granular_range_filter.cpp
./search/scorers.cpp
./search/sort.cpp
./search/cost.cpp
./search/score.cpp
./search/score_doc_iterators.cpp
./search/bitset_doc_iterator.cpp
./search/filter.cpp
./search/term_filter.cpp
./search/prefix_filter.cpp
./search/range_filter.cpp
./search/phrase_filter.cpp
./search/column_existence_filter.cpp
./search/same_position_filter.cpp
./search/range_query.cpp
./search/term_query.cpp
./search/boolean_filter.cpp
./store/data_input.cpp
./store/data_output.cpp
./store/directory.cpp
./store/directory_attributes.cpp
./store/directory_cleaner.cpp
./store/fs_directory.cpp
./store/mmap_directory.cpp
./store/memory_directory.cpp
./store/store_utils.cpp
./utils/async_utils.cpp
./utils/attributes.cpp
./utils/bit_packing.cpp
./utils/encryption.cpp
./utils/ctr_encryption.cpp
./utils/compression.cpp
./utils/delta_compression.cpp
./utils/lz4compression.cpp
./utils/directory_utils.cpp
./utils/file_utils.cpp
./utils/mmap_utils.cpp
./utils/hash_utils.cpp
./utils/index_utils.cpp
./utils/math_utils.cpp
./utils/memory.cpp
./utils/text_format.cpp
./utils/timer_utils.cpp
./utils/version_utils.cpp
./utils/utf8_path.cpp
./utils/locale_utils.cpp
./utils/log.cpp
./utils/so_utils.cpp
./utils/process_utils.cpp
./utils/network_utils.cpp
./utils/cpuinfo.cpp
./utils/numeric_utils.cpp
${IResearch_core_os_specific_sources}
${IResearch_core_optimized_sources}
)
set(IResearch_core_headers
./analysis/analyzer.hpp
./analysis/analyzer.hpp
./analysis/token_attributes.hpp
./analysis/token_stream.hpp
./analysis/token_streams.hpp
./error/error.hpp
./formats/formats.hpp
./formats/format_utils.hpp
./formats/skip_list.hpp
./index/directory_reader.hpp
./index/field_data.hpp
./index/field_meta.hpp
./index/file_names.hpp
./index/index_meta.hpp
./index/index_reader.hpp
./index/iterators.hpp
./index/segment_reader.hpp
./index/segment_writer.hpp
./index/index_writer.hpp
./iql/parser_common.hpp
./iql/parser_context.hpp
./iql/query_builder.hpp
./search/all_filter.hpp
./search/all_iterator.hpp
./search/granular_range_filter.hpp
./search/scorers.hpp
./search/sort.hpp
./search/cost.hpp
./search/filter.hpp
./search/score_doc_iterators.hpp
./search/term_filter.hpp
./search/phrase_filter.hpp
./search/same_position_filter.hpp
./search/prefix_filter.hpp
./search/range_filter.hpp
./search/column_existence_filter.hpp
./search/range_query.hpp
./search/term_query.hpp
./search/boolean_filter.hpp
./search/disjunction.hpp
./search/conjunction.hpp
./search/exclusion.hpp
./store/data_input.hpp
./store/data_output.hpp
./store/directory.hpp
./store/fs_directory.hpp
./store/memory_directory.hpp
./store/store_utils.hpp
./utils/attributes.hpp
./utils/bit_packing.hpp
./utils/bit_utils.hpp
./utils/block_pool.hpp
./utils/compression.hpp
./utils/lz4compression.hpp
./utils/file_utils.hpp
./utils/fst.hpp
./utils/fst_decl.hpp
./utils/fst_utils.hpp
./utils/mmap_utils.hpp
./utils/integer.hpp
./utils/io_utils.hpp
./utils/iterator.hpp
./utils/math_utils.hpp
./utils/memory.hpp
./utils/misc.hpp
./utils/noncopyable.hpp
./utils/singleton.hpp
./utils/register.hpp
./utils/std.hpp
./utils/string.hpp
./utils/log.hpp
./utils/thread_utils.hpp
./utils/object_pool.hpp
./utils/so_utils.hpp
./utils/process_utils.hpp
./utils/network_utils.hpp
./utils/cpuinfo.hpp
./utils/numeric_utils.hpp
./utils/version_utils.hpp
./utils/bitset.hpp
./utils/bitvector.hpp
./utils/type_id.hpp
./shared.hpp
./types.hpp
)
# TODO: use FindLibDL and check linux distr version
if (NOT MSVC)
set(DL_LIBRARY dl)
endif()
include_directories(
${IResearch_INCLUDE_DIR}
${EXTERNAL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS} # ensure Boost paths take precedence over other system libraries as Boost may be defined elsewhere
${BFD_INCLUDE_DIR}
${Lz4_INCLUDE_DIR}
${Unwind_INCLUDE_DIR}
)
add_library(${IResearch_TARGET_NAME}-shared
SHARED
${IResearch_core_sources} ${IResearch_core_headers}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-murmurhash>
)
add_library(${IResearch_TARGET_NAME}-static
STATIC
${IResearch_core_sources} ${IResearch_core_headers}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-murmurhash>
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-shared-scrt
SHARED
${IResearch_core_sources} ${IResearch_core_headers}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-murmurhash-scrt>
)
add_library(${IResearch_TARGET_NAME}-static-scrt
STATIC
${IResearch_core_sources} ${IResearch_core_headers}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-murmurhash-scrt>
)
endif()
add_sanitizers(${IResearch_TARGET_NAME}-shared)
add_sanitizers(${IResearch_TARGET_NAME}-static)
# generate IQL grammar
# force dependency modification validation by comparing with local copy of the
# source file to suppress file regeneration by scripts generated for MSVC and to
# suppress file regeneration by scripts generated for 'make' due to equal
# dependency and generated file timestamp
add_custom_command(
OUTPUT iql/parser.cc
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/iql/parser.yy
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/iql/parser.yy
COMMAND ${CMAKE_COMMAND} -E make_directory iql
COMMAND ${CMAKE_COMMAND} -E md5sum iql/parser.cc || ${CMAKE_COMMAND} -E remove iql/parser.yy
COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/iql/parser.yy iql/parser.yy || bison --graph --report=all -Wnone -o iql/parser.cc ${CMAKE_CURRENT_SOURCE_DIR}/iql/parser.yy
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/iql/parser.yy iql/parser.yy
)
# trigger generation of BUILD_IDENTIFIER if needed
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/BUILD_IDENTIFIER
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/BUILD_IDENTIFIER
)
# trigger regeneration of utils/version_utils.cpp with build_id from file: BUILD_IDENTIFIER
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/utils/build_identifier.csx
COMMAND ${CMAKE_COMMAND} -DSRC="${CMAKE_BINARY_DIR}/BUILD_IDENTIFIER" -DDST="${CMAKE_CURRENT_BINARY_DIR}/utils/build_identifier.csx" -P "${PROJECT_SOURCE_DIR}/cmake/HexEncodeFile.cmake"
COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/version_utils.cpp
DEPENDS utils ${CMAKE_BINARY_DIR}/BUILD_IDENTIFIER
WORKING_DIRECTORY utils
)
add_custom_target(
${IResearch_TARGET_NAME}-build_identifier
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/utils/build_identifier.csx
)
# trigger generation of BUILD_VERSION if needed
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/BUILD_VERSION
COMMAND ${CMAKE_COMMAND} -E echo_append "${IResearch_version}" > ${CMAKE_BINARY_DIR}/BUILD_VERSION
)
# trigger regeneration of utils/version_utils.cpp with build_id from file: BUILD_VERSION
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/utils/build_version.csx
COMMAND ${CMAKE_COMMAND} -DSRC="${CMAKE_BINARY_DIR}/BUILD_VERSION" -DDST="${CMAKE_CURRENT_BINARY_DIR}/utils/build_version.csx" -P "${PROJECT_SOURCE_DIR}/cmake/HexEncodeFile.cmake"
COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/version_utils.cpp
DEPENDS utils ${CMAKE_BINARY_DIR}/BUILD_VERSION
WORKING_DIRECTORY utils
)
add_custom_target(
${IResearch_TARGET_NAME}-build_version
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/utils/build_version.csx
)
add_dependencies(${IResearch_TARGET_NAME}-shared
${IResearch_TARGET_NAME}-build_identifier
${IResearch_TARGET_NAME}-build_version
)
add_dependencies(${IResearch_TARGET_NAME}-static
${IResearch_TARGET_NAME}-build_identifier
${IResearch_TARGET_NAME}-build_version
${IResearch_TARGET_NAME}-analyzer-delimiter-static
${IResearch_TARGET_NAME}-analyzer-ngram-static
${IResearch_TARGET_NAME}-analyzer-text-static
${IResearch_TARGET_NAME}-analyzer-norm-static
${IResearch_TARGET_NAME}-analyzer-stem-static
${IResearch_TARGET_NAME}-analyzer-mask-static
${IResearch_TARGET_NAME}-format-1_0-static
${IResearch_TARGET_NAME}-scorer-tfidf-static
${IResearch_TARGET_NAME}-scorer-bm25-static
)
# setup CRT
if(MSVC)
add_dependencies(${IResearch_TARGET_NAME}-shared-scrt
${IResearch_TARGET_NAME}-build_identifier
${IResearch_TARGET_NAME}-build_version
)
add_dependencies(${IResearch_TARGET_NAME}-static-scrt
${IResearch_TARGET_NAME}-build_identifier
${IResearch_TARGET_NAME}-build_version
${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
${IResearch_TARGET_NAME}-analyzer-text-static-scrt
${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
${IResearch_TARGET_NAME}-format-1_0-static-scrt
${IResearch_TARGET_NAME}-scorer-tfidf-static-scrt
${IResearch_TARGET_NAME}-scorer-bm25-static-scrt
)
endif()
target_include_directories(${IResearch_TARGET_NAME}-shared
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-static
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
# setup CRT
if(MSVC)
target_include_directories(${IResearch_TARGET_NAME}-shared-scrt
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-static-scrt
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
endif()
# setup MSVC specific compiler flags
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
PRIVATE "/EHa"
)
target_compile_options(${IResearch_TARGET_NAME}-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
PRIVATE "/EHa"
)
target_compile_options(${IResearch_TARGET_NAME}-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
PRIVATE "/EHa"
)
target_compile_options(${IResearch_TARGET_NAME}-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
PRIVATE "/EHa"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME iresearch
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;BOOST_ALL_DYN_LINK;$<$<CONFIG:Debug>:YYDEBUG=1>"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME iresearch-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME iresearch-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;BOOST_ALL_DYN_LINK"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME iresearch-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
if (MSVC)
set(MSVC_ONLY_LIBRARIES "Dbghelp.lib")
else()
set(MSVC_ONLY_LIBRARIES "")
endif()
if (USE_SIMDCOMP)
set(SIMD_LIBRARY_SHARED "simdcomp-shared")
set(SIMD_LIBRARY_STATIC "simdcomp-static")
endif()
target_link_libraries(${IResearch_TARGET_NAME}-shared
${GCOV_LIBRARY}
${BFD_SHARED_LIBS}
${Boost_SHARED_sharedRT_LIBRARIES}
${Lz4_SHARED_LIB}
$<TARGET_PROPERTY:icu-shared,IMPORTED_LOCATION> # cmake on MSVC does not properly expand dependencies for 'icu-shared'
$<TARGET_PROPERTY:icu-shared,INTERFACE_LINK_LIBRARIES> # cmake on MSVC does not properly expand dependencies for 'icu-shared'
${Unwind_SHARED_LIBS}
${DL_LIBRARY}
${MSVC_ONLY_LIBRARIES}
${SIMD_LIBRARY_SHARED}
${ATOMIC_LIBRARY}
)
target_link_libraries(${IResearch_TARGET_NAME}-static
${IResearch_TARGET_NAME}-analyzer-delimiter-static
${IResearch_TARGET_NAME}-analyzer-ngram-static
${IResearch_TARGET_NAME}-analyzer-text-static
${IResearch_TARGET_NAME}-analyzer-norm-static
${IResearch_TARGET_NAME}-analyzer-stem-static
${IResearch_TARGET_NAME}-analyzer-mask-static
${IResearch_TARGET_NAME}-format-1_0-static
${IResearch_TARGET_NAME}-scorer-bm25-static
${IResearch_TARGET_NAME}-scorer-tfidf-static
${GCOV_LIBRARY}
${BFD_STATIC_LIBS}
${Lz4_STATIC_LIB}
icu-static
${Unwind_STATIC_LIBS}
${DL_LIBRARY}
${MSVC_ONLY_LIBRARIES}
${SIMD_LIBRARY_STATIC}
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-shared-scrt
${GCOV_LIBRARY}
${BFD_SHARED_LIBS}
${Boost_SHARED_sharedRT_LIBRARIES}
${Lz4_SHARED_LIB}
$<TARGET_PROPERTY:icu-shared,IMPORTED_LOCATION> # cmake on MSVC does not properly expand dependencies for 'icu-shared'
$<TARGET_PROPERTY:icu-shared,INTERFACE_LINK_LIBRARIES> # cmake on MSVC does not properly expand dependencies for 'icu-shared'
${Unwind_SHARED_LIBS}
${DL_LIBRARY}
${MSVC_ONLY_LIBRARIES}
)
target_link_libraries(${IResearch_TARGET_NAME}-static-scrt
${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
${IResearch_TARGET_NAME}-analyzer-text-static-scrt
${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
${IResearch_TARGET_NAME}-format-1_0-static-scrt
${IResearch_TARGET_NAME}-scorer-bm25-static-scrt
${IResearch_TARGET_NAME}-scorer-tfidf-static-scrt
${GCOV_LIBRARY}
${BFD_STATIC_LIBS}
${Lz4_STATIC_LIB}
icu-static
${Unwind_STATIC_LIBS}
${DL_LIBRARY}
${MSVC_ONLY_LIBRARIES}
)
endif()
unset(IResearch_STATIC_LIBRARIES)
set(IRESEARCH_STATIC_DEPENDENCIES
${BFD_STATIC_LIBS}
${Unwind_STATIC_LIBS}
"$<TARGET_FILE:icudata-static>" # must expand icu-static into components
"$<TARGET_FILE:icui18n-static>" # must expand icu-static into components
"$<TARGET_FILE:icuuc-static>" # must expand icu-static into components
"$<TARGET_FILE:lz4_static>"
"$<TARGET_FILE:stemmer-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-delimiter-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-ngram-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-text-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-norm-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-stem-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-analyzer-mask-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-format-1_0-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-scorer-tfidf-static>"
"$<TARGET_FILE:${IResearch_TARGET_NAME}-scorer-bm25-static>"
)
if (USE_SIMDCOMP)
list(APPEND IRESEARCH_STATIC_DEPENDENCIES "$<TARGET_FILE:${SIMD_LIBRARY_STATIC}>")
endif()
if (MSVC)
foreach(ELEMENT
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_RELEASE}>"
${IRESEARCH_STATIC_DEPENDENCIES})
set(IResearch_STATIC_LIBRARIES "${IResearch_STATIC_LIBRARIES} \"${ELEMENT}\"")
endforeach()
set(IResearch_STATIC_LIBRARIES_OUT "${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/libiresearch-sa${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(IResearch_STATIC_LIBRARIES_CMD "lib.exe \"/OUT:${IResearch_STATIC_LIBRARIES_OUT}\" \"$<TARGET_FILE:${IResearch_TARGET_NAME}-static>\" ${IResearch_STATIC_LIBRARIES}")
string(REPLACE " " ";" IResearch_STATIC_LIBRARIES_CMD "${IResearch_STATIC_LIBRARIES_CMD}") # COMMAND requires ';' instead of ' ' (this is required for MSVC, cannot use VERBATIM)
add_custom_command(
OUTPUT "${IResearch_STATIC_LIBRARIES_OUT}"
DEPENDS ${IResearch_TARGET_NAME}-static
COMMAND ${IResearch_STATIC_LIBRARIES_CMD}
#VERBATIM - this causes error: "The input line is too long."
)
add_library(${IResearch_TARGET_NAME}-static-allinone
STATIC IMPORTED GLOBAL
)
add_custom_target(${IResearch_TARGET_NAME}-static-allinone-build
DEPENDS "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_target_properties(${IResearch_TARGET_NAME}-static-allinone
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:${IResearch_TARGET_NAME}-static,INTERFACE_INCLUDE_DIRECTORIES>"
IMPORTED_LOCATION "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_property(TARGET ${IResearch_TARGET_NAME}-static-allinone
PROPERTY
INTERFACE_LINK_LIBRARIES # additional IMPORTED_LOCATION value list (non-static libraries)
${ATOMIC_LIBRARY} # non-static library
${DL_LIBRARY} # non-static library
${MSVC_ONLY_LIBRARIES} # non-static library
)
add_dependencies(${IResearch_TARGET_NAME}-static-allinone
${IResearch_TARGET_NAME}-static-allinone-build
)
unset(IResearch_STATIC_SCRT_LIBRARIES)
foreach(ELEMENT
"$<$<CONFIG:Debug>:${Boost_STATIC_staticRT_LOCALE_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_staticRT_LOCALE_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_staticRT_SYSTEM_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_staticRT_SYSTEM_LIBRARY_RELEASE}>"
${IRESEARCH_STATIC_DEPENDENCIES})
set(IResearch_STATIC_SCRT_LIBRARIES "${IResearch_STATIC_SCRT_LIBRARIES} \"${ELEMENT}\"")
endforeach()
set(IResearch_STATIC_SCRT_LIBRARIES_OUT "${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/libiresearch-srct-sa${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(IResearch_STATIC_SCRT_LIBRARIES_CMD "lib.exe \"/OUT:${IResearch_STATIC_SCRT_LIBRARIES_OUT}\" \"$<TARGET_FILE:${IResearch_TARGET_NAME}-static-scrt>\" ${IResearch_STATIC_SCRT_LIBRARIES}")
string(REPLACE " " ";" IResearch_STATIC_SCRT_LIBRARIES_CMD "${IResearch_STATIC_SCRT_LIBRARIES_CMD}") # COMMAND requires ';' instead of ' ' (this is required for MSVC, cannot use VERBATIM)
add_custom_command(
OUTPUT "${IResearch_STATIC_SCRT_LIBRARIES_OUT}"
DEPENDS ${IResearch_TARGET_NAME}-static-scrt
COMMAND ${IResearch_STATIC_SCRT_LIBRARIES_CMD}
#VERBATIM - this causes error: "The input line is too long."
)
add_library(${IResearch_TARGET_NAME}-static-scrt-allinone
STATIC IMPORTED GLOBAL
)
add_custom_target(${IResearch_TARGET_NAME}-static-scrt-allinone-build
DEPENDS "${IResearch_STATIC_SCRT_LIBRARIES_OUT}"
)
set_target_properties(${IResearch_TARGET_NAME}-static-scrt-allinone
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:${IResearch_TARGET_NAME}-static-srct,INTERFACE_INCLUDE_DIRECTORIES>"
IMPORTED_LOCATION "${IResearch_STATIC_SCRT_LIBRARIES_OUT}"
)
set_property(TARGET ${IResearch_TARGET_NAME}-static-scrt-allinone
PROPERTY
INTERFACE_LINK_LIBRARIES # additional IMPORTED_LOCATION value list (non-static libraries)
${ATOMIC_LIBRARY} # non-static library
${DL_LIBRARY} # non-static library
${MSVC_ONLY_LIBRARIES} # non-static library
)
add_dependencies(${IResearch_TARGET_NAME}-static-scrt-allinone
${IResearch_TARGET_NAME}-static-scrt-allinone-build
)
elseif (APPLE)
foreach(ELEMENT
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_THREAD_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_THREAD_LIBRARY_RELEASE}>"
${IRESEARCH_STATIC_DEPENDENCIES})
set(IResearch_STATIC_LIBRARIES "${IResearch_STATIC_LIBRARIES} '${ELEMENT}'")
endforeach ()
set(IResearch_STATIC_LIBRARIES_OUT "${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/libiresearch-sa${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(IResearch_STATIC_LIBRARIES_CMD "libtool -static -o '${IResearch_STATIC_LIBRARIES_OUT}' -a '$<TARGET_FILE:${IResearch_TARGET_NAME}-static>' ${IResearch_STATIC_LIBRARIES}")
add_custom_command(
OUTPUT "${IResearch_STATIC_LIBRARIES_OUT}"
DEPENDS ${IResearch_TARGET_NAME}-static
COMMAND sh -c ${IResearch_STATIC_LIBRARIES_CMD}
VERBATIM
)
add_library(${IResearch_TARGET_NAME}-static-allinone
STATIC IMPORTED GLOBAL
)
add_custom_target(${IResearch_TARGET_NAME}-static-allinone-build
DEPENDS "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_target_properties(${IResearch_TARGET_NAME}-static-allinone
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:${IResearch_TARGET_NAME}-static,INTERFACE_INCLUDE_DIRECTORIES>"
IMPORTED_LOCATION "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_property(TARGET ${IResearch_TARGET_NAME}-static-allinone
PROPERTY
INTERFACE_LINK_LIBRARIES # additional IMPORTED_LOCATION value list (non-static libraries)
${ATOMIC_LIBRARY} # non-static library
${DL_LIBRARY} # non-static library
${MSVC_ONLY_LIBRARIES} # non-static library
)
add_dependencies(${IResearch_TARGET_NAME}-static-allinone
${IResearch_TARGET_NAME}-static-allinone-build
)
else()
foreach(ELEMENT
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_LOCALE_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_SYSTEM_LIBRARY_RELEASE}>"
"$<$<CONFIG:Debug>:${Boost_STATIC_sharedRT_THREAD_LIBRARY_DEBUG}>$<$<NOT:$<CONFIG:Debug>>:${Boost_STATIC_sharedRT_THREAD_LIBRARY_RELEASE}>"
${IRESEARCH_STATIC_DEPENDENCIES})
set(IResearch_STATIC_LIBRARIES "${IResearch_STATIC_LIBRARIES} addlib '${ELEMENT}'\\n")
endforeach ()
set(IResearch_STATIC_LIBRARIES_OUT "${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/libiresearch-sa${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(IResearch_STATIC_LIBRARIES_CMD "`which echo` -e \"create '${IResearch_STATIC_LIBRARIES_OUT}'\\n addlib '$<TARGET_FILE:${IResearch_TARGET_NAME}-static>'\\n ${IResearch_STATIC_LIBRARIES} save\\n end\" | ar -M")
add_custom_command(
OUTPUT "${IResearch_STATIC_LIBRARIES_OUT}"
DEPENDS ${IResearch_TARGET_NAME}-static
COMMAND sh -c ${IResearch_STATIC_LIBRARIES_CMD}
VERBATIM
)
add_library(${IResearch_TARGET_NAME}-static-allinone
STATIC IMPORTED GLOBAL
)
add_custom_target(${IResearch_TARGET_NAME}-static-allinone-build
DEPENDS "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_target_properties(${IResearch_TARGET_NAME}-static-allinone
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:${IResearch_TARGET_NAME}-static,INTERFACE_INCLUDE_DIRECTORIES>"
IMPORTED_LOCATION "${IResearch_STATIC_LIBRARIES_OUT}"
)
set_property(TARGET ${IResearch_TARGET_NAME}-static-allinone
PROPERTY
INTERFACE_LINK_LIBRARIES # additional IMPORTED_LOCATION value list (non-static libraries)
${ATOMIC_LIBRARY} # non-static library
${DL_LIBRARY} # non-static library
${MSVC_ONLY_LIBRARIES} # non-static library
)
add_dependencies(${IResearch_TARGET_NAME}-static-allinone
${IResearch_TARGET_NAME}-static-allinone-build
)
endif()
################################################################################
### analysis plugin : delimiter
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-delimiter-shared
SHARED
./analysis/delimited_token_stream.cpp
./analysis/delimited_token_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-delimiter-static
STATIC
./analysis/delimited_token_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-delimiter-shared-scrt
SHARED
./analysis/delimited_token_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
STATIC
./analysis/delimited_token_stream.cpp
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-delimiter-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-delimiter-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-delimiter-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-delimiter-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-delimiter
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-delimiter-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-delimiter-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-delimiter-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-delimiter-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-delimiter-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-delimiter-shared
${IResearch_TARGET_NAME}-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-delimiter-static
${IResearch_TARGET_NAME}-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-delimiter-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-delimiter-static-scrt
${IResearch_TARGET_NAME}-static-scrt
)
endif()
################################################################################
### analysis plugin : text
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-text-shared
SHARED
./analysis/text_token_stream.cpp
./analysis/text_token_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-text-static
STATIC
./analysis/text_token_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-text-shared-scrt
SHARED
./analysis/text_token_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-text-static-scrt
STATIC
./analysis/text_token_stream.cpp
)
endif()
target_include_directories(${IResearch_TARGET_NAME}-analyzer-text-shared
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
PRIVATE ${Snowball_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-text-static
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
PRIVATE ${Snowball_INCLUDE_DIR}
)
# setup CRT
if(MSVC)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-text-shared-scrt
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
PRIVATE ${Snowball_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-text-static-scrt
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
PRIVATE ${Snowball_INCLUDE_DIR}
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-text-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-text-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-text-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-text-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-text-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-text
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;BOOST_ALL_DYN_LINK"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-text-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-text-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-text-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-text-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;BOOST_ALL_DYN_LINK"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-text-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-text-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-text-shared
${IResearch_TARGET_NAME}-shared
stemmer-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-text-static
${IResearch_TARGET_NAME}-static
stemmer-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-text-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
stemmer-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-text-static-scrt
${IResearch_TARGET_NAME}-static-scrt
stemmer-static
)
endif()
################################################################################
### analysis plugin : text token normalizing
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-norm-shared
SHARED
./analysis/text_token_normalizing_stream.cpp
./analysis/text_token_normalizing_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-norm-static
STATIC
./analysis/text_token_normalizing_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-norm-shared-scrt
SHARED
./analysis/text_token_normalizing_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
STATIC
./analysis/text_token_normalizing_stream.cpp
)
endif()
target_include_directories(${IResearch_TARGET_NAME}-analyzer-norm-shared
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-norm-static
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
)
# setup CRT
if(MSVC)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-norm-shared-scrt
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
PRIVATE ${ICU_INCLUDE_DIR} # cmake on MSVC does not properly expand dependencies for linked libraries
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-norm-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-norm-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-norm-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-norm-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-norm
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-norm-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-norm-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-norm-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-norm-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-norm-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-norm-shared
${IResearch_TARGET_NAME}-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-norm-static
${IResearch_TARGET_NAME}-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-norm-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-norm-static-scrt
${IResearch_TARGET_NAME}-static-scrt
)
endif()
################################################################################
### analysis plugin : text token stemming
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-stem-shared
SHARED
./analysis/text_token_stemming_stream.cpp
./analysis/text_token_stemming_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-stem-static
STATIC
./analysis/text_token_stemming_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-stem-shared-scrt
SHARED
./analysis/text_token_stemming_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
STATIC
./analysis/text_token_stemming_stream.cpp
)
endif()
target_include_directories(${IResearch_TARGET_NAME}-analyzer-stem-shared
PRIVATE ${Snowball_INCLUDE_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-stem-static
PRIVATE ${Snowball_INCLUDE_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
# setup CRT
if(MSVC)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-stem-shared-scrt
PRIVATE ${Snowball_INCLUDE_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
target_include_directories(${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
PRIVATE ${Snowball_INCLUDE_DIR}
PRIVATE ${ICU_INCLUDE_DIR}
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-stem-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-stem-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-stem-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-stem-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-stem
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-stem-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-stem-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-stem-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-stem-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-stem-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-stem-shared
${IResearch_TARGET_NAME}-shared
stemmer-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-stem-static
${IResearch_TARGET_NAME}-static
stemmer-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-stem-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
stemmer-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-stem-static-scrt
${IResearch_TARGET_NAME}-static-scrt
stemmer-static
)
endif()
################################################################################
### analysis plugin : token masking
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-mask-shared
SHARED
./analysis/token_masking_stream.cpp
./analysis/token_masking_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-mask-static
STATIC
./analysis/token_masking_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-mask-shared-scrt
SHARED
./analysis/token_masking_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
STATIC
./analysis/token_masking_stream.cpp
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-mask-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-mask-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-mask-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-mask-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-mask
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-mask-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-mask-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-mask-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-mask-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-mask-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-mask-shared
${IResearch_TARGET_NAME}-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-mask-static
${IResearch_TARGET_NAME}-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-mask-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-mask-static-scrt
${IResearch_TARGET_NAME}-static-scrt
)
endif()
################################################################################
### analysis plugin : ngram
################################################################################
add_library(${IResearch_TARGET_NAME}-analyzer-ngram-shared
SHARED
./analysis/ngram_token_stream.cpp
./analysis/ngram_token_stream.hpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-ngram-static
STATIC
./analysis/ngram_token_stream.cpp
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-analyzer-ngram-shared-scrt
SHARED
./analysis/ngram_token_stream.cpp
)
add_library(${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
STATIC
./analysis/ngram_token_stream.cpp
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-ngram-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-ngram-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-ngram-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-analyzer-ngram-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-ngram
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;BOOST_ALL_DYN_LINK"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-ngram-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-ngram-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-ngram-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-ngram-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;BOOST_ALL_DYN_LINK"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME analyzer-ngram-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-ngram-shared
${IResearch_TARGET_NAME}-shared
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-ngram-static
${IResearch_TARGET_NAME}-static
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-ngram-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
target_link_libraries(${IResearch_TARGET_NAME}-analyzer-ngram-static-scrt
${IResearch_TARGET_NAME}-static-scrt
)
endif()
################################################################################
### format plugin: format-1_0
################################################################################
if (USE_SIMDCOMP)
set(FORMAT_10_EXTRA_DEFS "IRESEARCH_FORMAT10_CODEC=1")
else()
set(FORMAT_10_EXTRA_DEFS "IRESEARCH_FORMAT10_CODEC=0")
endif()
set(IResearch_format-1_0_source
./formats/formats_10.cpp
./formats/formats_10_attributes.cpp
./formats/formats_burst_trie.cpp
./formats/formats_10.hpp
./formats/formats_10_attributes.hpp
./formats/formats_burst_trie.hpp
)
set(shared_format_library_name ${IResearch_TARGET_NAME}-format-1_0-shared)
set(static_format_library_name ${IResearch_TARGET_NAME}-format-1_0-static)
add_library(${shared_format_library_name}
SHARED
${IResearch_format-1_0_source}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-ofst> # used by formats_burst_trie
)
add_library(${static_format_library_name}
STATIC
${IResearch_format-1_0_source}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-ofst> # used by formats_burst_trie
)
# setup CRT
if(MSVC)
add_library(${shared_format_library_name}-scrt
SHARED
${IResearch_format-1_0_source}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-ofst-scrt> # used by formats_burst_trie
)
add_library(${static_format_library_name}-scrt
STATIC
${IResearch_format-1_0_source}
$<TARGET_OBJECTS:${IResearch_TARGET_NAME}-ofst-scrt> # used by formats_burst_trie
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${shared_format_library_name}
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${static_format_library_name}
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${shared_format_library_name}-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${static_format_library_name}-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${shared_format_library_name}
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME format-1_0
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;FST_NO_DYNAMIC_LINKING;${FORMAT_10_EXTRA_DEFS}"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${static_format_library_name}
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME format-1_0-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;FST_NO_DYNAMIC_LINKING;${FORMAT_10_EXTRA_DEFS}"
)
# setup CRT
if(MSVC)
set_target_properties(${shared_format_library_name}-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME format-1_0-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_EXPORTS;IRESEARCH_DLL_PLUGIN;FST_NO_DYNAMIC_LINKING;${FORMAT_10_EXTRA_DEFS}"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${static_format_library_name}-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME format-1_0-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;FST_NO_DYNAMIC_LINKING;${FORMAT_10_EXTRA_DEFS}"
)
endif()
target_include_directories(${shared_format_library_name}
SYSTEM
PRIVATE $<TARGET_PROPERTY:${IResearch_TARGET_NAME}-ofst,INTERFACE_INCLUDE_DIRECTORIES> # used by formats_burst_trie
)
target_include_directories(${static_format_library_name}
SYSTEM
PRIVATE $<TARGET_PROPERTY:${IResearch_TARGET_NAME}-ofst,INTERFACE_INCLUDE_DIRECTORIES> # used by formats_burst_trie
)
# setup CRT
if(MSVC)
target_include_directories(${shared_format_library_name}-scrt
SYSTEM
PRIVATE $<TARGET_PROPERTY:${IResearch_TARGET_NAME}-ofst-scrt,INTERFACE_INCLUDE_DIRECTORIES> # used by formats_burst_trie
)
target_include_directories(${static_format_library_name}-scrt
SYSTEM
PRIVATE $<TARGET_PROPERTY:${IResearch_TARGET_NAME}-ofst-scrt,INTERFACE_INCLUDE_DIRECTORIES> # used by formats_burst_trie
)
endif()
target_link_libraries(${shared_format_library_name}
${IResearch_TARGET_NAME}-shared
${ATOMIC_LIBRARY}
${FORMAT_10_EXTRA_LIBS_SHARED}
)
target_link_libraries(${static_format_library_name}
${IResearch_TARGET_NAME}-static
${ATOMIC_LIBRARY}
${FORMAT_10_EXTRA_LIBS_STATIC}
)
# setup CRT
if(MSVC)
target_link_libraries(${shared_format_library_name}-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
target_link_libraries(${static_format_library_name}-scrt
${IResearch_TARGET_NAME}-static-scrt
)
endif()
################################################################################
### scorer plugin : TF-IDF
################################################################################
set(IResearch_tfidf_source
./search/tfidf.cpp
./search/tfidf.hpp
)
add_library(${IResearch_TARGET_NAME}-scorer-tfidf-shared
SHARED
${IResearch_tfidf_source}
)
add_library(${IResearch_TARGET_NAME}-scorer-tfidf-static
STATIC
${IResearch_tfidf_source}
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-scorer-tfidf-shared-scrt
SHARED
${IResearch_tfidf_source}
)
add_library(${IResearch_TARGET_NAME}-scorer-tfidf-static-scrt
STATIC
${IResearch_tfidf_source}
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-scorer-tfidf-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-tfidf-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-tfidf-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-tfidf-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-scorer-tfidf-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-tfidf
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_IMPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-scorer-tfidf-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-tfidf-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-scorer-tfidf-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-tfidf-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_IMPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-scorer-tfidf-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-tfidf-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-scorer-tfidf-shared
${IResearch_TARGET_NAME}-shared
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-scorer-tfidf-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
endif()
################################################################################
### scorer plugin : BM25
################################################################################
set(IResearch_bm25_source
./search/bm25.cpp
./search/bm25.hpp
)
add_library(${IResearch_TARGET_NAME}-scorer-bm25-shared
SHARED
${IResearch_bm25_source}
)
add_library(${IResearch_TARGET_NAME}-scorer-bm25-static
STATIC
${IResearch_bm25_source}
)
# setup CRT
if(MSVC)
add_library(${IResearch_TARGET_NAME}-scorer-bm25-shared-scrt
SHARED
${IResearch_bm25_source}
)
add_library(${IResearch_TARGET_NAME}-scorer-bm25-static-scrt
STATIC
${IResearch_bm25_source}
)
endif()
# setup CRT
if(MSVC)
target_compile_options(${IResearch_TARGET_NAME}-scorer-bm25-shared
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-bm25-static
PRIVATE "$<$<CONFIG:Debug>:/MDd>$<$<NOT:$<CONFIG:Debug>>:/MD>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-bm25-shared-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
target_compile_options(${IResearch_TARGET_NAME}-scorer-bm25-static-scrt
PRIVATE "$<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>"
)
endif()
set_target_properties(${IResearch_TARGET_NAME}-scorer-bm25-shared
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-bm25
DEBUG_POSTFIX "" # otherwise library names will not match expected dynamically loaded value
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_IMPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-scorer-bm25-static
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-bm25-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
# setup CRT
if(MSVC)
set_target_properties(${IResearch_TARGET_NAME}-scorer-bm25-shared-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-bm25-scrt
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>;IRESEARCH_DLL;IRESEARCH_DLL_IMPORTS;IRESEARCH_DLL_PLUGIN"
CXX_VISIBILITY_PRESET hidden
)
set_target_properties(${IResearch_TARGET_NAME}-scorer-bm25-static-scrt
PROPERTIES
PREFIX lib
IMPORT_PREFIX lib
OUTPUT_NAME scorer-bm25-scrt-s
COMPILE_DEFINITIONS "$<$<CONFIG:Debug>:IRESEARCH_DEBUG>"
)
endif()
target_link_libraries(${IResearch_TARGET_NAME}-scorer-bm25-shared
${IResearch_TARGET_NAME}-shared
)
# setup CRT
if(MSVC)
target_link_libraries(${IResearch_TARGET_NAME}-scorer-bm25-shared-scrt
${IResearch_TARGET_NAME}-shared-scrt
)
endif()
##########################
# installation
##########################
install(TARGETS ${IResearch_TARGET_NAME}-shared
DESTINATION lib
)
install(TARGETS ${IResearch_TARGET_NAME}-static
DESTINATION lib
)
install(DIRECTORY analysis document error
DESTINATION include
PATTERN "*.cpp" EXCLUDE
PATTERN "*.mk" EXCLUDE
)