set(SRCS
    "app_main.c"
    "k10_hw.c"
    "k10_lcd.c"
    "k10_input.c"
    "k10_rtouch.c"
    "k10_advisor.c"
    "audio_port_k10.c"   # NS4168 I2S 功放端口（板载喇叭）
    # common/llm：4-bit llama2.c 风格推理引擎（纯 C，零平台依赖，原样复用）
    "../../pocket-tank/common/llm/advisor_core.c"
    "../../pocket-tank/common/llm/q4_model.c"
    "../../pocket-tank/common/llm/word_tok.c"
)

set(PRIV_REQS
    tankcore
    esp_driver_spi
    esp_driver_gpio
    esp_driver_i2c
    esp_driver_i2s   # NS4168 板载喇叭
    esp_timer
    esp_partition
    nvs_flash
    esp_app_format
    heap            # heap_caps_malloc / MALLOC_CAP_*
    freertos        # 推理 worker 任务（core 1）
)

# 4 线电阻触摸（XPT2046）默认编译：K10 板载四条触摸线悬空，需要在外部
# 挂一个 XPT2046 触摸控制小板 + 飞线才能用（详见 k10_rtouch.c 顶部说明）。
# XPT2046 走 SPI3（与 LCD 共用 SCLK/MOSI），不需要 ADC。
# 关闭方式：idf.py menuconfig -> "K10 porting demo" -> "Enable 4-wire resistive touch"
if(CONFIG_K10_RTOUCH)
    # SPI 已在 PRIV_REQS 里（esp_driver_spi），此处无需额外依赖
endif()

idf_component_register(
    SRCS ${SRCS}
    # common/llm 的头文件（advisor_core.h / q4_model.h / word_tok.h）放在这个目录
    INCLUDE_DIRS "." "../../pocket-tank/common/llm"
                  "../../pocket-tank/firmware/main"   # audio_port.h 端口接口（与 ES8311 端口共用同一份）
    PRIV_REQUIRES ${PRIV_REQS}
    # 分词器嵌进 app 镜像：k10_advisor.c 通过 _binary_tokenizer_bin_start 读取
    EMBED_FILES "tokenizer.bin"
                  "../../pocket-tank/assets/sounds/sounds.bin"   # 音效样本库：audio_port_k10.c 经 _binary_sounds_bin_start 读取
)

# COMPONENT_LIB 只有在 idf_component_register 之后才存在
if(CONFIG_K10_RTOUCH)
    target_compile_definitions(${COMPONENT_LIB} PRIVATE K10_RTOUCH=1)
endif()
