# Copyright (C) 2018 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/proto_library.gni")
import("proto_files.gni")

perfetto_proto_library("@TYPE@") {
  proto_generators = [
    "lite",
    "zero",
    "source_set",
  ]
  deps = [ "../common:@TYPE@" ]  # needed for descriptor.proto.
  sources = []
  foreach(source, trace_processor_protos) {
    sources += [ "$source.proto" ]
  }
}

perfetto_proto_library("stack_descriptor") {
  proto_generators = [ "descriptor" ]
  generate_descriptor = "stack.descriptor"
  sources = [ "stack.proto" ]
}

perfetto_proto_library("metrics_impl_@TYPE@") {
  proto_generators = [
    "zero",
    "source_set",
  ]
  sources = [ "metrics_impl.proto" ]
}

if (enable_perfetto_grpc) {
  perfetto_grpc_library("cloud_trace_processor_grpc") {
    deps = [ ":lite" ]
    sources = [ "cloud_trace_processor.proto" ]
  }
}
