@@ -32,6 +32,52 @@ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "C51")
3232 target_link_libraries (new_test_t2 zipgateway-lib )
3333 endif ()
3434 add_test (test_transport_service2 new_test_t2 )
35+
36+ set (CMOCK_RB "" CACHE FILEPATH "Path to CMock lib/cmock.rb used for local mock regeneration" )
37+ set (CMOCK_VERSION "2.4.6" CACHE STRING "CMock version used for regeneration" )
38+ set (CMOCK_ARCHIVE "${CMAKE_BINARY_DIR} /tools/cmock-v${CMOCK_VERSION} .tar.gz" )
39+ set (CMOCK_ARCHIVE_SHA256 "7b4b0a1ca9ecd4d461e3a442b4b2c98c37e451d8966e636483142fdf49667ed7"
40+ CACHE STRING "Expected SHA256 for CMock archive" )
41+ set (CMOCK_ROOT "${CMAKE_BINARY_DIR} /tools/CMock-${CMOCK_VERSION} " )
42+ set (CMOCK_RB_DEFAULT "${CMOCK_ROOT} /lib/cmock.rb" )
43+ if (CMOCK_RB STREQUAL "" )
44+ if (NOT EXISTS "${CMOCK_RB_DEFAULT} " )
45+ file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR} /tools" )
46+ if (NOT EXISTS "${CMOCK_ARCHIVE} " )
47+ message (STATUS "Downloading CMock v${CMOCK_VERSION} for mock regeneration" )
48+ file (DOWNLOAD
49+ "https://github.com/ThrowTheSwitch/CMock/archive/refs/tags/v${CMOCK_VERSION} .tar.gz"
50+ "${CMOCK_ARCHIVE} "
51+ SHOW_PROGRESS
52+ STATUS CMOCK_DOWNLOAD_STATUS
53+ TLS_VERIFY ON )
54+ list (GET CMOCK_DOWNLOAD_STATUS 0 CMOCK_DOWNLOAD_CODE)
55+ list (GET CMOCK_DOWNLOAD_STATUS 1 CMOCK_DOWNLOAD_MESSAGE)
56+ if (NOT CMOCK_DOWNLOAD_CODE EQUAL 0)
57+ message (FATAL_ERROR "Failed to download CMock archive: ${CMOCK_DOWNLOAD_MESSAGE} " )
58+ endif ()
59+ endif ()
60+
61+ file (SHA256 "${CMOCK_ARCHIVE} " CMOCK_ARCHIVE_SHA256_ACTUAL )
62+ if (NOT CMOCK_ARCHIVE_SHA256_ACTUAL STREQUAL CMOCK_ARCHIVE_SHA256)
63+ message (FATAL_ERROR
64+ "CMock archive SHA256 mismatch. Expected ${CMOCK_ARCHIVE_SHA256} , got ${CMOCK_ARCHIVE_SHA256_ACTUAL} " )
65+ endif ()
66+
67+ execute_process (
68+ COMMAND ${CMAKE_COMMAND} -E tar xzf "${CMOCK_ARCHIVE} "
69+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /tools"
70+ RESULT_VARIABLE CMOCK_EXTRACT_RESULT )
71+ if (NOT CMOCK_EXTRACT_RESULT EQUAL 0)
72+ message (FATAL_ERROR "Failed to extract ${CMOCK_ARCHIVE} " )
73+ endif ()
74+
75+ file (MAKE_DIRECTORY "${CMOCK_ROOT} /vendor/unity/auto" )
76+ file (COPY "${CMAKE_SOURCE_DIR} /libs2/TestFramework/unity/auto/type_sanitizer.rb"
77+ DESTINATION "${CMOCK_ROOT} /vendor/unity/auto" )
78+ endif ()
79+ set (CMOCK_RB "${CMOCK_RB_DEFAULT} " CACHE FILEPATH "Path to CMock lib/cmock.rb used by regen_mock_zw_transport_api" FORCE )
80+ endif ()
3581endif ()
3682
3783add_definitions ( -DRANDLEN=64 )
0 commit comments