chromium/components/services/heap_profiling/public/cpp/BUILD.gn

# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//base/allocator/allocator.gni")
import("//build/config/features.gni")

static_library("cpp") {
  sources = [
    "controller.cc",
    "controller.h",
    "profiling_client.cc",
    "profiling_client.h",
    "settings.cc",
    "settings.h",
    "switches.cc",
    "switches.h",
  ]

  public_deps = [
    "//base",
    "//components/services/heap_profiling/public/mojom",
    "//mojo/public/cpp/bindings",
  ]

  deps = [
    "//base:debugging_buildflags",
    "//base/allocator:buildflags",
  ]

  if (!is_ios || use_allocator_shim) {
    sources += [
      "merge_samples.cc",
      "merge_samples.h",
    ]
  }

  if (use_blink) {
    sources += [
      "heap_profiling_trace_source.cc",
      "heap_profiling_trace_source.h",
    ]
    deps += [ "//services/tracing/public/cpp:cpp" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [ "switches_unittest.cc" ]
  deps = [
    ":cpp",
    "//base",
    "//base/allocator:buildflags",
    "//base/test:test_support",
    "//testing/gtest",
  ]

  if (!is_ios || use_allocator_shim) {
    sources += [ "merge_samples_unittests.cc" ]
  }

  if (use_blink) {
    sources += [ "heap_profiling_trace_source_unittest.cc" ]
    deps += [
      "//services/tracing:test_utils",
      "//services/tracing/public/cpp:cpp",
      "//third_party/perfetto/protos/perfetto/trace:lite",
      "//third_party/perfetto/protos/perfetto/trace/profiling:lite",
    ]
  }
}