# AUTO-GENERATED by build.sh — DO NOT EDIT
# 按芯片选择 av_device_* / audio_device_* 实现：
#   esp32p4 —— filestream 文件流模拟（av_device_filestream.c + audio_device_filestream.c），无摄像头/I2S 硬件依赖
#   esp32s3 —— 真实硬件驱动（av_device_esp32s3.c 提供 av_device_*，audio_device_esp.c 提供 audio_device_*）
if(IDF_TARGET STREQUAL "esp32p4")
    set(DEVICE_SRCS av_device_filestream.c audio_device_filestream.c)
elseif(IDF_TARGET STREQUAL "esp32s3")
    set(DEVICE_SRCS iot_video_demo/av_device_esp32s3.c iot_aitalk_demo/audio_device_esp.c)
else()
    message(FATAL_ERROR "Unsupported target: ${IDF_TARGET}")
endif()

idf_component_register(
    SRCS
        cmd_iot_demo.c
        video_source.c
        ${DEVICE_SRCS}
        iot_video_demo/iot_demo.c
        iot_video_demo/av_sender.c
        iot_video_demo/av_receiver.c
        iot_video_demo/cloud_storage_demo.c
        iot_aitalk_demo/aitalk_demo.c
    INCLUDE_DIRS include
    PRIV_INCLUDE_DIRS . iot_video_demo iot_aitalk_demo
        ${CMAKE_CURRENT_LIST_DIR}/../tc_iot_sdk/include/hal
    # esp32s3 真实驱动依赖的硬件组件：I2S/I2C/GPIO 驱动、定时器、音频 Codec、esp-sr AEC。
    # （esp32p4 filestream 用不到，但包内 CMakeLists 两目标共用，多余依赖无害。）
    # 与 platform/esp32p4/components/cmd_iot_demo/CMakeLists.txt 的 PRIV_REQUIRES 保持一致。
    PRIV_REQUIRES console tc_iot_sdk esp_netif driver esp_timer
        esp_driver_gpio esp_driver_i2c esp_driver_i2s
        espressif__esp_audio_codec espressif__esp_codec_dev espressif__esp-sr
)

target_compile_definitions(${COMPONENT_LIB} PRIVATE PLATFORM_FREERTOS)

set(BUILD_IOT_AV 1)
set(BUILD_IOT_CLOUD_STORAGE 1)
set(BUILD_IOT_AITALK 1)
include(${CMAKE_CURRENT_LIST_DIR}/../tc_iot_sdk/module_config.cmake OPTIONAL)
target_compile_definitions(${COMPONENT_LIB} PRIVATE
    BUILD_IOT_AV=${BUILD_IOT_AV}
    BUILD_IOT_CLOUD_STORAGE=${BUILD_IOT_CLOUD_STORAGE}
    BUILD_IOT_AITALK=${BUILD_IOT_AITALK}
    BUILD_OPUS=${BUILD_OPUS})

target_compile_options(${COMPONENT_LIB} PRIVATE
    "SHELL:-include ${CMAKE_CURRENT_LIST_DIR}/platform_compat.h"
)

# HAL_Audio 作为 OBJECT 库注入，避免 archive 链接顺序导致 tc_iot_sdk 找不到 HAL 符号
add_library(hal_audio_obj OBJECT ${CMAKE_CURRENT_LIST_DIR}/HAL_Audio_esp.c)
target_include_directories(hal_audio_obj PRIVATE
    $<TARGET_PROPERTY:${COMPONENT_LIB},INCLUDE_DIRECTORIES>
)
target_compile_definitions(hal_audio_obj PRIVATE
    $<TARGET_PROPERTY:${COMPONENT_LIB},COMPILE_DEFINITIONS>
)
target_link_libraries(${COMPONENT_LIB} PUBLIC $<TARGET_OBJECTS:hal_audio_obj>)
