# 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.

group("bluetooth") {
  testonly = true
  deps = [
    ":tests",
    "core",
    "examples",
    "hci",
    "lib",
    "profiles",
    "tests",
    "tools",
  ]
}

# Core is the group that is included in the core product.
group("core") {
  public_deps = [
    "core/bt-gap",
    "core/bt-host",
    "core/bt-init",
    "profiles/bt-a2dp-sink",
    "profiles/bt-avrcp",
    "profiles/bt-hog",
    "tools/bt-snoop",
  ]
}

# Includes hci and transport drivers for broadcom controllers which communicate over a uart
# transport.
group("broadcom_uart") {
  public_deps = []
}

group("tests") {
  testonly = true
  deps = [
    "core/bt-gap:tests",
    "core/bt-host:fuzzers",
    "hci:tests",
    "lib/async-helpers:async-helpers-tests",
    "lib/bt-a2dp:tests",
    "lib/bt-avctp:tests",
    "lib/bt-avdtp:tests",
    "lib/bt-fidl-mocks:tests",
    "lib/fuchsia-audio-device-output:fuchsia-audio-device-output-tests",
    "lib/fuchsia-bluetooth:tests",
    "profiles/bt-a2dp-manager:bt-a2dp-manager-tests",
    "profiles/bt-a2dp-sink:tests",
    "profiles/bt-a2dp-source:bt-a2dp-source-tests",
    "profiles/bt-avrcp:tests",
    "profiles/bt-avrcp-target:tests",
    "tests",
    "tools:tests",
  ]
}
