# This file was generated by the YaTool build system (https://github.com/yandex/yatool),
# from a source YaTool build configuration provided in ya.make files.
#
# If the repository supports both CMake and ya build configurations, please modify both of them.
#
# If only CMake build configuration is supported then modify only CMake files and note that only
# simple modifications are allowed like adding source-files to targets or adding simple properties
# like target_include_directories. These modifications will be ported to original ya.make files
# by maintainers. Any complex modifications which can't be easily ported back to the ya build
# system may be rejected.
#
# Please refer to the build instructions in the repository for more information about manual
# changes in this file.

get_built_tool_path(
  TOOL_archiver_bin
  TOOL_archiver_dependency
  tools/archiver
  archiver
)

get_built_tool_path(
  TOOL_triecompiler_bin
  TOOL_triecompiler_dependency
  tools/triecompiler
  triecompiler
)

add_library(library-cpp-tokenizer)


target_compile_options(library-cpp-tokenizer PRIVATE
  -DCATBOOST_OPENSOURCE=yes
)

target_link_libraries(library-cpp-tokenizer PUBLIC
  contrib-libs-cxxsupp
  yutil
  library-cpp-enumbitset
  library-cpp-langmask
  cpp-token-lite
)

target_sources(library-cpp-tokenizer PRIVATE
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/abbreviations.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/charclasses.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/multitokenparser.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/multitokenutil.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/nlpparser.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/sentbreakfilter.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/split.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/tokenizer.cpp
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/special_tokens.cpp
)


add_custom_command(
  OUTPUT
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/special_tokens.trie
  DEPENDS
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/special_tokens.txt
  ${PROJECT_BINARY_DIR}/tools/triecompiler/triecompiler.exe
  WORKING_DIRECTORY
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer
  COMMAND
  ${PROJECT_BINARY_DIR}/tools/triecompiler/triecompiler.exe
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/special_tokens.trie
  -0
  -i
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/special_tokens.txt
  -w
)

add_custom_command(
  OUTPUT
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/SpecialTokens.rodata
  DEPENDS
  ${PROJECT_BINARY_DIR}/tools/archiver/archiver.exe
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/special_tokens.trie
  COMMAND
  ${PROJECT_BINARY_DIR}/tools/archiver/archiver.exe
  -q
  -p
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/special_tokens.trie:
  -o
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/SpecialTokens.rodata
)

target_ragel_lexers(library-cpp-tokenizer
  PRIVATE
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/nlptok_v2.rl6
  -L
  -G2
)

target_ragel_lexers(library-cpp-tokenizer
  PRIVATE
  ${PROJECT_SOURCE_DIR}/library/cpp/tokenizer/nlptok_v3.rl6
  -L
  -G2
)

target_rodata_sources(library-cpp-tokenizer
  PRIVATE
  ${PROJECT_BINARY_DIR}/library/cpp/tokenizer/SpecialTokens.rodata
)
