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

static_library("gap") {
  sources = [
    "adapter.cc",
    "adapter.h",
    "adapter_state.cc",
    "adapter_state.h",
    "bredr_connection_manager.cc",
    "bredr_connection_manager.h",
    "bredr_discovery_manager.cc",
    "bredr_discovery_manager.h",
    "bredr_interrogator.cc",
    "bredr_interrogator.h",
    "connection_request.h",
    "discovery_filter.cc",
    "discovery_filter.h",
    "gap.cc",
    "gap.h",
    "identity_resolving_list.cc",
    "identity_resolving_list.h",
    "interrogator.cc",
    "interrogator.h",
    "low_energy_address_manager.cc",
    "low_energy_address_manager.h",
    "low_energy_advertising_manager.cc",
    "low_energy_advertising_manager.h",
    "low_energy_connection_manager.cc",
    "low_energy_connection_manager.h",
    "low_energy_discovery_manager.cc",
    "low_energy_discovery_manager.h",
    "low_energy_interrogator.cc",
    "low_energy_interrogator.h",
    "low_energy_state.cc",
    "low_energy_state.h",
    "pairing_delegate.h",
    "pairing_state.cc",
    "pairing_state.h",
    "peer.cc",
    "peer.h",
    "peer_cache.cc",
    "peer_cache.h",
  ]

  public_deps = [
    "//src/connectivity/bluetooth/core/bt-host/common",
    "//src/connectivity/bluetooth/core/bt-host/data",
    "//src/connectivity/bluetooth/core/bt-host/gatt",
    "//src/connectivity/bluetooth/core/bt-host/hci",
    "//src/connectivity/bluetooth/core/bt-host/l2cap",
    "//src/connectivity/bluetooth/core/bt-host/sdp",
    "//src/connectivity/bluetooth/core/bt-host/sm",
    "//src/lib/fxl",
    "//src/lib/uuid",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/inspect",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-io",
  ]

  # TODO(46637): UBSan has found an instance of undefined behavior in this target.
  # Disable UBSan for this target temporarily until it is migrated into CI/CQ.
  configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]
}

source_set("testing") {
  testonly = true

  sources = [
    "fake_pairing_delegate.cc",
    "fake_pairing_delegate.h",
  ]

  public_deps = [
    ":gap",
    "//garnet/public/lib/gtest",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "adapter_unittest.cc",
    "bredr_connection_manager_unittest.cc",
    "bredr_discovery_manager_unittest.cc",
    "bredr_interrogator_unittest.cc",
    "discovery_filter_unittest.cc",
    "fake_pairing_delegate_unittest.cc",
    "identity_resolving_list_unittest.cc",
    "interrogator_unittest.cc",
    "low_energy_address_manager_unittest.cc",
    "low_energy_advertising_manager_unittest.cc",
    "low_energy_connection_manager_unittest.cc",
    "low_energy_discovery_manager_unittest.cc",
    "low_energy_interrogator_unittest.cc",
    "pairing_state_unittest.cc",
    "peer_cache_unittest.cc",
    "peer_unittest.cc",
  ]

  deps = [
    ":gap",
    ":testing",
    "//garnet/public/lib/gtest",
    "//sdk/lib/inspect/testing/cpp",
    "//src/connectivity/bluetooth/core/bt-host/data:testing",
    "//src/connectivity/bluetooth/core/bt-host/gatt:testing",
    "//src/connectivity/bluetooth/core/bt-host/hci:testing",
    "//src/connectivity/bluetooth/core/bt-host/testing",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/async-cpp",
  ]
}
