# 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("//services/service_manager/public/service_manifest.gni")

service_manifest("manifest") {
  name = "metrics"
  source = "manifest.json"
}

source_set("metrics") {
  sources = [
    "metrics_mojo_service.cc",
    "metrics_mojo_service.h",
    "ukm_recorder_interface.cc",
    "ukm_recorder_interface.h",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  deps = [
    "//mojo/public/cpp/bindings",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/metrics/public/mojom",
    "//services/service_manager/public/cpp",
    "//url",
  ]
}
