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

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

oncall("data_compression")

zs_cxxlibrary(
    name = "arg",
    srcs = glob(["arg/**/*.cpp"]),
    headers = glob(["arg/**/*.h"]),
)

zs_library(
    name = "fileio",
    srcs = [
        "fileio/fileio.c",
    ],
    headers = [
        "fileio/fileio.h",
    ],
    exported_deps = [
        "//data_compression/experimental/zstrong:common",
    ],
)

zs_cxxlibrary(
    name = "zstrong_cpp",
    srcs = ["zstrong_cpp.cpp"],
    headers = ["zstrong_cpp.h"],
    exported_deps = [
        "//data_compression/experimental/zstrong:zstronglib",
        "//data_compression/experimental/zstrong/cpp:openzl_cpp",
        "//data_compression/experimental/zstrong/custom_transforms/json_extract:json_extract",
        "//data_compression/experimental/zstrong/custom_transforms/parse:parse",
        "//data_compression/experimental/zstrong/custom_transforms/thrift:thrift_lib",
    ],
)

zs_cxxlibrary(
    name = "zstrong_ml",
    srcs = ["zstrong_ml.cpp"],
    headers = ["zstrong_ml.h"],
    compiler_flags = ["-Wno-float-equal"],
    strict_conversions = False,
    exported_deps = [
        ":zstrong_cpp",
        "//data_compression/experimental/zstrong/tools/gbt_predictor:zstrong_gbt_predictor",
        "//folly:base64",
        "//folly:dynamic",
        "//folly:synchronized",
    ],
)

zs_cxxlibrary(
    name = "zstrong_json",
    srcs = ["zstrong_json.cpp"],
    headers = ["zstrong_json.h"],
    compiler_flags = ["-Wno-float-equal"],
    strict_conversions = False,
    exported_deps = [
        ":zstrong_cpp",
        "//data_compression/experimental/zstrong:zstronglib",
        "//folly:base64",
        "//folly:dynamic",
        "//folly:file_util",
        "//folly:memory",
        "//folly/lang:bits",
    ],
)

cpp_library(
    name = "json",
    headers = ["json.hpp"],
    exported_deps = [
        "fbsource//third-party/libgcc:stdc++fs",
    ],
)

zs_cxxbinary(
    name = "make_canonical_parquet",
    srcs = ["parquet/make_canonical_parquet.cpp"],
    compiler_flags = [
        "-Wno-switch-enum",
        "-Wno-shadow",
    ],
    deps = [
        "fbsource//third-party/apache-arrow:arrow",
        ":arg",
        "//data_compression/experimental/zstrong/tools:io",
    ],
)

zs_library(
    name = "timefn",
    srcs = [
        "time/timefn.c",
    ],
    headers = [
        "time/timefn.h",
    ],
    exported_deps = [
        "//data_compression/experimental/zstrong:common",
    ],
)

zs_unittest(
    name = "test_timefn",
    srcs = [
        "time/tests/test_time.cpp",
    ],
    deps = [
        ":timefn",
    ],
)

zs_cxxlibrary(
    name = "logger",
    srcs = [
        "logger/Logger.cpp",
    ],
    headers = [
        "logger/Logger.h",
    ],
    deps = [],
)

zs_cxxlibrary(
    name = "io",
    srcs = glob(["io/**/*.cpp"]),
    headers = glob(["io/**/*.h"]),
    exported_deps = [
        ":logger",
        "//data_compression/experimental/zstrong/cpp:openzl_cpp",
    ],
)
