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

load("@fbcode_macros//build_defs:protobuf_library.bzl", "protobuf_library")
load("//data_compression/experimental/zstrong:defs.bzl", "zs_cxxbinary", "zs_cxxlibrary")

oncall("data_compression")

protobuf_library(
    name = "schema",
    srcs = ["schema.proto"],
    langs = [
        "cpp",
    ],
)

zs_cxxlibrary(
    name = "utils",
    srcs = ["StringWriter.cpp"],
    headers = [
        "StringReader.h",
        "StringWriter.h",
        "mem.h",
    ],
    exported_deps = [
        "//data_compression/experimental/zstrong:zstronglib",
    ],
)

zs_cxxbinary(
    name = "cli",
    srcs = ["cli.cpp"],
    compiler_flags = [
        "-Wno-switch-enum",
        "-Wno-cast-qual",
    ],
    preprocessor_flags = [
        "-DOPENZL_BUCK_BUILD",
    ],
    deps = [
        "fbsource//third-party/protobuf:libprotobuf",
        ":schema-cpp",
        ":serializer",
        "//data_compression/experimental/zstrong/tools:arg",
        "//data_compression/experimental/zstrong/tools:io",
        "//data_compression/experimental/zstrong/tools/training:train",
    ],
)

zs_cxxlibrary(
    name = "serializer",
    srcs = [
        "ProtoDeserializer.cpp",
        "ProtoSerializer.cpp",
    ],
    headers = [
        "ProtoDeserializer.h",
        "ProtoSerializer.h",
        "Types.h",
    ],
    compiler_flags = [
        "-Wno-switch-enum",
        "-Wno-cast-qual",
    ],
    deps = [
        "fbsource//third-party/protobuf:libprotobuf",
        "//data_compression/experimental/zstrong:zstronglib",
    ],
    exported_deps = [
        ":proto_graph",
        ":utils",
        "//data_compression/experimental/zstrong/cpp:openzl_cpp",
    ],
)

zs_cxxlibrary(
    name = "proto_graph",
    srcs = [
        "ProtoGraph.cpp",
    ],
    headers = [
        "ProtoGraph.h",
    ],
    compiler_flags = [
        "-Wno-switch-enum",
        "-Wno-cast-qual",
    ],
    deps = [
        "//data_compression/experimental/zstrong:zstronglib",
    ],
)
