# 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_enum_parser_bin
  TOOL_enum_parser_dependency
  tools/enum_parser/enum_parser
  enum_parser
)

add_subdirectory(ut)

add_library(catboost-cuda-gpu_data)


target_link_libraries(catboost-cuda-gpu_data PUBLIC
  contrib-libs-cxxsupp
  yutil
  library-cpp-grid_creator
  cpp-threading-local_executor
  catboost-cuda-cuda_lib
  catboost-cuda-cuda_util
  catboost-cuda-data
  catboost-cuda-ctrs
  private-libs-ctr_description
  catboost-libs-data
  catboost-libs-helpers
  private-libs-quantization
  private-libs-quantized_pool
  tools-enum_parser-enum_serialization_runtime
  internal-platform-cuda
)

target_sources(catboost-cuda-gpu_data PRIVATE
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/batch_binarized_ctr_calcer.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/cat_features_dataset.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/compressed_index.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/compressed_index_builder.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/dataset_helpers.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/feature_parallel_dataset.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/doc_parallel_dataset_builder.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/doc_parallel_dataset.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/feature_parallel_dataset_builder.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/oblivious_tree_bin_builder.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/pinned_memory_estimation.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/samples_grouping.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/samples_grouping_gpu.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/querywise_helper.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/bootstrap.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/non_zero_filter.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/ctr_helper.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/feature_layout.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/gpu_binarization_helpers.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/estimated_features_calcer.cpp
)

target_cuda_sources(catboost-cuda-gpu_data PRIVATE
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/kernel/split.cu
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/kernel/query_helper.cu
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/kernel/binarize.cu
)


target_cuda_flags(catboost-cuda-gpu_data
  -Wno-deprecated-gpu-targets
)

generate_enum_serilization(catboost-cuda-gpu_data
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/grid_policy.h
  INCLUDE_HEADERS
  catboost/cuda/gpu_data/grid_policy.h
)

add_global_library_for(catboost-cuda-gpu_data.global
  catboost-cuda-gpu_data)


target_link_libraries(catboost-cuda-gpu_data.global PUBLIC
  contrib-libs-cxxsupp
  yutil
  library-cpp-grid_creator
  cpp-threading-local_executor
  catboost-cuda-cuda_lib
  catboost-cuda-cuda_util
  catboost-cuda-data
  catboost-cuda-ctrs
  private-libs-ctr_description
  catboost-libs-data
  catboost-libs-helpers
  private-libs-quantization
  private-libs-quantized_pool
  tools-enum_parser-enum_serialization_runtime
  internal-platform-cuda
)

target_sources(catboost-cuda-gpu_data.global PRIVATE
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/kernels.cpp
  ${PROJECT_SOURCE_DIR}/catboost/cuda/gpu_data/splitter.cpp
)

