#
#  Copyright 2021 Google, Inc.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at:
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

source_set("BluetoothHalSources") {
  sources = [
    "link_clocker.cc",
    "snoop_logger.cc",
    "snoop_logger_socket.cc",
    "snoop_logger_socket_thread.cc",
    "syscall_wrapper_impl.cc"
  ]

  configs += [ "//bt/system/gd:gd_defaults" ]
  deps = [ "//bt/system/gd:gd_default_deps" ]
}

source_set("BluetoothHalSources_hci_host") {
  if (use.floss_rootcanal) {
    sources = [
      "hci_hal_host_rootcanal.cc",
      "mgmt.cc",
    ]
  } else {
    sources = [
      "hci_hal_host.cc",
      "mgmt.cc",
    ]
  }

  configs += [ "//bt/system/gd:gd_defaults" ]
  deps = [ "//bt/system/gd:gd_default_deps" ]
}
