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

set(SRCS
    csr_bt_av2_main.c
    csr_bt_av2_utils.c
    csr_bt_av2_avup.c
    csr_bt_av2_avhandlers.c
    csr_bt_av2_avdown.c
    csr_bt_av2_filter.c
    csr_bt_filter_av2.c
    csr_bt_av_app_ui_sef.c
    csr_bt_av_app_util.c
    csr_bt_av_app_lib.c
    csr_bt_av_app_sef.c
    csr_bt_filter_filedump.c)

set(HDRS
    csr_bt_aac_parser.h
    csr_bt_av2.h
    csr_bt_av2_filter.h
    csr_bt_av_app_ui_sef.h
    csr_bt_av_app_ui_strings.h
    csr_bt_av_app_util.h
    csr_bt_av_app_sef.h
    ../inc/csr_bt_av_app_prim.h
    ../inc/csr_bt_av_app_lib.h
    ../inc/csr_bt_av_app_task.h )


set(SRCS_AAC
        csr_bt_aac_parser.c
        csr_bt_filter_aac.c)

set(SRCS_MP3
    csr_bt_filter_mp3.c)

set(SRCS_SBCWAV
        csr_bt_filter_sbc.c
        csr_bt_filter_wave.c)

set(SRCS_SBCAUDIO
        csr_bt_filter_sbc.c)

set(SRCS_SBCFILE
        csr_bt_filter_sbcfile.c)

set(SRCS_AVROUTER
        csr_bt_filter_avrouter.c)

set(SRCS_WIN
        csr_bt_filter_winplay.c
        csr_bt_filter_wingrab.c)

set(SRCS_LINUX
        csr_bt_filter_alsa.c )

set(SRCS_LINUX_PULSE
        csr_bt_filter_pulse.c )


if (CSR_PLATFORM_MOJAVE)
    set (CSR_BT_APP_AV_ALLOW_NON_ANSI "ALLOW_NON_ANSI")
    set(CSR_BT_APP_AV_FILTER "sbcpulse" CACHE STRING "Do not use - Fixed to sbcPulse for Mojave platform" FORCE)
else()
    set (CSR_BT_APP_AV_ALLOW_NON_ANSI "")
endif()

# Find all filters which are enabled. Also find the default filter; the one at the front would be treated as default
if(CSR_BT_APP_AV_FILTER)
    string(FIND ${CSR_BT_APP_AV_FILTER} "aac" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_AAC 1)
        if(${pos} EQUAL 0)
            set(USE_AAC_AS_DEFAULT 1)
        endif()
    endif()

    string( FIND ${CSR_BT_APP_AV_FILTER} "mp3" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_MP3 1)
        if(${pos} EQUAL 0)
            set(USE_MP3_AS_DEFAULT 1)
        endif()
    endif()

    string( FIND ${CSR_BT_APP_AV_FILTER} "sbcfile" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_SBCFILE 1)
        if(${pos} EQUAL 0)
            set(USE_SBCFILE_AS_DEFAULT 1)
        endif()
    endif()

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

    string( FIND ${CSR_BT_APP_AV_FILTER} "sbcpulse" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_SBCPULSE 1)
        if(${pos} EQUAL 0)
            set(USE_SBCPULSE_AS_DEFAULT 1)
        endif()
    endif()

    string( FIND ${CSR_BT_APP_AV_FILTER} "sbcwav" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_SBCWAV 1)
        if(${pos} EQUAL 0)
            set(USE_SBCWAVE_AS_DEFAULT 1)
        endif()
    endif()

    string( FIND ${CSR_BT_APP_AV_FILTER} "avrouter" pos)
    if(${pos} GREATER -1)
        set(CSR_BT_APP_AV_INCLUDE_FILTER_AVROUTER 1)
        if(${pos} EQUAL 0)
            set(USE_AVROUTER_AS_DEFAULT 1)
        endif()
    endif()
endif()

csr_add_library(csr_bt_app_av
                COMPONENT CSR_COMPONENT_BT_APP_GEN_AV
                SOURCES ${SRCS}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_MP3 STREQUAL "1" SOURCES ${SRCS_MP3}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_AAC STREQUAL "1" SOURCES ${SRCS_AAC}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_SBCWAV STREQUAL "1" SOURCES ${SRCS_SBCWAV}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO STREQUAL "1" SOURCES ${SRCS_SBCAUDIO}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_SBCPULSE STREQUAL "1" SOURCES ${SRCS_SBCAUDIO}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_SBCFILE STREQUAL "1" SOURCES ${SRCS_SBCFILE}
                CONDITIONAL CSR_BT_APP_AV_INCLUDE_FILTER_AVROUTER STREQUAL "1" SOURCES ${SRCS_AVROUTER}
                CONDITIONAL CSR_PLATFORM MATCHES WINDOWS AND CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO STREQUAL "1" SOURCES ${SRCS_WIN}
                CONDITIONAL CSR_PLATFORM MATCHES LINUX AND CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO STREQUAL "1" SOURCES ${SRCS_LINUX}
                CONDITIONAL CSR_PLATFORM MATCHES LINUX AND CSR_BT_APP_AV_INCLUDE_FILTER_SBCPULSE STREQUAL "1" SOURCES ${SRCS_LINUX_PULSE}
                HEADERS ${HDRS}
                LIBRARIES ${LIBS} SYSTEM
                ALLOW_WARNINGS
                ${CSR_BT_APP_AV_ALLOW_NON_ANSI})

if(NOT EXCLUDE_CSR_BT_ASM_MODULE AND NOT CSR_BT_INTEROP_TEST_BUILD AND (CSR_BT_APP_AV_INCLUDE_FILTER_AVROUTER STREQUAL "1"))
     set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_AVROUTER;USE_AVROUTER_AS_DEFAULT")
else()
    if((CSR_BT_APP_AV_INCLUDE_FILTER_AAC STREQUAL "1") AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_AAC;USE_FILEDUMP")
    endif()

    if((CSR_BT_APP_AV_INCLUDE_FILTER_MP3 STREQUAL "1") AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_MP3;USE_FILEDUMP")
    endif()

    if((CSR_BT_APP_AV_INCLUDE_FILTER_SBCWAV STREQUAL "1") AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBC;USE_WAVE")
    endif()

    if((CSR_BT_APP_AV_INCLUDE_FILTER_SBCAUDIO STREQUAL "1") AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBC;USE_SBCAUDIO")
        # Autodetect audio system
        if ((CSR_PLATFORM MATCHES WINDOWS) AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS USE_WINAUDIO)
        endif()

        if ((CSR_PLATFORM MATCHES LINUX)  AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_ALSA `pkg-config --cflags alsa`")
        endif()
    endif()


    if (((CSR_PLATFORM MATCHES LINUX) AND ((CSR_BT_APP_AV_FILTER STREQUAL "sbcpulse") OR (CSR_BT_APP_AV_INCLUDE_FILTER_SBCPULSE STREQUAL "1"))) AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_PULSE `pkg-config --cflags -libpulse-simple`")
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBC;USE_SBCAUDIO")
        message(STATUS "SBCPULSE set2")
    endif()

    if((CSR_BT_APP_AV_INCLUDE_FILTER_SBCFILE STREQUAL "1") AND (TARGET csr_bt_app_av))
        set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS USE_SBCFILE)
    endif()


    if((USE_AAC_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_AAC_AS_DEFAULT")
    elseif((USE_MP3_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_MP3_AS_DEFAULT")
    elseif((USE_SBCWAVE_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBCWAVE_AS_DEFAULT")
    elseif((USE_SBCAUDIO_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBCAUDIO_AS_DEFAULT")
    elseif((USE_SBCPULSE_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBCAUDIO_AS_DEFAULT")
    elseif((USE_SBCFILE_AS_DEFAULT STREQUAL "1") AND (TARGET csr_bt_app_av))
            set_property(TARGET csr_bt_app_av APPEND PROPERTY COMPILE_DEFINITIONS "USE_SBCFILE_AS_DEFAULT")
    else()
        message(FATAL_ERROR "\n*************************************\nFilter type for AV APP is not set. Please use compile flag \
    CSR_BT_APP_AV_FILTER=[<mp3>,<aac>,<sbcfile>,<sbcwav>,<sbcaudio>,<sbcpulse>,<avrouter>].\n Note that multiple filters can be specified seperated by ',' \n
    First filter would be used a default fitler if multiple filters are specified \n*************************************\n")
    endif()
endif()
