# 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.

import("../gn/perfetto_python.gni")

perfetto_py_library("cpp_blob_emitter") {
  sources = [ "tools/cpp_blob_emitter.py" ]
}

perfetto_py_binary("cpp_blob_emitter_bin") {
  sources = [ "tools/cpp_blob_emitter.py" ]
  main = "tools/cpp_blob_emitter.py"
  deps = [ ":cpp_blob_emitter" ]
}

perfetto_py_library("trace_processor_table_generator") {
  sources = [
    "generators/trace_processor_table/public.py",
    "generators/trace_processor_table/serialize.py",
    "generators/trace_processor_table/util.py",
  ]
}

perfetto_py_library("trace_processor_stdlib_docs") {
  sources = [
    "generators/sql_processing/docs_extractor.py",
    "generators/sql_processing/docs_parse.py",
    "generators/sql_processing/utils.py",
  ]
}

perfetto_py_library("trace_processor_diff_tests") {
  sources = [
    "generators/diff_tests/runner.py",
    "generators/diff_tests/testing.py",
    "generators/diff_tests/utils.py",
  ]
}

perfetto_py_binary("trace_processor_py_example") {
  sources = [ "example.py" ]
  deps = [
    ":trace_processor_py",
    "../gn:pandas_py",
  ]
  main = "example.py"
}

perfetto_py_library("common") {
  sources = [
    "perfetto/common/exceptions.py",
    "perfetto/common/query_result_iterator.py",
  ]
}

perfetto_py_library("trace_processor_py_no_resolvers") {
  sources = [
    "perfetto/trace_processor/__init__.py",
    "perfetto/trace_processor/api.py",
    "perfetto/trace_processor/http.py",
    "perfetto/trace_processor/platform.py",
    "perfetto/trace_processor/process_tree.py",
    "perfetto/trace_processor/protos.py",
    "perfetto/trace_processor/shell.py",
  ]
  data = [
    "perfetto/trace_processor/trace_processor.descriptor",
    "perfetto/trace_processor/metrics.descriptor",
    "..:trace_processor_shell",
  ]
  deps = [
    ":common",
    ":trace_uri_resolver",
    "../gn:pandas_py",
    "../gn:protobuf_py",
    "../gn:tp_vendor_py",
  ]
}

perfetto_py_library("trace_processor_py") {
  deps = [
    ":trace_processor_py_no_resolvers",
    "../gn:tp_resolvers_py",
  ]
}

perfetto_py_library("trace_uri_resolver") {
  sources = [
    "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",
  ]
}

perfetto_py_library("experimental_slice_breakdown_lib") {
  sources = [
    "perfetto/experimental/slice_breakdown/__init__.py",
    "perfetto/experimental/slice_breakdown/breakdown.py",
  ]
  deps = [ ":trace_processor_py" ]
}

perfetto_py_binary("experimental_slice_breakdown_bin") {
  sources = [ "tools/slice_breakdown.py" ]
  main = "tools/slice_breakdown.py"
  deps = [
    ":experimental_slice_breakdown_lib",
    ":trace_processor_py",
    "../gn:pandas_py",
  ]
}

perfetto_py_library("batch_trace_processor") {
  sources = [
    "perfetto/batch_trace_processor/__init__.py",
    "perfetto/batch_trace_processor/api.py",
    "perfetto/batch_trace_processor/platform.py",
  ]
  deps = [
    ":trace_processor_py",
    "../gn:pandas_py",
    "../gn:tp_vendor_py",
  ]
}

perfetto_py_library("sql_processing") {
  sources = [
    "generators/sql_processing/docs_extractor.py",
    "generators/sql_processing/docs_parse.py",
    "generators/sql_processing/utils.py",
  ]
}
