# 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("base") {
  output_name = "device_base"

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

  defines = [ "DEVICE_BASE_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 = [
    ":base",
    "//device/usb:test_support",
  ]
}
