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

source_set("shared_lib") {
  deps = [
    "../../gn:default_deps",
    "../../include/perfetto/protozero",
    "../../include/perfetto/public",
    "../tracing:client_api",
    "../tracing:platform_impl",
  ]
  sources = [
    "data_source.cc",
    "heap_buffer.cc",
    "pb_decoder.cc",
    "producer.cc",
    "reset_for_testing.h",
    "stream_writer.cc",
    "stream_writer.h",
    "tracing_session.cc",
  ]
  defines = [ "PERFETTO_SHLIB_SDK_IMPLEMENTATION" ]
}

shared_library("libperfetto_c") {
  deps = [
    ":shared_lib",
    "../../gn:default_deps",
  ]
  public_deps = [ "../../include/perfetto/public" ]
}
