435 строки
19 KiB
CMake
435 строки
19 KiB
CMake
#Copyright (c) Microsoft. All rights reserved.
|
|
#Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
cmake_minimum_required (VERSION 3.5)
|
|
|
|
compileAsC99()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_PROV_MODULE")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_PROV_MODULE")
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/deps)
|
|
|
|
set(provisioning_libs)
|
|
set(provisioning_headers)
|
|
|
|
set(AUTH_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_auth_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_security_factory.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/iothub_auth_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_auth_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/iothub_security_factory.h
|
|
)
|
|
|
|
set(AUTH_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_auth_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_security_factory.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/iothub_auth_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/iothub_security_factory.c)
|
|
|
|
set(HSM_CLIENT_LIBRARY)
|
|
|
|
set(HSM_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_data.h)
|
|
set(HSM_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_data.c)
|
|
|
|
if (${hsm_type_custom})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_AUTH_TYPE_CUSTOM")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_AUTH_TYPE_CUSTOM")
|
|
|
|
set(HSM_CLIENT_LIBRARY ${CUSTOM_HSM_LIB})
|
|
elseif (${use_prov_client})
|
|
if (${run_e2e_tests})
|
|
# For e2e tests with riot, sastoken and tpm we need to run a custom HSM to handle testing
|
|
if (${hsm_type_x509})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_X509")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_X509")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_x509.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_x509.c)
|
|
endif()
|
|
if (${hsm_type_riot})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_RIOT")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_RIOT")
|
|
endif()
|
|
if (${hsm_type_sastoken})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_SAS_TOKEN")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_SAS_TOKEN")
|
|
endif()
|
|
if (${hsm_type_symm_key})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_SYMM_KEY")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_SYMM_KEY")
|
|
endif()
|
|
|
|
include_directories(${TPM_C_INC_FOLDER})
|
|
|
|
# Include the riot directories
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/DICE)
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/RIoT/Core)
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/RIoT/Core/RIoTCrypt/include)
|
|
|
|
# For e2e test a custom HSM is needed
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tests/common_prov_e2e/prov_hsm)
|
|
|
|
if (${hsm_type_riot})
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} msr_riot utpm prov_hsm)
|
|
else()
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} utpm prov_hsm)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} Tbs)
|
|
endif ()
|
|
else ()
|
|
if (${hsm_type_x509})
|
|
# Using x509
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_X509")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_X509")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_x509.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_x509.c)
|
|
endif()
|
|
|
|
if (${hsm_type_riot})
|
|
# Using RIoT
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_RIOT")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_RIOT")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_riot.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_riot.c)
|
|
|
|
# Include the riot directories
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/DICE)
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/RIoT/Core)
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/RIoT/Simulation/RIoT/Core/RIoTCrypt/include)
|
|
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} msr_riot)
|
|
endif()
|
|
|
|
if (${hsm_type_sastoken})
|
|
# Using Sas Token
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_SAS_TOKEN")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_SAS_TOKEN")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_tpm.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_tpm.c)
|
|
|
|
if (${use_tpm_simulator})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_EMULATOR_MODULE")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_EMULATOR_MODULE")
|
|
endif()
|
|
|
|
include_directories(${TPM_C_INC_FOLDER})
|
|
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} utpm)
|
|
if (WIN32)
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} Tbs)
|
|
endif ()
|
|
endif ()
|
|
|
|
if (${hsm_type_symm_key})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_SYMM_KEY")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_SYMM_KEY")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_key.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_key.c)
|
|
endif()
|
|
endif ()
|
|
endif ()
|
|
|
|
if (${hsm_type_edge_module})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHSM_TYPE_HTTP_EDGE")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHSM_TYPE_HTTP_EDGE")
|
|
|
|
set(HSM_CLIENT_H_FILES ${HSM_CLIENT_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_http_edge.h)
|
|
set(HSM_CLIENT_C_FILES ${HSM_CLIENT_C_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/adapters/hsm_client_http_edge.c)
|
|
|
|
set(HSM_CLIENT_LIBRARY ${HSM_CLIENT_LIBRARY} uhttp)
|
|
endif()
|
|
|
|
|
|
function(link_security_client whatExeIsBuilding)
|
|
target_link_libraries(${whatExeIsBuilding} prov_auth_client)
|
|
target_link_libraries(${whatExeIsBuilding} hsm_security_client)
|
|
endfunction()
|
|
|
|
if(${use_openssl})
|
|
add_definitions(-DUSE_OPENSSL)
|
|
endif()
|
|
|
|
set(PROV_DEVICE_CLIENT_SOURCE_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_device_client.c)
|
|
|
|
set(PROV_DEVICE_CLIENT_SOURCE_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_client_const.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_device_client.h)
|
|
|
|
set(PROV_DEVICE_LL_CLIENT_SOURCE_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_device_ll_client.c)
|
|
|
|
set(PROV_DEVICE_LL_CLEINT_SOURCE_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_client_const.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_device_ll_client.h)
|
|
|
|
set(DEV_AUTH_MODULES_CLIENT_INC_FOLDER "${CMAKE_CURRENT_LIST_DIR}/inc" "${CMAKE_CURRENT_LIST_DIR}/inc/internal" CACHE INTERNAL "this is what needs to be included if using iothub_client lib" FORCE)
|
|
|
|
include_directories(${DEV_AUTH_MODULES_CLIENT_INC_FOLDER})
|
|
include_directories(${SHARED_UTIL_INC_FOLDER})
|
|
if (NOT ${use_installed_dependencies})
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/../deps/parson)
|
|
endif()
|
|
include_directories(${UHTTP_C_INC_FOLDER})
|
|
include_directories(${IOTHUB_CLIENT_INC_FOLDER})
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/adapters)
|
|
|
|
if(${memory_trace})
|
|
add_definitions(-DGB_MEASURE_MEMORY_FOR_THIS -DGB_DEBUG_ALLOC)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
#windows needs this define
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
ENDIF(WIN32)
|
|
|
|
add_library(hsm_security_client ${HSM_CLIENT_C_FILES} ${HSM_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(hsm_security_client)
|
|
linkSharedUtil(hsm_security_client)
|
|
target_link_libraries(hsm_security_client ${HSM_CLIENT_LIBRARY})
|
|
set(provisioning_libs ${provisioning_libs} hsm_security_client)
|
|
set(provisioning_headers ${provisioning_headers} ${HSM_CLIENT_H_FILES})
|
|
|
|
add_library(prov_auth_client ${AUTH_CLIENT_C_FILES} ${AUTH_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_auth_client)
|
|
linkSharedUtil(prov_auth_client)
|
|
target_link_libraries(prov_auth_client hsm_security_client)
|
|
set(provisioning_libs ${provisioning_libs} prov_auth_client)
|
|
set(provisioning_headers ${provisioning_headers} ${AUTH_CLIENT_H_FILES})
|
|
|
|
if(${use_prov_client} OR (${use_prov_client_core} AND ${run_e2e_tests}))
|
|
add_library(prov_device_ll_client ${PROV_DEVICE_LL_CLIENT_SOURCE_C_FILES} ${PROV_DEVICE_LL_CLEINT_SOURCE_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_device_ll_client)
|
|
linkSharedUtil(prov_device_ll_client)
|
|
link_security_client(prov_device_ll_client)
|
|
set(provisioning_libs ${provisioning_libs} prov_device_ll_client)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_DEVICE_LL_CLEINT_SOURCE_H_FILES})
|
|
target_link_libraries(prov_device_ll_client parson)
|
|
|
|
add_library(prov_device_client ${PROV_DEVICE_CLIENT_SOURCE_C_FILES} ${PROV_DEVICE_CLIENT_SOURCE_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_device_client)
|
|
target_link_libraries(prov_device_client prov_device_ll_client)
|
|
set(provisioning_libs ${provisioning_libs} prov_device_client)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_DEVICE_CLIENT_SOURCE_H_FILES})
|
|
target_link_libraries(prov_device_client parson)
|
|
|
|
|
|
if (${build_as_dynamic})
|
|
add_library(prov_device_client_dll SHARED
|
|
${PROV_DEVICE_CLIENT_SOURCE_C_FILES}
|
|
${PROV_DEVICE_CLEINT_SOURCE_H_FILES}
|
|
${PROV_DEVICE_LL_CLIENT_SOURCE_C_FILES}
|
|
${PROV_DEVICE_LL_CLEINT_SOURCE_H_FILES}
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_device_client_dll.def
|
|
)
|
|
linkSharedUtil(prov_device_client_dll)
|
|
target_link_libraries(prov_device_client_dll prov_device_ll_client parson)
|
|
|
|
if(NOT WIN32)
|
|
set_target_properties(prov_device_client_dll PROPERTIES OUTPUT_NAME "prov_device_client")
|
|
endif()
|
|
set_target_properties(prov_device_client_dll PROPERTIES
|
|
OUTPUT_NAME "prov_device_client"
|
|
ARCHIVE_OUTPUT_NAME "prov_device_client_dll_import"
|
|
ENABLE_EXPORTS YES
|
|
PDB_NAME "prov_device_client_dll"
|
|
VERSION ${PROV_SDK_VERSION}
|
|
SOVERSION ${PROV_SDK_VERSION_MAJOR}
|
|
BUILD_WITH_INSTALL_RPATH TRUE
|
|
)
|
|
if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
|
|
target_link_libraries(prov_device_client_dll
|
|
"-Wl,--exclude-libs,libparson.a"
|
|
)
|
|
endif()
|
|
set(provisioning_libs ${provisioning_libs} prov_device_client_dll)
|
|
endif()
|
|
|
|
if (${use_http})
|
|
set(PROV_HTTP_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_private.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport_http_client.h)
|
|
set(PROV_HTTP_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_http_client.c)
|
|
|
|
# Provisioning http Transport Client library
|
|
add_library(prov_http_transport ${PROV_HTTP_CLIENT_C_FILES} ${PROV_HTTP_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_http_transport)
|
|
linkSharedUtil(prov_http_transport)
|
|
set(provisioning_libs ${provisioning_libs} prov_http_transport)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_HTTP_CLIENT_H_FILES})
|
|
|
|
target_link_libraries(prov_http_transport uhttp)
|
|
endif()
|
|
|
|
if (${use_amqp})
|
|
include_directories(${UAMQP_INCLUDES} ${UAMQP_INC_FOLDER})
|
|
|
|
set(PROV_AMQP_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport_amqp_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_amqp_common.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_private.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_sasl_tpm.h)
|
|
set(PROV_AMQP_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_amqp_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_amqp_common.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_sasl_tpm.c)
|
|
|
|
set(PROV_AMQP_WS_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport_amqp_ws_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_amqp_common.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_private.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_sasl_tpm.h)
|
|
set(PROV_AMQP_WS_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_amqp_ws_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_amqp_common.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_sasl_tpm.c)
|
|
|
|
add_library(prov_amqp_ws_transport ${PROV_AMQP_WS_CLIENT_C_FILES} ${PROV_AMQP_WS_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_amqp_ws_transport)
|
|
linkSharedUtil(prov_amqp_ws_transport)
|
|
target_link_libraries(prov_amqp_ws_transport uamqp)
|
|
set(provisioning_libs ${provisioning_libs} prov_amqp_ws_transport)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_AMQP_WS_CLIENT_H_FILES})
|
|
|
|
# Provisioning amqp Transport Client library
|
|
add_library(prov_amqp_transport ${PROV_AMQP_CLIENT_C_FILES} ${PROV_AMQP_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_amqp_transport)
|
|
linkSharedUtil(prov_amqp_transport)
|
|
target_link_libraries(prov_amqp_transport uamqp)
|
|
set(provisioning_libs ${provisioning_libs} prov_amqp_transport)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_AMQP_CLIENT_H_FILES})
|
|
endif()
|
|
|
|
if (${use_mqtt})
|
|
include_directories(${MQTT_INC_FOLDER})
|
|
|
|
set(PROV_MQTT_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport_mqtt_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_private.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_mqtt_common.h)
|
|
set(PROV_MQTT_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_mqtt_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_mqtt_common.c)
|
|
|
|
set(PROV_MQTT_WS_CLIENT_H_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/prov_transport_mqtt_ws_client.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_private.h
|
|
${CMAKE_CURRENT_LIST_DIR}/inc/azure_prov_client/internal/prov_transport_mqtt_common.h)
|
|
set(PROV_MQTT_WS_CLIENT_C_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_mqtt_ws_client.c
|
|
${CMAKE_CURRENT_LIST_DIR}/src/prov_transport_mqtt_common.c)
|
|
|
|
add_library(prov_mqtt_ws_transport ${PROV_MQTT_WS_CLIENT_C_FILES} ${PROV_MQTT_WS_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_mqtt_ws_transport)
|
|
linkSharedUtil(prov_mqtt_ws_transport)
|
|
target_link_libraries(prov_mqtt_ws_transport umqtt)
|
|
set(provisioning_libs ${provisioning_libs} prov_mqtt_ws_transport)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_MQTT_WS_CLIENT_H_FILES})
|
|
|
|
# Provisioning mqtt Transport Client library
|
|
add_library(prov_mqtt_transport ${PROV_MQTT_CLIENT_C_FILES} ${PROV_MQTT_CLIENT_H_FILES})
|
|
applyXcodeBuildFlagsIfNeeded(prov_mqtt_transport)
|
|
linkSharedUtil(prov_mqtt_transport)
|
|
target_link_libraries(prov_mqtt_transport umqtt)
|
|
set(provisioning_libs ${provisioning_libs} prov_mqtt_transport)
|
|
set(provisioning_headers ${provisioning_headers} ${PROV_MQTT_CLIENT_H_FILES})
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT IN_OPENWRT)
|
|
# Disable tests for OpenWRT
|
|
add_subdirectory(tests)
|
|
endif()
|
|
|
|
if (${use_prov_client} AND (NOT ${skip_samples}))
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/samples)
|
|
add_subdirectory(tools)
|
|
endif ()
|
|
|
|
if(${use_installed_dependencies})
|
|
|
|
# Install Provisioning libs
|
|
set(package_location "${CMAKE_INSTALL_LIBDIR}/cmake/azure_prov_sdk")
|
|
|
|
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
|
set(CMAKE_INSTALL_LIBDIR "lib")
|
|
endif()
|
|
|
|
install(TARGETS ${provisioning_libs} EXPORT azure_prov_sdksTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/azureiot
|
|
)
|
|
install(FILES ${provisioning_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/azureiot/azure_prov_client)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
|
|
VERSION ${PROV_SDK_VERSION}
|
|
COMPATIBILITY SameMajorVersion
|
|
)
|
|
|
|
configure_file("../configs/${PROJECT_NAME}Config.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake"
|
|
COPYONLY
|
|
)
|
|
|
|
install(EXPORT azure_prov_sdksTargets
|
|
FILE
|
|
"${PROJECT_NAME}Targets.cmake"
|
|
DESTINATION
|
|
${package_location}
|
|
)
|
|
|
|
install(
|
|
FILES
|
|
"../configs/${PROJECT_NAME}Config.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
|
|
DESTINATION
|
|
${package_location}
|
|
)
|
|
else()
|
|
# Install Provisioning libs
|
|
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
|
set(CMAKE_INSTALL_LIBDIR "lib")
|
|
endif()
|
|
|
|
install(FILES ${provisioning_headers}
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/azure_prov_client)
|
|
install(TARGETS ${provisioning_libs}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
endif()
|