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

oncall("executorch")

fbcode_target(_kind = runtime.python_library,
    name = "lib",
    srcs = [
        "__init__.py",
    ],
    deps = [
        ":fake_program",
        ":program",
    ],
)

fbcode_target(_kind = runtime.python_library,
    name = "program",
    srcs = [
        "_program.py",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:_program_utils",
        "//executorch/exir:error",
        "//executorch/exir:graph_module",
        "//executorch/exir:pass_base",
        "//executorch/exir:pass_manager",
        "//executorch/exir:print_program",
        "//executorch/exir:schema",
        "//executorch/exir:tracer",
        "//executorch/exir/_serialize:lib",
        "//executorch/exir/backend:backend_api",
        "//executorch/exir/backend:partitioner",
        "//executorch/exir/backend/canonical_partitioners:canonical_partitioner_lib",
        "//executorch/exir/capture:config",
        "//executorch/exir/emit:emit",
        "//executorch/exir/emit:lib",
        "//executorch/exir/operator:util",
        "//executorch/exir/passes:delegate_scratch_pass",
        "//executorch/exir/passes:insert_write_back_for_buffers_pass",
        "//executorch/exir/passes:lib",
        "//executorch/exir/passes:normalize_view_copy_base_pass",
        "//executorch/exir/passes:propagate_device_config",
        "//executorch/exir/passes:propagate_device_pass",
        "//executorch/exir/passes:remove_graph_asserts_pass",
        "//executorch/exir/passes:remove_mixed_type_operators",
        "//executorch/exir/passes:replace_aten_with_edge_pass",
        "//executorch/exir/passes:replace_view_copy_with_view_pass",
        "//executorch/exir/passes:spec_prop_pass",
        "//executorch/exir/passes:weights_to_outputs_pass",
        "//executorch/exir/passes:convert_constant_dim_order_pass",
        "//executorch/exir/verification:verifier",
        "//executorch/extension/flat_tensor/serialize:serialize",
    ] +  (["//executorch/exir/program/fb:logger"] if not runtime.is_oss else [])
)

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