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

import("//chrome/common/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")

static_library("profiling") {
  sources = [
    "memlog_allocator_shim.cc",
    "memlog_allocator_shim.h",
    "memlog_sender_pipe.h",
    "memlog_sender_pipe_posix.cc",
    "memlog_sender_pipe_win.cc",
    "memlog_stream.h",
    "profiling_client.cc",
    "profiling_client.h",
    "profiling_constants.cc",
    "profiling_constants.h",
  ]

  public_deps = [
    ":interfaces",
  ]
  deps = [
    "//base",
    "//base:debugging_flags",
    "//base/allocator:features",
    "//chrome/common:constants",
    "//content/public/common",
    "//mojo/edk/system",
  ]
}

mojom("interfaces") {
  sources = [
    "constants.mojom",
    "profiling_client.mojom",
    "profiling_service.mojom",
  ]
  deps = [
    "//mojo/common:common_custom_types",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "memlog_sender_pipe_unittest.cc",
  ]
  deps = [
    ":profiling",
    "//base",
    "//mojo/edk/system",
    "//testing/gtest",
  ]
}
