CMakeLists.txt 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. idf_component_register(SRCS "esp-mqtt/mqtt_client.c"
  2. "esp-mqtt/lib/mqtt_msg.c"
  3. "esp-mqtt/lib/mqtt_outbox.c"
  4. "esp-mqtt/lib/platform_esp32_idf.c"
  5. INCLUDE_DIRS esp-mqtt/include
  6. PRIV_INCLUDE_DIRS "esp-mqtt/lib/include"
  7. )
  8. if(TEST_BUILD)
  9. message(STATUS "building MOCKS")
  10. idf_component_get_property(tcp_transport_dir tcp_transport COMPONENT_DIR)
  11. idf_component_get_property(esp_hw_support_dir esp_hw_support COMPONENT_DIR)
  12. idf_component_get_property(esp_event_dir esp_event COMPONENT_DIR)
  13. idf_component_get_property(log_dir log COMPONENT_DIR)
  14. idf_component_get_property(freertos_dir freertos COMPONENT_DIR)
  15. idf_component_get_property(nghttp_dir nghttp COMPONENT_DIR)
  16. idf_component_get_property(esp_wifi_dir esp_wifi COMPONENT_DIR)
  17. idf_component_get_property(esp_hw_support_dir esp_hw_support COMPONENT_DIR)
  18. idf_component_get_property(esp_tls_dir esp-tls COMPONENT_DIR)
  19. idf_component_get_property(esp_netif_dir esp_netif COMPONENT_DIR)
  20. idf_component_get_property(esp_common_dir esp_common COMPONENT_DIR)
  21. idf_component_get_property(esp_rom_dir esp_rom COMPONENT_DIR)
  22. idf_component_get_property(esp_system_dir esp_system COMPONENT_DIR)
  23. idf_component_get_property(mbedtls_dir mbedtls COMPONENT_DIR)
  24. idf_component_get_property(cmock_lib cmock COMPONENT_LIB)
  25. set(IDF_PATH $ENV{IDF_PATH})
  26. set(CMOCK_DIR "${IDF_PATH}/components/cmock/CMock")
  27. set(MOCK_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/mocks")
  28. set(ENV{UNITY_DIR} "$ENV{IDF_PATH}/components/cmock/CMock")
  29. file(MAKE_DIRECTORY ${MOCK_GEN_DIR})
  30. set(MOCK_OUTPUT
  31. "${MOCK_GEN_DIR}/Mockesp_transport.c" "${MOCK_GEN_DIR}/Mockesp_transport.h"
  32. "${MOCK_GEN_DIR}/Mockesp_transport_ssl.c" "${MOCK_GEN_DIR}/Mockesp_transport_ssl.h"
  33. "${MOCK_GEN_DIR}/Mockesp_transport_ws.c" "${MOCK_GEN_DIR}/Mockesp_transport_ws.h"
  34. "${MOCK_GEN_DIR}/Mockesp_transport_tcp.c" "${MOCK_GEN_DIR}/Mockesp_transport_tcp.h"
  35. "${MOCK_GEN_DIR}/Mockesp_event.c" "${MOCK_GEN_DIR}/Mockesp_event.h"
  36. "${MOCK_GEN_DIR}/Mockesp_mac.c" "${MOCK_GEN_DIR}/Mockesp_mac.h"
  37. "${MOCK_GEN_DIR}/Mockesp_random.c" "${MOCK_GEN_DIR}/Mockesp_random.h"
  38. "${MOCK_GEN_DIR}/Mockesp_system.c" "${MOCK_GEN_DIR}/Mockesp_system.h"
  39. "${MOCK_GEN_DIR}/Mockesp_tls.c" "${MOCK_GEN_DIR}/Mockesp_tls.h"
  40. "${MOCK_GEN_DIR}/Mockevent_groups.c" "${MOCK_GEN_DIR}/Mockevent_groups.h"
  41. "${MOCK_GEN_DIR}/Mockqueue.c" "${MOCK_GEN_DIR}/Mockqueue.h"
  42. "${MOCK_GEN_DIR}/Mocktask.c" "${MOCK_GEN_DIR}/Mocktask.h"
  43. "${MOCK_GEN_DIR}/Mockesp_log.c" "${MOCK_GEN_DIR}/Mockesp_log.h"
  44. "${MOCK_GEN_DIR}/Mockhttp_parser.c" "${MOCK_GEN_DIR}/Mockhttp_parser.h"
  45. )
  46. set(HEADERS_TO_MOCK
  47. ${tcp_transport_dir}/include/esp_transport_tcp.h
  48. ${tcp_transport_dir}/include/esp_transport_ws.h
  49. ${tcp_transport_dir}/include/esp_transport_ssl.h
  50. ${tcp_transport_dir}/include/esp_transport.h
  51. ${esp_event_dir}/include/esp_event.h
  52. ${esp_hw_support_dir}/include/esp_mac.h
  53. ${esp_hw_support_dir}/include/esp_random.h
  54. ${esp_system_dir}/include/esp_system.h
  55. ${esp_tls_dir}/esp_tls.h
  56. ${freertos_dir}/include/freertos/queue.h
  57. ${freertos_dir}/include/freertos/task.h
  58. ${freertos_dir}/include/freertos/event_groups.h
  59. ${log_dir}/include/esp_log.h
  60. ${nghttp_dir}/port/include/http_parser.h
  61. )
  62. set(srcs
  63. ${MOCK_GEN_DIR}/Mockesp_transport.c
  64. ${MOCK_GEN_DIR}/Mockesp_transport_ws.c
  65. ${MOCK_GEN_DIR}/Mockesp_transport_ssl.c
  66. ${MOCK_GEN_DIR}/Mockesp_transport_tcp.c
  67. ${MOCK_GEN_DIR}/Mockesp_transport_tcp.c
  68. ${MOCK_GEN_DIR}/Mockesp_event.c
  69. ${MOCK_GEN_DIR}/Mockesp_mac.c
  70. ${MOCK_GEN_DIR}/Mockesp_random.c
  71. ${MOCK_GEN_DIR}/Mockesp_system.c
  72. ${MOCK_GEN_DIR}/Mockesp_tls.c
  73. ${MOCK_GEN_DIR}/Mockesp_log.c
  74. ${MOCK_GEN_DIR}/Mockhttp_parser.c
  75. ${MOCK_GEN_DIR}/Mockevent_groups.c
  76. ${MOCK_GEN_DIR}/Mockqueue.c
  77. ${MOCK_GEN_DIR}/Mocktask.c
  78. )
  79. add_custom_command(
  80. OUTPUT ruby_found SYMBOLIC
  81. COMMAND "ruby" "-v"
  82. COMMENT "Try to find ruby. If this fails, you need to install ruby"
  83. )
  84. add_custom_command(
  85. OUTPUT ${MOCK_OUTPUT}
  86. DEPENDS ruby_found
  87. COMMAND ${CMAKE_COMMAND} -E env "UNITY_DIR=${IDF_PATH}/components/unity/unity"
  88. ruby
  89. ${CMOCK_DIR}/lib/cmock.rb
  90. -o${CMAKE_CURRENT_SOURCE_DIR}/host_test/mocks/config.yaml
  91. ${HEADERS_TO_MOCK}
  92. )
  93. add_library(mocks ${srcs})
  94. target_include_directories(mocks PUBLIC
  95. ${CMAKE_CURRENT_SOURCE_DIR}/host_test/mocks/include
  96. ${tcp_transport_dir}/include
  97. ${esp_tls_dir}
  98. ${freertos_dir}/include
  99. ${esp_event_dir}/include
  100. ${esp_system_dir}/include
  101. ${esp_common_dir}/include
  102. ${esp_wifi_dir}/include
  103. ${esp_hw_support_dir}/include
  104. ${esp_netif_dir}/include
  105. ${log_dir}/include
  106. ${esp_rom_dir}/include
  107. ${mbedtls_dir}/port/include
  108. ${nghttp_dir}/port/include
  109. ${mbedtls_dir}/mbedtls/include
  110. ${freertos_dir}/include/freertos
  111. esp-mqtt/lib/include
  112. ${MOCK_GEN_DIR}
  113. )
  114. target_link_libraries(mocks PUBLIC ${cmock_lib})
  115. target_compile_definitions(mocks PUBLIC
  116. CONFIG_LOG_MAXIMUM_LEVEL=5
  117. CONFIG_LOG_DEFAULT_LEVEL=3
  118. CONFIG_ESP_TLS_USING_MBEDTLS
  119. CONFIG_ESP_TLS_SERVER
  120. CONFIG_LOG_TIMESTAMP_SOURCE_RTOS)
  121. target_link_options(${COMPONENT_LIB} INTERFACE -fsanitize=address)
  122. target_link_libraries(${COMPONENT_LIB} PUBLIC mocks)
  123. else()
  124. idf_component_get_property(nghttp_lib nghttp COMPONENT_LIB)
  125. idf_component_get_property(tcp_transport_lib tcp_transport COMPONENT_LIB)
  126. target_link_libraries(${COMPONENT_LIB} PUBLIC ${nghttp_lib} ${tcp_transport_lib})
  127. endif()