###############################################################################
# Copyright (c) 2012-2018 Qualcomm Technologies International, Ltd.
# All Rights Reserved.
# Qualcomm Technologies International, Ltd. Confidential and Proprietary.
#
# REVISION:      $Revision: #  $
###############################################################################

set(SRCS
    ../common/csr_bt_init_tasks.c
    ../common/csr_bt_file.c
    csr_bt_tasks.c
    csr_bt_declare_tasks.c)

set(HDRS ../inc/csr_bt_app_prim.h)

set(LIBS
    csr_app
    csr_app_main_bluecore
    csr_arg_search
    csr_bt
    csr_bt_lib
    csr_bt_bootstrap
    csr_bt_app_gap
    csr_bt_corestack_common
    csr_bt_corestack_hci
    csr_bt_sc_db
    csr_eh
    csr_formatted_io
    csr_framework_ext
    csr_fs
    csr_hci
    csr_list
    csr_main
    csr_mblk
    csr_message_queue
    csr_panic
    csr_pmem
    csr_queue_lib
    csr_random
    csr_sched
    csr_ser_com
    csr_time
    csr_tm_bluecore
    csr_ui
    csr_unicode
    csr_util)

if(CSR_H4_TRANSPORT STREQUAL H4 OR
   CSR_H4_TRANSPORT STREQUAL H4IBS)
    list(APPEND LIBS
         csr_h4)
else()
    list(APPEND LIBS
         csr_h4ds)
endif()

if(CSR_USE_QCA_CHIP)
    # Include QCA specific libraries
    list(APPEND LIBS
         csr_qvsc
         csr_qvsc_lib)

    if(CSR_PLATFORM_MOJAVE)
        list(APPEND LIBS
             pulse
             pulse-simple)
    endif()
else()
    # Include BlueCore specific libraries
    if(NOT EXCLUDE_CSR_DSPM_MODULE AND CSR_DSPM_ENABLE)
        list(APPEND LIBS
             csr_dspm)

        if (NOT CSR_DSPM_SUPPORT_ACCMD)
            list(APPEND LIBS
                 csr_bt_dsp_patching)
        endif()
    endif()

    if(NOT EXCLUDE_CSR_AM_MODULE AND NOT EXCLUDE_CSR_BT_SPP_MODULE_OPTIONAL)
        list(APPEND LIBS csr_am)
    endif()

    if(CSR_HYDRA_SSD)
        list(APPEND LIBS
             csr_ssd
             csr_htrans
             csr_htrans_com)

        if(DEFINED CSR_COMPONENT_FRW_TRANSPORT_BCSP AND CSR_USE_BCSP_HTRANS)
            list(APPEND LIBS csr_bcsp)
        endif()
    else()
        if(DEFINED CSR_COMPONENT_FRW_TRANSPORT_BCSP)
            list(APPEND LIBS csr_bcsp)
        endif()

        if(DEFINED CSR_COMPONENT_FRW_TRANSPORT_H4I)
            list(APPEND LIBS
                 csr_h4i)
        endif()

        if(CSR_TRANSPORT_TYPE_A_ENABLE)
            list(APPEND LIBS
                 csr_type_a
                 csr_type_a_async
                 csr_type_a_sync)
            if (CSR_PLATFORM MATCHES WINDOWS)
                list(APPEND LIBS csr_membuf)
            endif()
        endif()
    endif()

    if(NOT EXCLUDE_CSR_FP_MODULE)
        list(APPEND LIBS csr_fastpipe)
    endif()

    if(NOT EXCLUDE_CSR_VM_MODULE)
        list(APPEND LIBS csr_vm)
    endif()

    if(NOT EXCLUDE_CSR_HQ_MODULE)
        list(APPEND LIBS csr_hq)
    endif()

    if (CSR_PLATFORM MATCHES WINDOWS OR
        CSR_PLATFORM MATCHES LINUX)
        if(DEFINED CSR_COMPONENT_FRW_USB)
            list(APPEND LIBS
                 csr_usb
                 csr_usb_com)
         endif()
    elseif (CSR_PLATFORM MATCHES BDB2 OR
            CSR_PLATFORM MATCHES BDB3)
        list(APPEND FRW_LIBS
             csr_membuf
             csr_spi_master
             csr_sdio_probe
             csr_sdio
             csr_sdio_master
             csr_low_level_drivers
             csr_nucleus
             csr_console)
        list(APPEND BT_LIBS
             csr_bt_app_common_ported
             csr_bt_app_internet)
    endif()
endif()

# BCCMD support was added for some QCA chips
if(NOT EXCLUDE_CSR_BCCMD_MODULE)
    list(APPEND LIBS csr_bccmd)
endif()

if(CSR_LOG_ENABLE)
    list(APPEND LIBS
        csr_core_msg_converter
        csr_msg_converter
        csr_log
        csr_log_btsnoop
        csr_log_cleartext
        csr_log_fts
        csr_log_pcap
        csr_logtrans)
    list(APPEND LIBS csr_bt_msg_converter)
endif()

if(NOT EXCLUDE_CSR_BT_SYNCS_MODULE OR
   NOT EXCLUDE_CSR_BT_SYNCC_MODULE OR
   NOT EXCLUDE_CSR_BT_MAPS_MODULE OR
   NOT EXCLUDE_CSR_BT_MAPC_MODULE OR
   NOT EXCLUDE_CSR_BT_BIPS_MODULE OR
   NOT EXCLUDE_CSR_BT_BIPC_MODULE OR
   NOT EXCLUDE_CSR_BT_BPPC_MODULE OR
   NOT EXCLUDE_CSR_BT_BPPS_MODULE OR
   NOT EXCLUDE_CSR_BT_FTC_MODULE OR
   NOT EXCLUDE_CSR_BT_FTS_MODULE OR
   NOT EXCLUDE_CSR_BT_OPC_MODULE OR
   NOT EXCLUDE_CSR_BT_OPS_MODULE OR
   NOT EXCLUDE_CSR_BT_PAC_MODULE OR
   NOT EXCLUDE_CSR_BT_PAS_MODULE OR
   NOT EXCLUDE_CSR_BT_SMLC_MODULE OR
   NOT EXCLUDE_CSR_BT_SMLS_MODULE OR
   NOT EXCLUDE_CSR_BT_AVRCP_IMAGING_MODULE)
        list(APPEND LIBS
             csr_bt_obex_common)
endif()

if(NOT EXCLUDE_CSR_BT_AV_MODULE)
    list(APPEND LIBS
         csr_bt_app_av
         csr_sbc)

    string(FIND ${CSR_BT_APP_AV_FILTER} "sbcaudio" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO 1)
    endif()

    if ((CSR_PLATFORM MATCHES LINUX AND CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO STREQUAL "1"))
        list(APPEND LIBS
             asound)
    endif()
endif()

if(NOT EXCLUDE_CSR_BT_AVRCP_MODULE)
    list(APPEND LIBS
         csr_bt_app_avrcp)
endif()

if(NOT EXCLUDE_CSR_BT_HFG_MODULE)
    list(APPEND LIBS
         csr_bt_app_hfg)
endif()

if(NOT EXCLUDE_CSR_BT_HF_MODULE)
    list(APPEND LIBS
         csr_bt_app_hf)
endif()

if(NOT EXCLUDE_CSR_BT_GNSS_CLIENT_MODULE AND NOT CSR_BT_APP_USE_GNSS_CLIENT STREQUAL "0")
    list(APPEND LIBS
         csr_bt_app_gnss_client)
endif()

if(NOT EXCLUDE_CSR_BT_GNSS_SERVER_MODULE AND NOT CSR_BT_APP_USE_GNSS_SERVER STREQUAL "0")
    list(APPEND LIBS
         csr_bt_app_gnss_server)
endif()

if(NOT EXCLUDE_CSR_BT_PAC_MODULE AND NOT CSR_BT_APP_USE_PAC STREQUAL "0")
    list(APPEND LIBS
         csr_bt_app_pac)
endif()

if(NOT EXCLUDE_CSR_BT_SPP_MODULE AND CSR_BT_APP_USE_SPP)
    list(APPEND LIBS
         csr_bt_app_spp)
    if(NOT EXCLUDE_CSR_BT_SPP_MODULE_OPTIONAL AND NOT EXCLUDE_CSR_AM_MODULE)
        list(APPEND LIBS csr_am)
    endif()
endif()

if(NOT EXCLUDE_CSR_BT_BSL_MODULE AND NOT EXCLUDE_CSR_BT_BNEP_MODULE)
    list(APPEND LIBS
         csr_bt_app_pan
         csr_ip
         csr_ip_ether_lib
         csr_ip_ifconfig_lib
         csr_ip_socket_lib)
endif()

if(NOT EXCLUDE_CSR_BT_FTC_MODULE)
    list(APPEND LIBS
         csr_bt_app_ftc)
endif()

if(NOT EXCLUDE_CSR_BT_FTS_MODULE)
    list(APPEND LIBS
         csr_bt_app_fts)
endif()

if(NOT EXCLUDE_CSR_BT_PHDC_AG_MODULE)
    list(APPEND LIBS
         csr_bt_app_phdc_ag)
endif()

if(NOT EXCLUDE_CSR_BT_PHDC_MGR_MODULE)
    list(APPEND LIBS
         csr_bt_app_phdc_mgr)
endif()

if(CSR_BT_LE_ENABLE)
    list(APPEND LIBS csr_bt_app_gatt)
    if(CSR_BT_APP_USE_GATT_GENERIC_SERVER)
        list(APPEND LIBS csr_bt_app_generic_server)
    endif()
    if(CSR_BT_APP_USE_GATT_LE_BROWSER)
        list(APPEND LIBS csr_bt_app_le_browser)
    endif()
    if(NOT EXCLUDE_CSR_BT_HOGH_MODULE)
        list(APPEND LIBS csr_bt_app_hogh)
    endif()
    if(CSR_BT_APP_USE_GATT_HOGD)
        list(APPEND LIBS csr_bt_app_hogd)
    endif()
    if(CSR_BT_APP_USE_GATT_PXPM)
        list(APPEND LIBS csr_bt_app_pxpm)
    endif()
    if(NOT EXCLUDE_CSR_BT_PROX_SRV_MODULE AND CSR_BT_APP_USE_GATT_PROXS)
        list(APPEND LIBS csr_bt_app_prox_srv)
    endif()
    if(CSR_BT_APP_USE_GATT_RSCC)
        list(APPEND LIBS  csr_bt_app_rscc)
    endif()
    if(CSR_BT_APP_USE_GATT_RSCS)
        list(APPEND LIBS  csr_bt_app_rscs)
    endif()
    if(CSR_BT_APP_USE_GATT_THERMC)
        list(APPEND LIBS csr_bt_app_thermc)
    endif()
    if(NOT EXCLUDE_CSR_BT_THERM_SRV_MODULE AND CSR_BT_APP_USE_GATT_THERMS)
         list(APPEND LIBS csr_bt_app_therms)
    endif()
endif()

if (CSR_AMP_ENABLE AND CSR_BT_APP_AMP_WIFI)
    list(APPEND LIBS
         csr_bt_app_ampwifi
         csr_wifi_util
         csr_wifi
         csr_wifi_lib
         csr_wifi_porting
         csr_wifi_porting_extra
         csr_wifi_crypto
         csr_wifi_sme)

    if(WIFI_MAJOR_VERSION LESS 5)
        list(APPEND LIBS
             csr_wifi_porting_fs)
    endif()

    if (CSR_PLATFORM MATCHES LINUX)
        if(WIFI_MAJOR_VERSION LESS 5)
            list(APPEND LIBS
                 csr_wifi_router_remote_lib)
        else()
            list(APPEND LIBS
                 csr_wifi_router_remote
                 csr_wifi_porting_router_remote)
        endif()
    else()
        list(APPEND LIBS
             csr_wifi_router)
    endif()
endif()

if (CSR_INSTRUMENTED_PROFILING_SERVICE)
    list(APPEND LIBS
         csr_ips
         csr_ips_manager)
endif()

if (CSR_PLATFORM MATCHES WINDOWS)
    list(APPEND LIBS winmm)
endif()

if (CSR_MEMALLOC_PROFILING)
    list(APPEND LIBS
         csr_memstat)
endif()

if(CSR_HYDRA_SSD)
    LINK_DIRECTORIES(${CSR_HYDRA_LIB_DIR})
    LINK_DIRECTORIES(${CSR_OSKA_LIB_DIR})
endif()

if(EXCLUDE_CSR_BT_ASM_MODULE OR CSR_BT_INTEROP_TEST_BUILD)
    csr_add_executable(csr_bt_app_default_hci
                       COMPONENT CSR_COMPONENT_BT_APP_GEN
                       SOURCES ${SRCS}
                       HEADERS ${HDRS}
                       LIBRARIES ${LIBS} SYSTEM
                       ALLOW_NON_ANSI
                       ALLOW_WARNINGS)

    if(CSR_HYDRA_SSD)
        include_directories(${CSR_OSKA_INC_DIR})
        include_directories(${CSR_HYDRA_INC_DIR})
        TARGET_LINK_LIBRARIES(csr_bt_app_default_hci hydra_user)
        TARGET_LINK_LIBRARIES(csr_bt_app_default_hci oska)
    endif()
endif()

