# Copyright (c) Meta Platforms, Inc. and affiliates.

load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library")
load("../../../defs.bzl", "relative_headers", "zs_cxxlibrary")

oncall("data_compression")

zs_cxxlibrary(
    name = "training_utils",
    srcs = [
        "serialized_compressor_internal.cpp",
        "thread_pool.cpp",
        "utils.cpp",
    ],
    headers = [
        "serialized_compressor_internal.h",
        "thread_pool.h",
        "utils.h",
    ],
    exported_deps = [
        "../..:io",
        "../..:logger",
        "../../..:common",
        "../../..:zstronglib",
        "../../../cpp:openzl_cpp",
    ],
)

zs_cxxlibrary(
    name = "genetic_algorithm",
    srcs = [
        "genetic_algorithm.cpp",
    ],
    headers = [
        "genetic_algorithm.h",
    ],
    exported_deps = [
        "../../../cpp:openzl_cpp",
    ],
)

cpp_library(
    # @autodeps-skip
    name = "crowding_distance_selector",
    srcs = ["crowding_distance_selector.cpp"],
    headers = relative_headers(["crowding_distance_selector.h"]),
    header_namespace = "",
    exported_deps = [
        "../../../cpp:openzl_cpp",
    ],
)

cpp_library(
    # @autodeps-skip
    name = "benchmark",
    srcs = ["benchmark.cpp"],
    headers = relative_headers(["benchmark.h"]),
    header_namespace = "",
    labels = ["autodeps2_generated"],
    exported_deps = [
        "../../../cpp:openzl_cpp",
        ":training_utils",
    ],
)

cpp_library(
    # @autodeps-skip
    name = "mutation",
    srcs = ["mutation.cpp"],
    headers = relative_headers(["mutation.h"]),
    header_namespace = "",
    labels = ["autodeps2_generated"],
    exported_deps = [
        "..:train_common",
        "../../../cpp:openzl_cpp",
        "../sample_collection:sample_collection",
        ":benchmark",
    ],
)

cpp_library(
    # @autodeps-skip
    name = "pareto_combination",
    srcs = ["pareto_combination.cpp"],
    headers = relative_headers(["pareto_combination.h"]),
    header_namespace = "",
    exported_deps = [
        "..:train_common",
        "../..:logger",
        "../../../cpp:openzl_cpp",
        "../sample_collection:sample_collection",
        ":benchmark",
        ":crowding_distance_selector",
        ":genetic_algorithm",
        ":mutation",
        ":training_utils",
    ],
)
