Add initial board, HAL, and executor modules

This commit is contained in:
wang committed 2026-05-07 17:24:10 +08:00
1 parent 3b9e129c88
commit 0b2eebe76d
82 files changed
+20611

No files matched your search

+150
View File
@@ -0,0 +1,150 @@
# 获取当前选择的 demo 配置
if(CONFIG_SWEEKAR_DEMO_1)
set(ACTIVE_DEMO "sweekar_demo1")
elseif(CONFIG_SWEEKAR_DEMO_2)
set(ACTIVE_DEMO "sweekar_demo2")
elseif(CONFIG_SWEEKAR_DEMO_3)
set(ACTIVE_DEMO "sweekar_demo3")
elseif(CONFIG_SWEEKAR_DEMO_4)
set(ACTIVE_DEMO "sweekar_demo4")
elseif(CONFIG_SWEEKAR_DEMO_5)
set(ACTIVE_DEMO "sweekar_demo5")
elseif(CONFIG_SWEEKAR_DEMO_6)
set(ACTIVE_DEMO "sweekar_demo6")
elseif(CONFIG_SWEEKAR_DEMO_7)
set(ACTIVE_DEMO "sweekar_demo7")
endif()
# 初始化全局变量,用于收集各模块的信息
set(MODULE_SRCS)
set(MODULE_INCLUDE_DIRS)
set(MODULE_REQUIRES)
set(MODULE_PRIV_REQUIRES)
set(MODULE_EMBED_TXTFILES)
if(NOT DEFINED CONFIG_SWEEKAR_DEMO_SELECTION)
set(EARLY_EXPANSION TRUE)
message(STATUS "Early expansion pass: loading all module requirements")
else()
set(EARLY_EXPANSION FALSE)
endif()
# ===================================================================
# 执行 Kconfig 自动组装脚本 (在配置阶段自动生成 Kconfig.modules)
# ===================================================================
execute_process(
COMMAND python3 ${CMAKE_CURRENT_LIST_DIR}/generate_kconfig_modules.py
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE generate_kconfig_result
)
if(NOT generate_kconfig_result EQUAL 0)
message(FATAL_ERROR "Failed to generate Kconfig.modules")
endif()
# ==================== 模块注册区 ====================
# 定义需要扫描的架构层级目录
set(SUBSYSTEM_DIRS
"04_hal"
"05_executors"
"05_service"
"06_behaviors"
"tests"
)
# 扫描并加载所有启用的子模块(依赖各个模块中的 module.cmake)
foreach(dir ${SUBSYSTEM_DIRS})
file(GLOB MODULE_FILES "${CMAKE_CURRENT_LIST_DIR}/${dir}/*/module.cmake")
foreach(mod_file ${MODULE_FILES})
include(${mod_file})
endforeach()
endforeach()
# sweekar_demos 模块 (单独加载)
# include(${CMAKE_CURRENT_LIST_DIR}/sweekar_demos/module.cmake)
# ===================================================================
if(MODULE_REQUIRES)
list(REMOVE_DUPLICATES MODULE_REQUIRES)
endif()
if(MODULE_PRIV_REQUIRES)
list(REMOVE_DUPLICATES MODULE_PRIV_REQUIRES)
endif()
message(STATUS "==== DEBUG ====")
message(STATUS "MODULE_REQUIRES: ${MODULE_REQUIRES}")
message(STATUS "MODULE_SRCS: ${MODULE_SRCS}")
message(STATUS "===============")
idf_component_register(
SRCS
"main.cc"
# "tests/test.cc"
# "tests/korvo_port/korvo_port_runner.cc"
# "tests/korvo_port/ai_agent.c"
# "tests/korvo_port/audio_proc.c"
# "tests/korvo_port/rtc_proc.c"
# "../managed_components/espressif__zlib/zlib/contrib/minizip/unzip.c"
# "../managed_components/espressif__zlib/zlib/contrib/minizip/ioapi.c"
${MODULE_SRCS}
INCLUDE_DIRS
"."
# "../managed_components/espressif__zlib/zlib/contrib/minizip"
# "05_executors/touch_sensor"
# "05_executors/aw_touch_sensor"
${MODULE_INCLUDE_DIRS}
REQUIRES
# lvgl
# esp_timer
# driver
# esp_driver_i2c
# esp_driver_i2s
# esp_event
# nvs_flash
# spi_flash
# esp_driver_gpio
# spiffs
# vfs
# esp_http_server
# log
# fatfs
# bt
# mbedtls
# audio_pipeline
# audio_hal
# audio_board
# esp_peripherals
# audio_stream
# audio_sal
# esp-adf-libs
# espressif__zlib
${MODULE_REQUIRES}
PRIV_REQUIRES
# esp-qcloud
${MODULE_PRIV_REQUIRES}
EMBED_TXTFILES
${MODULE_EMBED_TXTFILES}
)
# 添加 C++ 标准库支持
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 自动创建SPIFFS分区镜像
# 这会在构建时自动生成audio.bin并在烧录时一并烧录
# spiffs_create_partition_image(audio ../spiffs FLASH_IN_PROJECT)
# 添加编译选项来忽略字符串常量转换警告
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-write-strings)
target_compile_options(${COMPONENT_LIB} PRIVATE -DUSE_FILE32API)
set(LANG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/assets/lang_config.h")
# 根据 boards 目录内部模块自动匹配当前选择的板卡
include(${CMAKE_CURRENT_LIST_DIR}/02_physical/boards/module.cmake)
if (CONFIG_VOLC_RTC_MODE)
set(COMPONENT_SRCS ${COMPONENT_SRCS} RtcBotUtils.c)
endif()
target_compile_definitions(${COMPONENT_LIB} PRIVATE IOAPI_NO_64)