From dd3f43ca2d7568d8ead10f46a79c9372d925906d Mon Sep 17 00:00:00 2001 From: Jakob Hasse Date: Fri, 13 Aug 2021 14:31:44 +0800 Subject: [PATCH] [build system]: add ruby check before mocking --- tools/cmake/component.cmake | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/cmake/component.cmake b/tools/cmake/component.cmake index 870d852b7e..1a6aa0a921 100644 --- a/tools/cmake/component.cmake +++ b/tools/cmake/component.cmake @@ -556,13 +556,25 @@ function(idf_component_mock) INCLUDE_DIRS ${__INCLUDE_DIRS} REQUIRES ${__REQUIRES}) - execute_process(COMMAND ${CMAKE_COMMAND} -E env "UNITY_DIR=${IDF_PATH}/components/unity/unity" + add_custom_command( + OUTPUT ruby_found SYMBOLIC + COMMAND "ruby" "-v" + COMMENT "Try to find ruby. If this fails, you need to install ruby" + ) + + # This command builds the mocks. + # First, environment variable UNITY_DIR is set. This is necessary to prevent unity from looking in its own submodule + # which doesn't work in our CI yet... + # The rest is a straight forward call to cmock.rb, consult cmock's documentation for more information. + add_custom_command( + OUTPUT ${MOCK_GENERATED_SRCS} ${MOCK_GENERATED_HEADERS} + DEPENDS ruby_found + COMMAND ${CMAKE_COMMAND} -E env "UNITY_DIR=${IDF_PATH}/components/unity/unity" ruby ${CMOCK_DIR}/lib/cmock.rb -o${CMAKE_CURRENT_SOURCE_DIR}/mock/mock_config.yaml ${__MOCK_HEADER_FILES} - WORKING_DIRECTORY ${MOCK_GEN_DIR} - RESULT_VARIABLE cmock_result) + ) endfunction() #