# Copyright 2014 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("//build/config/features.gni")

component("core") {
  output_name = "device_core"

  sources = [
    "device_client.cc",
    "device_client.h",
    "device_info_query_win.cc",
    "device_info_query_win.h",
    "device_monitor_win.cc",
    "device_monitor_win.h",
  ]

  defines = [ "DEVICE_CORE_IMPLEMENTATION" ]

  deps = []

  public_deps = [
    "//base",
  ]

  if (use_udev) {
    sources += [
      "device_monitor_linux.cc",
      "device_monitor_linux.h",
    ]

    deps += [ "//device/udev_linux" ]
  }

  if (is_win) {
    libs = [ "setupapi.lib" ]
  }
}

source_set("mocks") {
  testonly = true

  sources = [
    "mock_device_client.cc",
    "mock_device_client.h",
  ]

  deps = [
    ":core",
    "//device/hid:mocks",
    "//device/usb:test_support",
  ]
}
