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

static_library("bta") {
  sources = [
    "ag/bta_ag_act.cc",
    "ag/bta_ag_api.cc",
    "ag/bta_ag_at.cc",
    "ag/bta_ag_cfg.cc",
    "ag/bta_ag_cmd.cc",
    "ag/bta_ag_main.cc",
    "ag/bta_ag_rfc.cc",
    "ag/bta_ag_sco.cc",
    "ag/bta_ag_sdp.cc",
    "ar/bta_ar.cc",
    "av/bta_av_aact.cc",
    "av/bta_av_act.cc",
    "av/bta_av_api.cc",
    "av/bta_av_cfg.cc",
    "av/bta_av_ci.cc",
    "av/bta_av_main.cc",
    "av/bta_av_ssm.cc",
    "csis/csis_client.cc",
    "dm/bta_dm_act.cc",
    "dm/bta_dm_api.cc",
    "dm/bta_dm_cfg.cc",
    "dm/bta_dm_ci.cc",
    "dm/bta_dm_main.cc",
    "dm/bta_dm_pm.cc",
    "gatt/bta_gattc_act.cc",
    "gatt/bta_gattc_api.cc",
    "gatt/bta_gattc_cache.cc",
    "gatt/bta_gattc_main.cc",
    "gatt/bta_gattc_utils.cc",
    "gatt/bta_gattc_queue.cc",
    "gatt/bta_gatts_act.cc",
    "gatt/bta_gatts_api.cc",
    "gatt/bta_gatts_main.cc",
    "gatt/bta_gatts_utils.cc",
    "gatt/database.cc",
    "gatt/database_builder.cc",
    "groups/groups.cc",
    "hearing_aid/hearing_aid.cc",
    "hearing_aid/hearing_aid_audio_source.cc",
    "hf_client/bta_hf_client_act.cc",
    "hf_client/bta_hf_client_api.cc",
    "hf_client/bta_hf_client_at.cc",
    "hf_client/bta_hf_client_main.cc",
    "hf_client/bta_hf_client_rfc.cc",
    "hf_client/bta_hf_client_sdp.cc",
    "hf_client/bta_hf_client_sco.cc",
    "hh/bta_hh_act.cc",
    "hh/bta_hh_api.cc",
    "hh/bta_hh_cfg.cc",
    "hh/bta_hh_le.cc",
    "hh/bta_hh_main.cc",
    "hh/bta_hh_utils.cc",
    "hd/bta_hd_act.cc",
    "hd/bta_hd_api.cc",
    "hd/bta_hd_main.cc",
    "jv/bta_jv_act.cc",
    "jv/bta_jv_api.cc",
    "jv/bta_jv_cfg.cc",
    "le_audio/client_linux.cc",
    "le_audio/hal_verifier_linux.cc",
    "pan/bta_pan_act.cc",
    "pan/bta_pan_api.cc",
    "pan/bta_pan_ci.cc",
    "pan/bta_pan_main.cc",
    "sdp/bta_sdp.cc",
    "sdp/bta_sdp_act.cc",
    "sdp/bta_sdp_api.cc",
    "sdp/bta_sdp_cfg.cc",
    "sys/bta_sys_conn.cc",
    "sys/bta_sys_main.cc",
    "sys/utl.cc",
    "vc/device.cc",
    "vc/vc.cc",
  ]

  include_dirs = [
    "closure",
    "dm",
    "hh",
    "hd",
    "include",
    "sys",
    "//bt/",
    "//bt/linux_include",
    "//bt/bta",
    "//bt/internal_include",
    "//bt/btcore/include",
    "//bt/hci/include",
    "//bt/internal_include",
    "//bt/stack/include",
    "//bt/stack/btm",
    "//bt/udrv/include",
    "//bt/utils/include",
    "//bt/vnd/include",
    "//bt/btif/include",
    "//bt/btif/avrcp",
    "//bt/include/hardware/avrcp",
    "//bt/profile/avrcp",
    "//bt/packet/avrcp",
    "//bt/packet/base",
  ]

  configs += [
    "//bt:target_defaults"
  ]

  deps = [
    "//bt/gd/rust/shim:shim_bridge_header",
    "//bt/gd/rust/shim:init_flags_bridge_header",
    "//bt/gd/rust/shim:message_loop_thread_bridge_header",
  ]
}

if (use.test) {
  executable("net_test_bta") {
    sources = [
      "gatt/database_builder.cc",
      "test/gatt/database_builder_test.cc",
      "test/gatt/database_builder_sample_device_test.cc",
      "test/gatt/database_test.cc",
    ]

    include_dirs = [
      "include",
      "//bt/",
      "//bt/bta",
      "//bt/btcore/include",
      "//bt/hci/include",
      "//bt/internal_include",
      "//bt/stack/btm",
    ]

    deps = [
      "//bt/bta",
      "//bt/types",
    ]

    configs += [
      "//bt:external_gmock_main",
      "//bt:target_defaults",
    ]
  }
}
