@@ -0,0 +1,33 @@
|
||||
set(VOLC_CONV_AI_SRCS "${CMAKE_CURRENT_LIST_DIR}/../src/volc_conv_ai.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/base/volc_device_manager.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/volc_auth.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/volc_base64.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/volc_http.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/volc_json.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../third_party/mbedtls_port/tls_certificate.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../third_party/mbedtls_port/tls_client.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../third_party/webclient/src/webclient.c"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 common src file")
|
||||
|
||||
set(VOLC_CONV_AI_INCS "${CMAKE_CURRENT_LIST_DIR}/../inc"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../third_party/mbedtls_port"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../third_party/webclient/inc"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 common include dir")
|
||||
|
||||
set(VOLC_CONV_AI_LOW_LOAD_SRCS "${CMAKE_CURRENT_LIST_DIR}/../src/transports/low_load/src/volc_ws.c"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/transports/low_load/third_party/websocket/websocket.c"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 low load solution src file")
|
||||
set(VOLC_CONV_AI_LOW_LOAD_INCS "${CMAKE_CURRENT_LIST_DIR}/../src/transports/low_load/inc"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/transports/low_load/third_party/websocket"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 low load solution include dir")
|
||||
|
||||
set(VOLC_CONV_AI_HIGH_QUALITY_SRCS "${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/src/volc_rtc.c"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 high quality solution src file")
|
||||
set(VOLC_CONV_AI_HIGH_QUALITY_INCS "${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/inc"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/third_party/volc_rtc_engine_lite/inc"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 high quality solution include dir")
|
||||
|
||||
set(VOLC_CONV_AI_PLATFORM_INCS "${CMAKE_CURRENT_LIST_DIR}/../osal/inc"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 platform include dir")
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# Copyright (2025) Beijing Volcano Engine Technology Ltd.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# ConversationalAI SDK ESP-IDF component configuration
|
||||
# Converted from standard CMake to ESP-IDF component format
|
||||
|
||||
# Source files
|
||||
set(VOLC_SRCS ${VOLC_CONV_AI_SRCS}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../osal/src/espressif/volc_osal.c"
|
||||
)
|
||||
|
||||
set(VOLC_INCS ${VOLC_CONV_AI_INCS}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../osal/inc"
|
||||
)
|
||||
|
||||
if(CONFIG_VOLC_RTC_MODE)
|
||||
message(STATUS "CONFIG_VOLC_RTC_MODE: ${CONFIG_VOLC_RTC_MODE}")
|
||||
list(APPEND VOLC_SRCS
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_SRCS}
|
||||
)
|
||||
list(APPEND VOLC_INCS
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_INCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CONFIG_VOLC_WS_MODE)
|
||||
message(STATUS "CONFIG_VOLC_WS_MODE: ${CONFIG_VOLC_WS_MODE}")
|
||||
list(APPEND VOLC_SRCS
|
||||
${VOLC_CONV_AI_LOW_LOAD_SRCS}
|
||||
)
|
||||
list(APPEND VOLC_INCS
|
||||
${VOLC_CONV_AI_LOW_LOAD_INCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${VOLC_SRCS}
|
||||
INCLUDE_DIRS ${VOLC_INCS}
|
||||
REQUIRES mbedtls json lwip esp_netif
|
||||
)
|
||||
|
||||
if(CONFIG_VOLC_RTC_MODE)
|
||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE ENABLE_RTC_MODE)
|
||||
|
||||
# Add prebuilt library for RTC mode
|
||||
add_prebuilt_library(volc_engine_rtc_lite
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/third_party/volc_rtc_engine_lite/libs/${CONFIG_IDF_TARGET}/libVolcEngineRTCLite.a"
|
||||
REQUIRES mbedtls espressif__zlib json lwip)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE volc_engine_rtc_lite)
|
||||
endif()
|
||||
|
||||
if(CONFIG_VOLC_WS_MODE)
|
||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE ENABLE_WS_MODE)
|
||||
endif()
|
||||
|
||||
# Compiler flags
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE
|
||||
-w
|
||||
-Os
|
||||
-ffunction-sections
|
||||
-fdata-sections
|
||||
)
|
||||
|
||||
# Export the library for use by other components
|
||||
set(VOLC_CONV_AI_SDK_LIBRARIES ${COMPONENT_LIB} PARENT_SCOPE)
|
||||
set(VOLC_CONV_AI_SDK_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../inc PARENT_SCOPE)
|
||||
@@ -0,0 +1,116 @@
|
||||
message(STATUS "配置Linux平台的volc_conv_ai库")
|
||||
|
||||
option(ENABLE_RTC_MODE "Enable Conv AI RTC mode" ON)
|
||||
option(ENABLE_WS_MODE "Enable Conv AI WS mode" OFF)
|
||||
option(ENABLE_CJSON "Enable cJSON" ON)
|
||||
option(ENABLE_MBEDTLS "Enable Mbedtls" ON)
|
||||
option(ENABLE_SAMPLE "Enable sample" ON)
|
||||
|
||||
# 系统抽象层代码
|
||||
if(NOT DEFINED VOLC_CONV_AI_PLATFORM_SRCS)
|
||||
set(VOLC_CONV_AI_PLATFORM_SRCS
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../osal/src/linux/volc_osal.c"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 platform src file")
|
||||
endif()
|
||||
|
||||
# mbedtls构建
|
||||
set(MBEDTLS_PREBUILT_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/prebuilt/mbedtls)
|
||||
set(MBEDTLS_LIBRARY_FILE "${MBEDTLS_PREBUILT_DIR}/lib/libmbedtls.a")
|
||||
set(MBEDTLS_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/mbedtls)
|
||||
|
||||
# 使用第三方开源库构建
|
||||
if(NOT EXISTS "${MBEDTLS_LIBRARY_FILE}" AND NOT EXISTS "${MBEDTLS_SOURCE_DIR}/CMakeLists.txt")
|
||||
message(STATUS "start download and compile mbedtls...")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(
|
||||
mbedtls
|
||||
GIT_REPOSITORY https://github.com/ARMmbed/mbedtls.git
|
||||
GIT_TAG v3.6.3
|
||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build
|
||||
SOURCE_DIR ${MBEDTLS_SOURCE_DIR}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${MBEDTLS_PREBUILT_DIR}
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED}
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
-DCMAKE_MACOSX_RPATH=${CMAKE_MACOSX_RPATH}
|
||||
-DENABLE_TESTING=OFF
|
||||
-DENABLE_PROGRAMS=OFF
|
||||
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -Wno-unused-but-set-parameter
|
||||
-DMBEDTLS_FATAL_WARNINGS=OFF
|
||||
|
||||
BUILD_ALWAYS FALSE
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
else()
|
||||
message(STATUS "mbedtls library already exists, skip download and compile")
|
||||
endif()
|
||||
|
||||
# volc_conv_ai_a库的构建,注意此处用源码的形式包括了 cJSON库
|
||||
add_library(volc_conv_ai_a STATIC
|
||||
${VOLC_CONV_AI_SRCS}
|
||||
${VOLC_CONV_AI_PLATFORM_SRCS}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/cJSON/cJSON.c"
|
||||
)
|
||||
|
||||
# cJSON库 头文件目录
|
||||
if(ENABLE_CJSON)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../src/util/cJSON/"
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(mbedtls_static STATIC IMPORTED GLOBAL)
|
||||
add_library(mbedx509_static STATIC IMPORTED GLOBAL)
|
||||
add_library(zlib_static STATIC IMPORTED GLOBAL)
|
||||
add_library(mbedcrypto_static STATIC IMPORTED GLOBAL)
|
||||
|
||||
set_target_properties(zlib_static PROPERTIES
|
||||
IMPORTED_LOCATION ${CMAKE_CURRENT_LIST_DIR}/../third_party/prebuilt/zlib/lib/libz.a
|
||||
)
|
||||
set_target_properties(mbedtls_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedtls.a
|
||||
)
|
||||
set_target_properties(mbedx509_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedx509.a
|
||||
)
|
||||
set_target_properties(mbedcrypto_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedcrypto.a
|
||||
)
|
||||
|
||||
# 包括 火山引擎RTC Engine Lite库
|
||||
if(ENABLE_RTC_MODE)
|
||||
add_definitions(-DENABLE_RTC_MODE)
|
||||
target_sources(volc_conv_ai_a PRIVATE
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_SRCS}
|
||||
)
|
||||
message(STATUS "use high quality RTC mode")
|
||||
set(RTC_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/third_party/volc_rtc_engine_lite/libs/linux_x64)
|
||||
message(STATUS "RTC_LIB_DIR: ${RTC_LIB_DIR}")
|
||||
find_library(RTC_LIBRARIES NAMES VolcEngineRTCLite REQUIRED NO_CMAKE_FIND_ROOT_PATH PATHS ${RTC_LIB_DIR})
|
||||
target_link_libraries(volc_conv_ai_a PRIVATE
|
||||
${RTC_LIBRARIES}
|
||||
)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_INCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_MBEDTLS)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC ${MBEDTLS_PREBUILT_DIR}/include)
|
||||
|
||||
target_link_libraries(volc_conv_ai_a PRIVATE
|
||||
mbedtls_static
|
||||
mbedx509_static
|
||||
mbedcrypto_static
|
||||
zlib_static
|
||||
)
|
||||
|
||||
target_compile_definitions(volc_conv_ai_a PRIVATE ENABLE_MBEDTLS)
|
||||
endif()
|
||||
|
||||
target_link_libraries(volc_conv_ai_a PUBLIC pthread)
|
||||
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
${VOLC_CONV_AI_INCS}
|
||||
${VOLC_CONV_AI_PLATFORM_INCS}
|
||||
)
|
||||
@@ -0,0 +1,133 @@
|
||||
message(STATUS "配置macOS平台的volc_conv_ai库")
|
||||
|
||||
option(ENABLE_RTC_MODE "Enable Conv AI RTC mode" OFF)
|
||||
option(ENABLE_WS_MODE "Enable Conv AI WS mode" OFF)
|
||||
option(ENABLE_CJSON "Enable cJSON" ON)
|
||||
option(ENABLE_MBEDTLS "Enable Mbedtls" ON)
|
||||
|
||||
if(NOT DEFINED VOLC_CONV_AI_PLATFORM_SRCS)
|
||||
set(VOLC_CONV_AI_PLATFORM_SRCS
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../osal/src/macos/volc_osal.c"
|
||||
CACHE INTERNAL "ConversationalAI-Embedded-Kit-2.0 platform src file")
|
||||
endif()
|
||||
|
||||
set(MBEDTLS_PREBUILT_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/prebuilt/mbedtls)
|
||||
set(MBEDTLS_LIBRARY_FILE "${MBEDTLS_PREBUILT_DIR}/lib/libmbedtls.a")
|
||||
set(MBEDTLS_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/mbedtls)
|
||||
|
||||
if(NOT EXISTS "${MBEDTLS_LIBRARY_FILE}" AND NOT EXISTS "${MBEDTLS_SOURCE_DIR}/CMakeLists.txt")
|
||||
message(STATUS "start download and compile mbedtls...")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(
|
||||
mbedtls
|
||||
GIT_REPOSITORY https://github.com/ARMmbed/mbedtls.git
|
||||
GIT_TAG v3.6.3
|
||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build
|
||||
SOURCE_DIR ${MBEDTLS_SOURCE_DIR}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${MBEDTLS_PREBUILT_DIR}
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED}
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
-DCMAKE_MACOSX_RPATH=${CMAKE_MACOSX_RPATH}
|
||||
-DENABLE_TESTING=OFF
|
||||
-DENABLE_PROGRAMS=OFF
|
||||
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -Wno-unused-but-set-parameter
|
||||
-DMBEDTLS_FATAL_WARNINGS=OFF
|
||||
|
||||
BUILD_ALWAYS FALSE
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
else()
|
||||
message(STATUS "mbedtls library already exists, skip download and compile")
|
||||
endif()
|
||||
|
||||
add_library(volc_conv_ai_a STATIC
|
||||
${VOLC_CONV_AI_SRCS}
|
||||
${VOLC_CONV_AI_PLATFORM_SRCS}
|
||||
)
|
||||
|
||||
if(ENABLE_WS_MODE)
|
||||
message(STATUS "use low load WS mode")
|
||||
target_sources(volc_conv_ai_a PRIVATE
|
||||
${VOLC_CONV_AI_LOW_LOAD_SRCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(mbedtls_static STATIC IMPORTED GLOBAL)
|
||||
add_library(mbedx509_static STATIC IMPORTED GLOBAL)
|
||||
add_library(zlib_static STATIC IMPORTED GLOBAL)
|
||||
add_library(mbedcrypto_static STATIC IMPORTED GLOBAL)
|
||||
|
||||
set_target_properties(zlib_static PROPERTIES
|
||||
IMPORTED_LOCATION ${CMAKE_CURRENT_LIST_DIR}/../third_party/prebuilt/zlib/lib/libz.a
|
||||
)
|
||||
set_target_properties(mbedtls_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedtls.a
|
||||
)
|
||||
set_target_properties(mbedx509_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedx509.a
|
||||
)
|
||||
set_target_properties(mbedcrypto_static PROPERTIES
|
||||
IMPORTED_LOCATION ${MBEDTLS_PREBUILT_DIR}/lib/libmbedcrypto.a
|
||||
)
|
||||
|
||||
if(ENABLE_RTC_MODE)
|
||||
target_sources(volc_conv_ai_a PRIVATE
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_SRCS}
|
||||
)
|
||||
message(STATUS "use high quality RTC mode")
|
||||
set(RTC_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/../src/transports/high_quality/third_party/volc_rtc_engine_lite/libs/macos)
|
||||
message(STATUS "RTC_LIB_DIR: ${RTC_LIB_DIR}")
|
||||
find_library(RTC_LIBRARIES NAMES VolcEngineRTCLite REQUIRED NO_CMAKE_FIND_ROOT_PATH PATHS ${RTC_LIB_DIR})
|
||||
|
||||
target_link_libraries(volc_conv_ai_a PRIVATE
|
||||
${RTC_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_WS_MODE)
|
||||
target_compile_definitions(volc_conv_ai_a PRIVATE ENABLE_WS_MODE)
|
||||
endif()
|
||||
|
||||
if(ENABLE_RTC_MODE)
|
||||
target_compile_definitions(volc_conv_ai_a PRIVATE ENABLE_RTC_MODE)
|
||||
endif()
|
||||
|
||||
if(ENABLE_CJSON)
|
||||
target_compile_definitions(volc_conv_ai_a PRIVATE ENABLE_CJSON)
|
||||
endif()
|
||||
|
||||
if(ENABLE_MBEDTLS)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC ${MBEDTLS_PREBUILT_DIR}/include)
|
||||
|
||||
target_link_libraries(volc_conv_ai_a PRIVATE
|
||||
mbedtls_static
|
||||
mbedx509_static
|
||||
mbedcrypto_static
|
||||
zlib_static
|
||||
)
|
||||
|
||||
target_compile_definitions(volc_conv_ai_a PRIVATE ENABLE_MBEDTLS)
|
||||
endif()
|
||||
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
${VOLC_CONV_AI_INCS}
|
||||
${VOLC_CONV_AI_PLATFORM_INCS}
|
||||
)
|
||||
|
||||
if(ENABLE_WS_MODE)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
${VOLC_CONV_AI_LOW_LOAD_INCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_RTC_MODE)
|
||||
target_include_directories(volc_conv_ai_a PUBLIC
|
||||
${VOLC_CONV_AI_HIGH_QUALITY_INCS}
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(volc_conv_ai_a PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
)
|
||||
Reference in New Issue
Block a user