# 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-V1-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",
    ]

    # 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_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" ]
  }
}
