# Copyright 2019 The Fuchsia 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/unification/images/migrated_manifest.gni")

if (is_fuchsia) {
  import("//build/config/fuchsia/rules.gni")
  import("//build/unification/images/migrated_manifest.gni")

  driver_module("usb-peripheral-test") {
    defines = [ "_ALL_SOURCE" ]
    configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
    configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
    configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
    if (is_fuchsia) {
      configs += [ "//build/unification/config:zircon-migrated" ]
    }
    sources = [ "driver.cc" ]
    deps = [
      "//sdk/banjo/ddk.protocol.usb",
      "//sdk/banjo/ddk.protocol.usb.function",
      "//sdk/banjo/ddk.protocol.usb.request",
      "//src/devices/lib/driver",
      "//src/devices/usb/lib/usb",
      "//zircon/public/lib/ddk",
      "//zircon/public/lib/fbl",
      "//zircon/public/lib/sync",
    ]
  }

  migrated_manifest("usb-peripheral-test-manifest") {
    deps = [ ":usb-peripheral-test" ]
  }
} else if (current_os == "linux") {
  import("//build/test.gni")

  test("usb-peripheral-test") {
    # Dependent manifests unfortunately cannot be marked as `testonly`.
    # TODO(44278): Remove when converting this file to proper GN build idioms.
    if (is_fuchsia) {
      testonly = false
    }
    if (is_fuchsia) {
      configs += [ "//build/unification/config:zircon-migrated" ]
    }
    if (is_fuchsia) {
      fdio_config = [ "//build/config/fuchsia:fdio_config" ]
      if (configs + fdio_config - fdio_config != configs) {
        configs -= fdio_config
      }
    }
    output_name = "usb-peripheral-test"
    sources = [ "test.cc" ]
    deps = [
      "//zircon/public/lib/fbl",
      "//zircon/public/lib/usbhost-static",
      "//zircon/public/lib/zxtest",
    ]
  }
}
