# Copyright 2020 The Chromium OS 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("//common-mk/pkg_config.gni")

# Library that provides helpers for cros-health-event.
pkg_config("libevent_pkg_deps") {
  pkg_deps = [
    "libbrillo",
    "libchrome-${libbase_ver}",
    "libmojo-${libbase_ver}",
  ]
}

source_set("libevent") {
  configs += [ ":libevent_pkg_deps" ]
  deps = [
    "//diagnostics/cros_healthd_mojo_adapter:libcros_healthd_mojo_adapter",
    "//diagnostics/mojo:cros_healthd_mojo_bindings",
  ]
  sources = [
    "bluetooth_subscriber.cc",
    "event.cc",
    "event_subscriber.cc",
    "lid_subscriber.cc",
    "power_subscriber.cc",
  ]
}
