load("@fbcode_macros//build_defs:cpp_binary.bzl", "cpp_binary")
load("@fbcode_macros//build_defs:cpp_unittest.bzl", "cpp_unittest")

cpp_unittest(
    name = "velox_experimental_codegen_benchmark_default_null",
    srcs = [
        "SingleOutputDefaultNullsBenchmark.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//folly:random",
        "//folly/init:init",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/exec:velox_exec_lib",
        "//velox/experimental/codegen:velox_experimental_codegen_impl",
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
    ],
)

cpp_unittest(
    name = "velox_experimental_codegen_benchmark_not_default_null",
    srcs = [
        "SingleOutputNotDefaultNullsBenchmark.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//folly:random",
        "//folly/init:init",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/exec:velox_exec_lib",
        "//velox/experimental/codegen:velox_experimental_codegen_impl",
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
    ],
)

cpp_unittest(
    name = "velox_experimental_codegen_benchmark_filter",
    srcs = [
        "FilterBenchmark.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//folly:random",
        "//folly/init:init",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/exec:velox_exec_lib",
        "//velox/experimental/codegen:velox_experimental_codegen_impl",
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
    ],
)

cpp_unittest(
    name = "velox_experimental_codegen_benchmark_perf",
    srcs = [
        "CodegenPerf.cpp",
    ],
    headers = [
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
    ],
)

cpp_unittest(
    # @autodeps-skip
    name = "velox_experimental_codegen_benchmark_boolean",
    srcs = [
        "BooleanBenchmarks.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/experimental/codegen/code_generator/tests:copy_dependencies",  #manual
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
        "//velox/functions/prestosql/registration:velox_functions_prestosql",
    ],
)

cpp_binary(
    name = "velox_experimental_codegen_benchmark",
    srcs = [
        "CodegenBenchmarks.cpp",
        "SingleOutputDefaultNullsBenchmark.cpp",
        "SingleOutputNotDefaultNullsBenchmark.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//folly:random",
        "//folly/init:init",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/exec:velox_exec_lib",
        "//velox/experimental/codegen:velox_experimental_codegen_impl",
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
    ],
)

cpp_unittest(
    name = "velox_experimental_codegen_benchmark_string",
    srcs = [
        "StringBenchmarks.cpp",
    ],
    headers = [
        "CodegenBenchmark.h",
        "ValueNodeReplacer.h",
    ],
    linker_flags = ["--export-dynamic"],
    deps = [
        "//folly:benchmark",
        "//folly:random",
        "//folly/init:init",
        "//velox/common/base:velox_exception",
        "//velox/core:velox_core",
        "//velox/exec:velox_exec_lib",
        "//velox/experimental/codegen:velox_experimental_codegen_impl",
        "//velox/experimental/codegen/tests:velox_experimental_codegen_test_utils",
        "//velox/experimental/codegen/transform:velox_transform",
        "//velox/experimental/codegen/transform/utils:velox_transform_utils",
    ],
)
