summaryrefslogtreecommitdiff
path: root/test/cmake/azure_iot/CMakeLists.txt
blob: 415f42a21ad5fe2e710c793b5412609deed54775 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)

if(NOT DEFINED THREADX_ARCH)
  if(WIN32)
    set(CMAKE_TOOLCHAIN_FILE
        "configs/win32.cmake"
        CACHE STRING "")
  elseif(UNIX)
    set(CMAKE_TOOLCHAIN_FILE
        "configs/linux.cmake"
        CACHE STRING "")
  else()
    message(FATAL_ERROR "Error: Architecture not supported")
  endif()
endif()

# Project
project(AzureIoTMiddleware LANGUAGES C ASM)

# Set build configurations
if(NOT WIN32)
set(BUILD_CONFIGURATIONS
    default_build_coverage disable_precondition_build disable_security_module_build)
set(CMAKE_CONFIGURATION_TYPES
    ${BUILD_CONFIGURATIONS}
    CACHE STRING "list of supported configuration types" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
                                              ${CMAKE_CONFIGURATION_TYPES})
list(GET CMAKE_CONFIGURATION_TYPES 0 BUILD_TYPE)
if((NOT CMAKE_BUILD_TYPE) OR (NOT ("${CMAKE_BUILD_TYPE}" IN_LIST
                                    CMAKE_CONFIGURATION_TYPES)))
  set(CMAKE_BUILD_TYPE
      "${BUILD_TYPE}"
      CACHE STRING "Build Type of the project" FORCE)
endif()
endif()

message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")

set(default_build_coverage)
set(disable_precondition_build -DAZ_NO_PRECONDITION_CHECKING -DAZ_NO_LOGGING -DNX_DISABLE_IPV6)

# Set property for folder
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(DISABLE_TEST
    OFF
    CACHE BOOL "Disable test projects (default is OFF)")

# CFLAGS
if(WIN32)
  set(ADDITIONAL_C_FLAGS $ENV{CFLAGS} "/MP -DWIN32 -D_CRT_SECURE_NO_WARNINGS")
else()
  if(THREADX_ARCH STREQUAL "linux")
    set(ADDITIONAL_C_FLAGS
        "$ENV{CFLAGS} -O0 -g3 -ggdb -m32 -gdwarf-2 -fdiagnostics-color -fprofile-arcs -ftest-coverage -Wno-error=misleading-indentation")
  endif()
  set(ADDITIONAL_C_FLAGS_AZURE_SERVICES
      "-std=c99 -Werror -Wall -Wextra -pedantic -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wunused -Wuninitialized -Wmissing-declarations -Wconversion -Wpointer-arith -Wshadow -Wlogical-op -Wfloat-equal -fprofile-arcs -ftest-coverage -Wjump-misses-init -Wno-error=misleading-indentation"
  )
endif()

# Add definitions
add_definitions(
  ${ADDITIONAL_C_FLAGS}
  ${DRIVER_FLAG}
  -DNX_PCAP_SOURCE_NAME=\"${PCAP_NAME}\"
  -DNX_ENABLE_EXTENDED_NOTIFY_SUPPORT
  -DNX_SECURE_ENABLE
  -DNX_DNS_CLIENT_USER_CREATE_PACKET_POOL
  -DNX_DNS_CLIENT_CLEAR_QUEUE
  -DNXD_MQTT_CLOUD_ENABLE
  -DNX_SNTP_CLIENT_MAX_ROOT_DISPERSION=0
  -DNX_SNTP_CLIENT_MIN_SERVER_STRATUM=3
  -DNX_ENABLE_IP_PACKET_FILTER
  -DNX_SECURE_TLS_DISABLE_TLS_1_1
  -DNXD_MQTT_PING_TIMEOUT_DELAY=500
  -DNXD_MQTT_SOCKET_TIMEOUT=0
  -DNXD_MQTT_OVER_WEBSOCKET
  -DNX_AZURE_IOT_ADU_AGENT_PROXY_UPDATE_COUNT=1
  ${${CMAKE_BUILD_TYPE}})

# Include azure rtos cmake
include(configs/azure_rtos_src.cmake)

# Link libraries
if(THREADX_ARCH STREQUAL "linux")
  add_link_options(-m32 -fprofile-arcs -ftest-coverage)
endif()

if((NOT DISABLE_TEST) AND UNIX)
  # Include tests cmake
  include(configs/azure_rtos_tests.cmake)
endif()