CMakeLists.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. ########################################################################
  2. # prevent in-tree builds
  3. ########################################################################
  4. if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
  5. message(FATAL_ERROR "not allowded in-tree build")
  6. endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
  7. ########################################################################
  8. # project setup
  9. ########################################################################
  10. cmake_minimum_required(VERSION 2.8)
  11. project(iotx-sdk-c)
  12. list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")
  13. include(iotx-sdk-version)
  14. ########################################################################
  15. # options
  16. ########################################################################
  17. option(FEATURE_GIT_CLONE_BEFORE_BUILD "git clone repos in packages folder when cmake configs" OFF)
  18. option(FEATURE_MQTT_COMM_ENABLED "MQTT communication enabled or not" ON)
  19. option(FEATURE_MQTT_DIRECT "MQTT direct connection enabled or not" ON)
  20. option(FEATURE_MQTT_DIRECT_NOTLS "MQTT direct connection w/o tls enabled or not" OFF)
  21. option(FEATURE_COAP_COMM_ENABLED "coap communication enabled or not" ON)
  22. option(FEATURE_HTTP_COMM_ENABLED "HTTP communication enabled or not" ON)
  23. option(FEATURE_MQTT_SHADOW "MQTT shadow enabled or not" ${FEATURE_MQTT_COMM_ENABLED})
  24. option(FEATURE_COAP_DTLS_SUPPORT "coap w/ dtls support or not" ${FEATURE_COAP_COMM_ENABLED})
  25. option(FEATURE_SUBDEVICE_ENABLED "subdev enabled or not" OFF)
  26. option(FEATURE_CLOUD_CONN_ENABLED "cloud connection enabled or not" OFF)
  27. option(FEATURE_CMP_ENABLED "cmp enabled or not" ON)
  28. option(FEATURE_DM_ENABLED "dm & linkkit enabled or not" ON)
  29. option(FEATURE_SERVICE_OTA_ENABLED "ota enabled or not" ON)
  30. option(FEATURE_SERVICE_COTA_ENABLED "config ota enabled or not" OFF)
  31. option(FEATURE_SUPPORT_PRODUCT_SECRET "support via product_secret get device_secret" OFF)
  32. #option(FEATURE_OTA_FETCH_CHANNEL "specify ota fetch channel" ON)HTTP
  33. #option(FEATURE_OTA_SIGNAL_CHANNEL "specify ota signal channel" ON)MQTT
  34. set(GCC_ARCH native CACHE STRING "GCC compile for specific architecture.")
  35. ########################################################################
  36. # Compiler specific setup
  37. ########################################################################
  38. add_definitions(-DOTA_SIGNAL_CHANNEL=1)
  39. add_definitions(-DFORCE_SSL_VERIFY)
  40. add_definitions(-DUSING_UTILS_JSON)
  41. add_definitions(-DLITE_THING_MODEL)
  42. if(FEATURE_MQTT_DIRECT)
  43. add_definitions(-DMQTT_DIRECT)
  44. endif(FEATURE_MQTT_DIRECT)
  45. add_definitions(-DUSING_SHA1_IN_HMAC)
  46. if(FEATURE_MQTT_COMM_ENABLED)
  47. add_definitions(-DMQTT_COMM_ENABLED)
  48. endif(FEATURE_MQTT_COMM_ENABLED)
  49. if(FEATURE_SUBDEVICE_ENABLED)
  50. add_definitions(-DSUBDEVICE_ENABLED)
  51. endif(FEATURE_SUBDEVICE_ENABLED)
  52. if(FEATURE_CMP_ENABLED)
  53. add_definitions(-DCMP_ENABLED)
  54. endif(FEATURE_CMP_ENABLED)
  55. add_definitions(-DCMP_SUPPORT_TOPIC_DISPATCH)
  56. if(FEATURE_DM_ENABLED)
  57. add_definitions(-DDM_ENABLED)
  58. add_definitions(-DDEVICEINFO_ENABLED)
  59. endif(FEATURE_DM_ENABLED)
  60. if(FEATURE_SERVICE_OTA_ENABLED)
  61. add_definitions(-DSERVICE_OTA_ENABLED)
  62. if(FEATURE_SERVICE_COTA_ENABLED)
  63. add_definitions(-DSERVICE_COTA_ENABLED)
  64. endif(FEATURE_SERVICE_COTA_ENABLED)
  65. endif(FEATURE_SERVICE_OTA_ENABLED)
  66. if(FEATURE_SUPPORT_PRODUCT_SECRET)
  67. add_definitions(-DSUPPORT_PRODUCT_SECRET)
  68. endif(FEATURE_SUPPORT_PRODUCT_SECRET)
  69. add_definitions(-DIOTX_WITHOUT_ITLS)
  70. add_definitions(-DIOTX_NET_INIT_WITH_PK_EXT)
  71. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${GCC_ARCH} -Wall -Wno-comment -Wno-write-strings -Wno-format-extra-args -Winline -Wno-unused-result -Wno-format")
  72. ########################################################################
  73. # add -fPIC property to all targets
  74. ########################################################################
  75. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  76. ########################################################################
  77. # print project summary
  78. ########################################################################
  79. message(STATUS "---------------------------------------------")
  80. message(STATUS "project name:\t" ${PROJECT_NAME})
  81. message(STATUS "source dir:\t" ${PROJECT_SOURCE_DIR})
  82. message(STATUS "binary dir:\t" ${PROJECT_BINARY_DIR})
  83. message(STATUS "system processor:\t" ${CMAKE_SYSTEM_PROCESSOR})
  84. message(STATUS "c compiler:\t" ${CMAKE_C_COMPILER})
  85. message(STATUS "system platform:\t" ${CMAKE_SYSTEM})
  86. message(STATUS "c compiler options:\t" ${CMAKE_C_FLAGS})
  87. if(WIN32)
  88. message(STATUS "windows compiling...")
  89. add_definitions(-D_PLATFORM_IS_WINDOWS_)
  90. else(WIN32)
  91. message(STATUS "linux compiling...")
  92. add_definitions( -D_PLATFORM_IS_LINUX_)
  93. endif(WIN32)
  94. message(STATUS "iotx sdk version:\t" ${iotx_sdk_version})
  95. message(STATUS "---------------------------------------------")
  96. ########################################################################
  97. # git clone integrated repos
  98. ########################################################################
  99. if(FEATURE_GIT_CLONE_BEFORE_BUILD)
  100. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/LITE-log)
  101. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/mbedtls-in-iotkit)
  102. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/iotkit-system)
  103. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/Link-MQTT)
  104. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/Link-OTA)
  105. file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/src/packages/Link-CMP)
  106. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/LITE-log.git ${PROJECT_SOURCE_DIR}/src/packages/LITE-log)
  107. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/mbedtls-in-iotkit.git ${PROJECT_SOURCE_DIR}/src/packages/mbedtls-in-iotkit)
  108. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/iotkit-system.git ${PROJECT_SOURCE_DIR}/src/packages/iotkit-system)
  109. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/Link-MQTT.git ${PROJECT_SOURCE_DIR}/src/packages/Link-MQTT)
  110. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/Link-OTA.git ${PROJECT_SOURCE_DIR}/src/packages/Link-OTA)
  111. execute_process(COMMAND git clone ${PROJECT_SOURCE_DIR}/src/packages/Link-CMP.git ${PROJECT_SOURCE_DIR}/src/packages/Link-CMP)
  112. endif(FEATURE_GIT_CLONE_BEFORE_BUILD)
  113. include_directories(${PROJECT_SOURCE_DIR}/src/sdk-impl)
  114. include_directories(${PROJECT_SOURCE_DIR}/src/sdk-impl/imports)
  115. include_directories(${PROJECT_SOURCE_DIR}/src/sdk-impl/exports)
  116. include_directories(${PROJECT_SOURCE_DIR}/src/packages/mbedtls-in-iotkit/include)
  117. include_directories(${PROJECT_SOURCE_DIR}/src/packages/LITE-log)
  118. include_directories(${PROJECT_SOURCE_DIR}/src/packages/LITE-utils)
  119. include_directories(${PROJECT_SOURCE_DIR}/src/packages/Link-MQTT)
  120. include_directories(${PROJECT_SOURCE_DIR}/src/packages/Link-OTA)
  121. include_directories(${PROJECT_SOURCE_DIR}/src/packages/Link-CMP/inc)
  122. include_directories(${PROJECT_SOURCE_DIR}/src/packages/iot-coap-c)
  123. include_directories(${PROJECT_SOURCE_DIR}/src/packages/iotkit-system)
  124. include_directories(${PROJECT_SOURCE_DIR}/src/packages/iot-coap-c)
  125. include_directories(${PROJECT_SOURCE_DIR}/src/utils/digest)
  126. include_directories(${PROJECT_SOURCE_DIR}/src/utils/misc)
  127. include_directories(${PROJECT_SOURCE_DIR}/src/tfs)
  128. if(FEATURE_SUBDEVICE_ENABLED)
  129. include_directories(${PROJECT_SOURCE_DIR}/src/subdev)
  130. endif(FEATURE_SUBDEVICE_ENABLED)
  131. if(FEATURE_DM_ENABLED)
  132. include_directories(${PROJECT_SOURCE_DIR}/src/dm/include)
  133. endif(FEATURE_DM_ENABLED)
  134. include_directories(${PROJECT_SOURCE_DIR}/src/import/linux/include)
  135. ########################################################################
  136. # Add the subdirectories
  137. ########################################################################
  138. add_subdirectory(src)
  139. add_subdirectory(sample)