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

source_set("definitions") {
  sources = [
    "packet.cc",
    "packet.h",
    "smp.h",
  ]

  public_deps = [
    "//garnet/drivers/bluetooth/lib/common",
  ]
}

static_library("sm") {
  sources = [
    "bearer.cc",
    "bearer.h",
    "pairing_state.cc",
    "pairing_state.h",
    "status.cc",
    "status.h",
    "types.cc",
    "types.h",
    "util.cc",
    "util.h",
  ]

  public_deps = [
    ":definitions",
    "//garnet/drivers/bluetooth/lib/hci",
    "//garnet/drivers/bluetooth/lib/l2cap",
    "//third_party/boringssl",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "bearer_unittest.cc",
    "pairing_state_unittest.cc",
    "util_unittest.cc",
  ]

  deps = [
    ":sm",
    "//garnet/drivers/bluetooth/lib/hci:testing",
    "//garnet/drivers/bluetooth/lib/l2cap:testing",
    "//third_party/googletest:gtest",
  ]
}
