# 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/perfetto.gni")

# This GN file should not be referenced in chromium builds.
assert(!build_with_chromium)

# This target is supported only in in-tree builds of Android. It contains
# code that is not NDK-clean and references other repos in the Android tree.
# perfetto_build_with_android is only true when running the GN -> Android.bp
# build file translator //tools/gen_android_bp .
if (perfetto_build_with_android) {
  shared_library("libperfetto_android_internal") {
    deps = [
      ":headers",
      "../../gn:default_deps",
    ]
    sources = [
      "atrace_hal.cc",
      "health_hal.cc",
      "incident_service.cc",
      "power_stats.cc",
      "statsd_logging.cc",
      "tracing_service_proxy.cc",
    ]
    libs = [
      "android.hardware.health@2.0",
      "android.hardware.health-V2-ndk",
      "android.hardware.power.stats@1.0",
      "android.hardware.power.stats-V1-cpp",
      "android.hardware.atrace@1.0",
      "statslog_perfetto",
      "statssocket",
      "cutils",
      "base",
      "binder",
      "binder_ndk",
      "log",
      "hidlbase",
      "incident",
      "services",
      "tracingproxy",
      "utils",
      "libstatspull",
    ]

    # This target should never depend on any other perfetto target to avoid ODR
    # violation by doubly linking code in two .so(s) loaded in the same exe.
    assert_no_deps = [
      "//include/*",
      "//src/base/*",
      "//src/tracing/*",
    ]
  }
}  # if (perfetto_build_with_android)

source_set("headers") {
  deps = [
    "../../gn:default_deps",
    "../android_stats:perfetto_atoms",
  ]
  sources = [
    "atrace_hal.h",
    "health_hal.h",
    "incident_service.h",
    "power_stats.h",
    "statsd.h",
    "statsd_logging.h",
    "tracing_service_proxy.h",
  ]
}

source_set("lazy_library_loader") {
  public_deps = [ ":headers" ]
  deps = [
    "../../gn:default_deps",
    "../../src/base",
  ]
  sources = [
    "lazy_library_loader.cc",
    "lazy_library_loader.h",
  ]
  if (!is_win) {
    libs = [ "dl" ]
  }
}
