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

# Basic target with protocol definitions and no logic, suitable for test
# emulation.
source_set("definitions") {
  sources = [
    "att.h",
    "packet.cc",
    "packet.h",
  ]

  public_deps = [
    "//src/connectivity/bluetooth/core/bt-host/common",
    "//src/connectivity/bluetooth/core/bt-host/hci:definitions",
    "//src/connectivity/bluetooth/core/bt-host/l2cap:definitions",
  ]
}

static_library("att") {
  sources = [
    "attribute.cc",
    "attribute.h",
    "bearer.cc",
    "bearer.h",
    "database.cc",
    "database.h",
    "permissions.cc",
    "permissions.h",
    "status.cc",
    "status.h",
    "write_queue.cc",
    "write_queue.h",
  ]

  public_deps = [
    ":definitions",
    "//src/connectivity/bluetooth/core/bt-host/l2cap",
    "//src/connectivity/bluetooth/core/bt-host/sm:definitions",
    "//src/lib/fxl",
    "//zircon/public/lib/fit",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "attribute_unittest.cc",
    "bearer_unittest.cc",
    "database_unittest.cc",
    "permissions_unittest.cc",
  ]

  deps = [
    ":att",
    "//src/connectivity/bluetooth/core/bt-host/l2cap:testing",
    "//third_party/googletest:gtest",
  ]
}
