#
#  Copyright (C) 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("btif") {
  sources = [
    "src/btif_av.c",

    #TODO(jpawlowski): heavily depends on Android,
    #   "src/btif_avrcp_audio_track.cpp",
    "src/btif_config.c",
    "src/btif_core.c",
    "src/btif_debug.c",
    "src/btif_debug_btsnoop.c",
    "src/btif_debug_conn.c",
    "src/btif_dm.c",
    "src/btif_gatt.c",
    "src/btif_gatt_client.c",
    "src/btif_gatt_multi_adv_util.c",
    "src/btif_gatt_server.c",
    "src/btif_gatt_test.c",
    "src/btif_gatt_util.c",
    "src/btif_hf.c",
    "src/btif_hf_client.c",
    "src/btif_hh.c",
    "src/btif_hl.c",
    "src/btif_mce.c",
    "src/btif_media_task.c",
    "src/btif_pan.c",
    "src/btif_profile_queue.c",
    "src/btif_rc.c",
    "src/btif_sdp.c",
    "src/btif_sdp_server.c",
    "src/btif_sm.c",
    "src/btif_sock.c",
    "src/btif_sock_l2cap.c",
    "src/btif_sock_rfc.c",
    "src/btif_sock_sco.c",
    "src/btif_sock_sdp.c",
    "src/btif_sock_thread.c",
    "src/btif_sock_util.c",
    "src/btif_storage.c",
    "src/btif_uid.c",
    "src/btif_util.c",
    "src/stack_manager.c",
  ]

  # BTIF callouts
  sources += [
    "co/bta_ag_co.c",
    "co/bta_dm_co.c",
    "co/bta_av_co.c",
    "co/bta_hh_co.c",
    "co/bta_hl_co.c",
    "co/bta_pan_co.c",
    "co/bta_gatts_co.c",
  ]

  include_dirs = [
    "include",
    "//",
    "//audio_a2dp_hw",
    "//bta/include",
    "//bta/sys",
    "//btcore/include",
    "//embdrv/sbc/encoder/include",
    "//hci/include",
    "//stack/a2dp",
    "//stack/btm",
    "//stack/include",
    "//third_party/tinyxml2",
    "//include",
    "//udrv/include",
    "//utils/include",
    "//vnd/include",
  ]
}
