load("@fbcode_macros//build_defs:build_file_migration.bzl", "fbcode_target", "non_fbcode_target")
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
load("@fbcode_macros//build_defs:python_pytest.bzl", "python_pytest")

oncall("executorch")

fbcode_target(_kind = runtime.python_library,
    name = "models",
    srcs = [
        "simple_models.py",
    ],
    deps = [
        "//caffe2:torch",
    ],
)

fbcode_target(_kind = runtime.python_library,
    name = "tester",
    srcs = [
        "tester/__init__.py",
        "tester/tester.py",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/nxp:edge_passes",
        "//executorch/backends/nxp:neutron_backend",
        "//executorch/backends/nxp:quantizer",
        "//executorch/backends/test/harness:tester",
        "//executorch/exir:lib",
        "fbsource//third-party/pypi/numpy:numpy",
    ],
)

fbcode_target(_kind = runtime.python_library,
    name = "executorch_pipeline",
    srcs = [
        "executorch_pipeline.py",
        "executors.py",
    ],
    deps = [
        "//executorch/exir:lib",
        "//executorch/extension/export_util:export_util",
        "//pytorch/ao:torchao",
        "//executorch/backends/nxp:quantizer",
        "//executorch/backends/nxp:neutron_backend",
        "//executorch/backends/nxp:edge_passes",
    ]
)

fbcode_target(_kind = python_pytest,
    name = "test_quantizer",
    srcs = [
        "generic_tests/test_quantizer.py",
    ],
    resources = [
        "generic_tests/conftest.py",
    ],
    deps = [
        "//executorch/backends/nxp:quantizer",
        "//caffe2:torch",
        "//executorch/backends/nxp/tests:models",
        ":executorch_pipeline",
        "fbsource//third-party/pypi/pytest-mock:pytest-mock",  # @manual
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_neutron_backend",
    srcs = [
        "generic_tests/test_neutron_backend.py",
    ],
    deps = [
        "//executorch/backends/nxp:neutron_backend",
        ":executorch_pipeline",
        ":models",
    ]
)

fbcode_target(_kind = runtime.python_library,
    name = "use_qat",
    srcs = [
        "use_qat.py",
    ],
    deps = [
        "fbsource//third-party/pypi/pytest:pytest",
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_batch_norm_fusion",
    srcs = [
        "generic_tests/test_batch_norm_fusion.py",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/nxp:neutron_backend",
        ":executorch_pipeline",
        ":models",
        "fbsource//third-party/pypi/pytest:pytest",
        "fbsource//third-party/pypi/numpy:numpy",
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_qdq_clustering_conv",
    srcs = [
        "generic_tests/test_qdq_clustering_conv.py",
    ],
    deps = [
        ":executorch_pipeline",
        ":models",
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_fold_redundant_qdq",
    srcs = [
        "generic_tests/test_fold_redundant_qdq.py",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/nxp:edge_passes",
        "//executorch/backends/nxp:neutron_backend",
        ":executorch_pipeline",
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_convert_1d_conv_to_2d",
    srcs = [
        "generic_tests/test_convert_1d_conv_to_2d.py",
    ],
    env = {
        "PYTEST_ADDOPTS": "--ignore-glob=*full_pipeline*  -k 'not full_pipeline'",
    },
    deps = [
        "//caffe2:torch",
        "//executorch/backends/nxp:aten_passes",
        "//executorch/backends/nxp:neutron_backend",
        ":executorch_pipeline",
        ":models",
        "fbsource//third-party/pypi/numpy:numpy",
        "fbsource//third-party/pypi/pytest:pytest",
        "fbsource//third-party/pypi/pytest-mock:pytest-mock",  # @manual
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_neutron_converter_manager",
    srcs = [
        "generic_tests/test_neutron_compiler_manager.py",
    ],
    deps = [
        "//executorch/backends/nxp:neutron_sdk",
        "//executorch/exir:lib",
        ":executorch_pipeline",
        ":models",
        "fbsource//third-party/pypi/pytest-mock:pytest-mock",  # @manual
    ],
)

fbcode_target(_kind = python_pytest,
    name = "test_integration",
    srcs = [
        "generic_tests/test_integration.py",
    ],
    preload_deps = [
        "//executorch/kernels/quantized:custom_ops_generated_lib",
    ],
    deps = [
        ":executorch_pipeline",
        ":models",
        ":use_qat",
        "//executorch/devtools/backend_debug:delegation_info",
        "//executorch/extension/pybindings:portable_lib",
        "//executorch/examples/nxp/experimental/cifar_net:cifar_net",
        "//executorch/kernels/quantized:custom_ops_generated_lib",
        "//executorch/kernels/quantized:quantized_ops_lib",
    ],
)
