# 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",
      "//src/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",
    ]
  }
}
