# 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("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni")

# GYP version: device/serial/serial.gyp:device_serial
static_library("serial") {
  output_name = "device_serial"

  sources = [
    "buffer.cc",
    "buffer.h",
    "data_receiver.cc",
    "data_receiver.h",
    "data_sender.cc",
    "data_sender.h",
    "data_sink_receiver.cc",
    "data_sink_receiver.h",
    "data_source_sender.cc",
    "data_source_sender.h",
    "serial_connection.cc",
    "serial_connection.h",
    "serial_connection_factory.cc",
    "serial_connection_factory.h",
    "serial_device_enumerator.cc",
    "serial_device_enumerator.h",
    "serial_device_enumerator_linux.cc",
    "serial_device_enumerator_linux.h",
    "serial_device_enumerator_mac.cc",
    "serial_device_enumerator_mac.h",
    "serial_device_enumerator_win.cc",
    "serial_device_enumerator_win.h",
    "serial_io_handler.cc",
    "serial_io_handler.h",
    "serial_io_handler_posix.cc",
    "serial_io_handler_posix.h",
    "serial_io_handler_win.cc",
    "serial_io_handler_win.h",
    "serial_service_impl.cc",
    "serial_service_impl.h",
  ]

  public_deps = [
    ":serial_mojo",
  ]
  deps = []

  if (is_linux) {
    deps += [ "//device/udev_linux" ]
  }
}

# GYP version: device/serial/serial.gyp:device_serial_test_util
static_library("test_support") {
  sources = [
    "test_serial_io_handler.cc",
    "test_serial_io_handler.h",
  ]

  deps = [
    ":serial",
  ]
}

# GYP version: device/serial/serial.gyp:device_serial_mojo
mojom("serial_mojo") {
  visibility = [
    ":serial",
    "//extensions:extensions_renderer_resources_grit",
  ]

  sources = [
    "data_stream.mojom",
    "data_stream_serialization.mojom",
    "serial.mojom",
    "serial_serialization.mojom",
  ]
}
