# 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/rust/rustc_binary.gni")
import("//src/sys/build/components.gni")

rustc_binary("bin") {
  output_name = "bt_avrcp_target"
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.bluetooth:fuchsia.bluetooth-rustc",
    "//sdk/fidl/fuchsia.bluetooth.avrcp:fuchsia.bluetooth.avrcp-rustc",
    "//sdk/fidl/fuchsia.media:fuchsia.media-rustc",
    "//sdk/fidl/fuchsia.media.sessions2:fuchsia.media.sessions2-rustc",
    "//src/connectivity/bluetooth/fidl:component-rustc",
    "//src/connectivity/bluetooth/lib/async-helpers",
    "//src/connectivity/bluetooth/lib/fuchsia-bluetooth",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fidl_table_validation",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "src/avrcp_handler.rs",
    "src/main.rs",
    "src/media/media_sessions.rs",
    "src/media/media_state.rs",
    "src/media/media_types.rs",
    "src/media/mod.rs",
    "src/tests/mod.rs",
    "src/types/bounded_queue.rs",
    "src/types/mod.rs",
  ]
}

fuchsia_component("component") {
  component_name = "bt-avrcp-target"
  manifest = "meta/bt-avrcp-target.cmx"
  deps = [ ":bin" ]
}

fuchsia_package("bt-avrcp-target") {
  deps = [ ":component" ]
}

fuchsia_unittest_package("bt-avrcp-target-tests") {
  deps = [ ":bin_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":bt-avrcp-target-tests" ]
}
