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

oncall("executorch")

# Export the generic fx-graph schema so it can be shipped as a package resource.
runtime.export_file(
    name = "native_graph.fbs",
    src = "serialization/native_graph.fbs",
    visibility = ["//executorch/backends/native/..."],
)

fbcode_target(
    _kind = runtime.python_library,
    name = "lib",
    srcs = [
        "__init__.py",
        "custom_ops.py",
        "partitioner.py",
        "passes/__init__.py",
        "passes/_utils.py",
        "passes/fuse_rope.py",
        "passes/reinplace.py",
        "passes/remove_runtime_asserts.py",
        "passes/replace_copy_with_alias.py",
        "preprocess.py",
        "serialization/__init__.py",
        "serialization/graph_serialize.py",
        "serialization/schema.py",
    ],
    resources = {
        ":native_graph.fbs": "serialization/native_graph.fbs",
    },
    visibility = ["PUBLIC"],
    deps = [
        "fbsource//third-party/pypi/flatbuffers:flatbuffers",
        "//caffe2:torch",
        "//executorch/backends/transforms:collapse_view_copy",
        "//executorch/backends/transforms:fuse_batch_norm_with_conv",
        "//executorch/backends/transforms:fuse_gqa_with_sdpa",
        "//executorch/backends/transforms:fuse_rms_norm",
        "//executorch/backends/transforms:normalize_sdpa_input_rank",
        "//executorch/exir:lib",
        "//executorch/exir/_serialize:lib",
        "//executorch/exir/backend:backend_details",
        "//executorch/exir/backend:partitioner",
        "//executorch/exir/backend:utils",
        "//executorch/exir/passes:cse_pass",
        "//executorch/exir/passes:lib",
        "//executorch/extension/llm/export:gguf",
    ],
)
