214 lines
6.7 KiB
CMake
214 lines
6.7 KiB
CMake
###################### CONFIG #####################################
|
||
|
||
# 开启单元测试
|
||
set(CONFIG_IOT_TEST OFF)
|
||
|
||
# 开启示例编译
|
||
set(CONFIG_COMPILE_SAMPLE ON)
|
||
|
||
# 打开IOT DEBUG
|
||
set(CONFIG_IOT_DEBUG OFF)
|
||
|
||
# 代码抽取,ON表示根据配置抽取源码到ouput/sdk目录
|
||
set(CONFIG_EXTRACT_SRC OFF)
|
||
|
||
# 接入认证方式,使用证书认证:CERT;使用密钥认证:KEY
|
||
set(CONFIG_AUTH_MODE "KEY")
|
||
|
||
# 接入认证是否不使用TLS,证书方式必须选择使用TLS,密钥认证可选择不使用TLS
|
||
set(CONFIG_AUTH_WITH_NOTLS OFF)
|
||
|
||
# 是否打开代码中获取设备信息功能,OFF时将从device_info.json中读取设备信息
|
||
set(CONFIG_DEBUG_DEV_INFO_USED ON)
|
||
|
||
# 是否使能多线程
|
||
set(CONFIG_MULTITHREAD_ENABLED ON)
|
||
|
||
# 使用JSON格式上报日志 默认使用text格式
|
||
set(CONFIG_LOG_UPLOAD_TYPE_JSON ON)
|
||
|
||
# 使用AES加密上报日志
|
||
set(CONFIG_LOG_UPLOAD_AES_ENCRYPT_POST OFF)
|
||
|
||
# 是否使用动态注册功能
|
||
set(CONFIG_DEV_DYN_REG_ENABLED ON)
|
||
|
||
option(IOT_DEBUG "Enable IOT_DEBUG" ${CONFIG_IOT_DEBUG})
|
||
option(DEBUG_DEV_INFO_USED "Enable DEBUG_DEV_INFO_USED" ${CONFIG_DEBUG_DEV_INFO_USED})
|
||
option(AUTH_WITH_NO_TLS "Enable AUTH_WITH_NO_TLS" ${CONFIG_AUTH_WITH_NOTLS})
|
||
option(LOG_UPLOAD_TYPE_JSON "Enable LOG_UPLOAD_DEBUG" ${CONFIG_LOG_UPLOAD_TYPE_JSON})
|
||
option(LOG_UPLOAD_AES_ENCRYPT_POST "Log upload with AES encrypt" ${CONFIG_LOG_UPLOAD_AES_ENCRYPT_POST})
|
||
option(DEV_DYN_REG_ENABLED "Enable DEV_DYN_REG_ENABLED" ${CONFIG_DEV_DYN_REG_ENABLED})
|
||
option(MULTITHREAD_ENABLED "Enable AUTH_WITH_NO_TLS" ${CONFIG_MULTITHREAD_ENABLED})
|
||
|
||
if(${CONFIG_AUTH_MODE} STREQUAL "KEY")
|
||
option(AUTH_MODE_KEY "Enable AUTH_MODE_KEY" ON)
|
||
option(AUTH_MODE_CERT "Enable AUTH_MODE_CERT" OFF)
|
||
elseif(${CONFIG_AUTH_MODE} STREQUAL "CERT" AND ${CONFIG_AUTH_WITH_NOTLS} STREQUAL "OFF")
|
||
option(AUTH_MODE_KEY "Enable AUTH_MODE_KEY" OFF)
|
||
option(AUTH_MODE_CERT "Enable AUTH_MODE_CERT" ON)
|
||
else()
|
||
message(FATAL_ERROR "INVAILD AUTH_MODE:${FEATURE_AUTH_MODE} WITH AUTH_WITH_NO_TLS:${FEATURE_AUTH_WITH_NOTLS}!")
|
||
endif()
|
||
|
||
configure_file (
|
||
"${IOT_SDK_SOURCE_DIR}/config/settings/qcloud_iot_config.h.in"
|
||
"${IOT_SDK_SOURCE_DIR}/include/config/qcloud_iot_config.h"
|
||
@ONLY
|
||
)
|
||
|
||
# export include
|
||
include_directories(
|
||
${IOT_SDK_SOURCE_DIR}/include/
|
||
${IOT_SDK_SOURCE_DIR}/include/common
|
||
${IOT_SDK_SOURCE_DIR}/include/config
|
||
${IOT_SDK_SOURCE_DIR}/include/services/common
|
||
${IOT_SDK_SOURCE_DIR}/include/services/explorer
|
||
)
|
||
|
||
# set output path
|
||
set(LIBRARY_OUTPUT_PATH ${IOT_SDK_SOURCE_DIR}/output/libs)
|
||
set(EXECUTABLE_OUTPUT_PATH ${IOT_SDK_SOURCE_DIR}/output/bin)
|
||
|
||
# set link lib dir
|
||
link_directories(${LIBRARY_OUTPUT_PATH})
|
||
|
||
# set test src
|
||
if(${CONFIG_IOT_TEST} STREQUAL "ON")
|
||
set(src_test CACHE INTERNAL "")
|
||
set(inc_test CACHE INTERNAL "")
|
||
endif()
|
||
|
||
###################### PLATFORM MODULE #######################################
|
||
set(src_platform CACHE INTERNAL "")
|
||
set(inc_platform CACHE INTERNAL "")
|
||
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/platform)
|
||
|
||
# set include
|
||
include_directories(${inc_platform})
|
||
|
||
# add library libiot_platform.a
|
||
add_library(iot_platform STATIC ${src_platform})
|
||
|
||
###################### COMMON MODULE #######################################
|
||
set(src_common CACHE INTERNAL "")
|
||
set(inc_common CACHE INTERNAL "")
|
||
|
||
# mqtt packet
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/common/mqtt_packet)
|
||
|
||
# utils
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/common/utils)
|
||
|
||
# cryptology
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/common/cryptology)
|
||
|
||
# set include
|
||
include_directories(${inc_common})
|
||
|
||
# add library libiot_common.a
|
||
add_library(iot_common STATIC ${src_common})
|
||
|
||
###################### 3rd MODULE ####################################
|
||
|
||
# mbedtls
|
||
if(${CONFIG_AUTH_MODE} STREQUAL "KEY" )
|
||
include_directories(
|
||
${IOT_SDK_SOURCE_DIR}/3rd/mbedtls/mbedtls/include
|
||
${IOT_SDK_SOURCE_DIR}/3rd/mbedtls/port/inc
|
||
)
|
||
add_definitions("-DMBEDTLS_CONFIG_FILE=\"qcloud_iot_tls_psk_config.h\"")
|
||
endif()
|
||
|
||
if(${CONFIG_AUTH_WITH_NOTLS} STREQUAL "OFF")
|
||
# libmbedtls.a
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/3rd/mbedtls)
|
||
set(libsdk ${libsdk} mbedtls)
|
||
endif()
|
||
|
||
|
||
###################### SERVICE MODULE ####################################
|
||
set(src_services CACHE INTERNAL "")
|
||
set(inc_services CACHE INTERNAL "")
|
||
|
||
# mqtt client (must include except dynamic register)
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/mqtt_client)
|
||
|
||
# http client
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/http_client)
|
||
|
||
## MQTT ONLY
|
||
|
||
# 是否使能获取iot后台时间功能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/system)
|
||
|
||
# 是否使能OTA固件升级功能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/ota)
|
||
|
||
# gateway
|
||
add_subdirectory(${PROJECT_SOURCE_DIR}/services/common/gateway)
|
||
|
||
# 是否使能数据模板功能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/explorer/data_template)
|
||
|
||
# 是否系统服务
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/explorer/service_mqtt)
|
||
|
||
## HTTP ONLY
|
||
|
||
# 是否使能设备动态注册
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/dynreg)
|
||
|
||
# 是否使能COS下载功能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/cos)
|
||
|
||
# 是否使能HTTP请求腾讯云后台功能 如果开启了日志上报和动态注册 则必须要使能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/http_signed)
|
||
|
||
## HTTP & MQTT
|
||
|
||
# 是否使能日志上报云端功能
|
||
add_subdirectory(${IOT_SDK_SOURCE_DIR}/services/common/log_upload)
|
||
|
||
# set include
|
||
include_directories(${inc_services})
|
||
|
||
# add library libiot_services.a
|
||
add_library(iot_services STATIC ${src_services})
|
||
|
||
###################### UINT TEST ####################################
|
||
if(${CONFIG_IOT_TEST} STREQUAL "ON")
|
||
include_directories(${inc_test})
|
||
find_package(GTest REQUIRED)
|
||
add_executable(iot_hub_sdk_test ${src_test})
|
||
target_link_libraries(iot_hub_sdk_test ${GTEST_BOTH_LIBRARIES} ${libsdk})
|
||
setup_target_for_coverage_gcovr_html(
|
||
NAME sdk_test_coverage
|
||
EXECUTABLE iot_hub_sdk_test
|
||
DEPENDENCIES iot_hub_sdk_test
|
||
)
|
||
endif()
|
||
|
||
###################### EXTRACT ####################################
|
||
|
||
if(${CONFIG_EXTRACT_SRC} STREQUAL "ON")
|
||
file(COPY ${src_platform} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/src)
|
||
file(COPY ${inc_platform} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/inc/internal)
|
||
|
||
file(COPY ${src_common} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/src)
|
||
file(COPY ${inc_common} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/inc/internal)
|
||
|
||
file(COPY ${src_services} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/src)
|
||
file(COPY ${inc_services} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/inc/internal)
|
||
|
||
file(GLOB inc_export
|
||
${IOT_SDK_SOURCE_DIR}/include/*.h
|
||
${IOT_SDK_SOURCE_DIR}/include/common/*.h
|
||
${IOT_SDK_SOURCE_DIR}/include/config/*.h
|
||
${IOT_SDK_SOURCE_DIR}/include/services/common/*.h
|
||
${IOT_SDK_SOURCE_DIR}/include/services/explorer/*.h
|
||
)
|
||
file(COPY ${inc_export} DESTINATION ${IOT_SDK_SOURCE_DIR}/output/sdk/inc)
|
||
endif()
|