load("@fbcode_macros//build_defs:build_file_migration.bzl", "fbcode_target", "non_fbcode_target")
# Copyright 2025-2026 Arm Limited and/or its affiliates.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
load(":targets.bzl", "define_arm_tests")


oncall("executorch")

fbcode_target(_kind = runtime.python_library,
    name = "conftest",
    srcs = ["conftest.py"],
    deps = [
        "//executorch/exir:lib",
        "//executorch/exir/backend:compile_spec_schema",
        "fbsource//third-party/pypi/pytest:pytest",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "runner_utils",
    srcs = ["runner_utils.py"],
    resources = {
        "fbsource//third-party/flatbuffers:flatc-host": "flatbuffers-flatc",
    },
    deps = [
        ":conftest",
        "//executorch/backends/arm:arm_compile_spec",
        "//executorch/backends/arm:ethosu",
        "//executorch/backends/arm/tosa:compile_spec",
        "//executorch/backends/arm/tosa:schemas",
        "//executorch/backends/arm:vgf",
        "//executorch/backends/arm/tosa:specification",
        "//executorch/exir:lib",
        "//executorch/exir/backend:compile_spec_schema",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "common",
    srcs = ["common.py"],
    deps = [
        ":runner_utils",
        "//executorch/backends/arm/tosa:tosa",
        "//executorch/backends/arm:vgf",
        "fbsource//third-party/pypi/packaging:packaging",
        "fbsource//third-party/pypi/pytest:pytest",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "arm_tester_serialize",
    srcs = ["tester/serialize.py"],
    deps = [
        "//executorch/backends/test/harness:tester",
        "//executorch/devtools/backend_debug:delegation_info",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "arm_tester_lib",
    srcs = glob(["tester/*.py"], exclude = ["tester/serialize.py"]),
    deps = [
        ":common",
        "//executorch/backends/test/harness:tester",
        "//executorch/backends/arm:ethosu",
        "//executorch/backends/arm/quantizer:lib",
        "//executorch/backends/arm/tosa:mapping",
        "//executorch/backends/arm:vgf",
        "//executorch/backends/arm:_factory",
        "//executorch/devtools/backend_debug:delegation_info",
        "//executorch/devtools/pte_tool:diff_pte_lib",
        "//executorch/exir:scalar_type",
        "//executorch/exir:schema",
        "//executorch/exir/_serialize:lib",
        "//executorch/exir/backend:operator_support",
        "fbsource//third-party/pypi/tabulate:tabulate",
    ]
)


fbcode_target(_kind = runtime.python_library,
    name = "arm_tester",
    deps = [
        "//executorch/backends/arm/test:arm_tester_lib",
        "//executorch/backends/arm/test:arm_tester_serialize",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "mxfp_test_common",
    srcs = [
        "ops/mxfp/__init__.py",
        "ops/mxfp/common.py",
    ],
    deps = [
        ":arm_tester" if runtime.is_oss else "//executorch/backends/arm/test/tester/fb:arm_tester_fb",
        "//executorch/backends/arm:ao_ext",
        "//executorch/backends/test/harness:tester",
    ],
)

fbcode_target(_kind = define_arm_tests,)

fbcode_target(
    _kind = runtime.python_library,
    name = "model_converter_resource",
    base_module = "executorch.backends.arm.vgf",
    resources = {
        "fbsource//third-party/pypi/ai-ml-sdk-model-converter/0.11.0:model-converter-bin": "_model_converter_binary",
    },
)
