# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file is automatically generated by tools/gen_bazel. Do not edit.

load("@perfetto_cfg//:perfetto_cfg.bzl", "PERFETTO_CONFIG")
load(
    "@perfetto//bazel:rules.bzl",
    "perfetto_py_binary",
    "perfetto_py_library",
)

licenses(["notice"])

package(default_visibility = [PERFETTO_CONFIG.root + ":__subpackages__"])

# GN target: //python:batch_trace_processor
perfetto_py_library(
    name = "batch_trace_processor",
    srcs = [
        "perfetto/batch_trace_processor/__init__.py",
        "perfetto/batch_trace_processor/api.py",
        "perfetto/batch_trace_processor/platform.py",
    ],
    visibility = [
        "//visibility:public",
    ],
    deps = [
               ":trace_processor_py",
           ] + PERFETTO_CONFIG.deps.pandas_py +
           PERFETTO_CONFIG.deps.tp_vendor_py,
)

# GN target: //python:experimental_slice_breakdown_bin
perfetto_py_binary(
    name = "experimental_slice_breakdown_bin",
    srcs = [
        "tools/slice_breakdown.py",
    ],
    deps = [
        ":experimental_slice_breakdown_lib",
        ":trace_processor_py",
    ] + PERFETTO_CONFIG.deps.pandas_py,
    main = "tools/slice_breakdown.py",
    python_version = "PY3",
)

# GN target: //python:trace_processor_table_generator
perfetto_py_library(
    name = "trace_processor_table_generator",
    srcs = [
        "generators/trace_processor_table/public.py",
        "generators/trace_processor_table/serialize.py",
        "generators/trace_processor_table/util.py",
    ],
)

# GN target: //python:trace_processor_py_example
perfetto_py_binary(
    name = "trace_processor_py_example",
    srcs = [
        "example.py",
    ],
    deps = [
        ":trace_processor_py",
    ] + PERFETTO_CONFIG.deps.pandas_py,
    main = "example.py",
    python_version = "PY3",
)

# GN target: //python:experimental_slice_breakdown_lib
perfetto_py_library(
    name = "experimental_slice_breakdown_lib",
    srcs = [
        "perfetto/experimental/slice_breakdown/__init__.py",
        "perfetto/experimental/slice_breakdown/breakdown.py",
    ],
    deps = [
        ":trace_processor_py",
    ],
)

# GN target: //python:trace_processor_py
perfetto_py_library(
    name = "trace_processor_py",
    srcs = [
        "perfetto/trace_processor/__init__.py",
        "perfetto/trace_processor/api.py",
        "perfetto/trace_processor/http.py",
        "perfetto/trace_processor/platform.py",
        "perfetto/trace_processor/protos.py",
        "perfetto/trace_processor/shell.py",
    ],
    visibility = [
        "//visibility:public",
    ],
    data = [
        PERFETTO_CONFIG.root + ":trace_processor_shell",
        "perfetto/trace_processor/metrics.descriptor",
        "perfetto/trace_processor/trace_processor.descriptor",
    ],
    deps = [
               ":trace_uri_resolver",
           ] + PERFETTO_CONFIG.deps.pandas_py +
           PERFETTO_CONFIG.deps.protobuf_py +
           PERFETTO_CONFIG.deps.tp_vendor_py,
)

# GN target: //python:trace_uri_resolver
perfetto_py_library(
    name = "trace_uri_resolver",
    srcs = [
        "perfetto/trace_uri_resolver/__init__.py",
        "perfetto/trace_uri_resolver/path.py",
        "perfetto/trace_uri_resolver/registry.py",
        "perfetto/trace_uri_resolver/resolver.py",
        "perfetto/trace_uri_resolver/util.py",
    ],
)

