load("@fbcode_macros//build_defs:build_file_migration.bzl", "fbcode_target")
load("@fbsource//xplat/executorch/backends/native/runtime/engine:targets.bzl", "CPU_COMPAT")
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")

oncall("executorch")

runtime.cxx_library(
    name = "classification_runner",
    srcs = ["ClassificationRunner.cpp"],
    exported_headers = ["ClassificationRunner.h"],
    exported_deps = ["//executorch/backends/native/runtime/engine:engine"],
    deps = [
        "//executorch/backends/native/examples/runner_utils:runner_utils",
        "//executorch/backends/native/runtime:runtime",
        "//executorch/backends/native/runtime/deserialize:package",
        "//executorch/backends/native/runtime/graph:scalar_type",
    ],
    external_deps = ["gflags"],
    visibility = ["PUBLIC"],
)

runtime.cxx_binary(
    name = "run_classification_cpu",
    srcs = ["run_classification_cpu.cpp"],
    deps = [
        ":classification_runner",
        "//executorch/backends/native/runtime/cpu:cpu_engine",
    ],
    external_deps = ["gflags"],
    visibility = ["PUBLIC"],
)

runtime.cxx_binary(
    name = "run_classification_ggml_cpu",
    srcs = ["run_classification_ggml_cpu.cpp"],
    deps = [
        ":classification_runner",
        "//executorch/backends/native/runtime/engine:ggml_engine_cpu",
    ],
    external_deps = ["gflags"],
    visibility = ["PUBLIC"],
    **CPU_COMPAT
)

fbcode_target(
    _kind = runtime.cxx_binary,
    name = "run_classification",
    srcs = ["run_classification.cpp"],
    deps = [
        ":classification_runner",
        "//executorch/backends/native/runtime/vulkan:vulkan_engine",
    ],
    external_deps = ["gflags"],
    visibility = ["PUBLIC"],
)

fbcode_target(
    _kind = runtime.command_alias,
    name = "run_classification_vulkan",
    exe = ":run_classification",
    visibility = ["PUBLIC"],
)
