1# Macro utility to clone the CMock submodule. 2macro( clone_cmock ) 3 find_package( Git REQUIRED ) 4 message( "Cloning submodule CMock." ) 5 execute_process( COMMAND rm -rf ${CMOCK_DIR} 6 COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive ${CMOCK_DIR} 7 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 8 RESULT_VARIABLE CMOCK_CLONE_RESULT ) 9 10 if( NOT ${CMOCK_CLONE_RESULT} STREQUAL "0" ) 11 message( FATAL_ERROR "Failed to clone CMock submodule." ) 12 endif() 13endmacro() 14 15# Macro utility to add library targets for Unity and CMock to build configuration. 16macro( add_cmock_targets ) 17 # Build Configuration for CMock and Unity libraries. 18 list( APPEND CMOCK_INCLUDE_DIRS 19 "${CMOCK_DIR}/vendor/unity/src/" 20 "${CMOCK_DIR}/vendor/unity/extras/fixture/src" 21 "${CMOCK_DIR}/vendor/unity/extras/memory/src" 22 "${CMOCK_DIR}/src" 23 ) 24 25 add_library(cmock STATIC 26 "${CMOCK_DIR}/src/cmock.c" 27 ) 28 29 set_target_properties(cmock PROPERTIES 30 ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib 31 POSITION_INDEPENDENT_CODE ON 32 COMPILE_FLAGS "-Og" 33 ) 34 35 target_include_directories(cmock PUBLIC 36 ${CMOCK_DIR}/src 37 ${CMOCK_DIR}/vendor/unity/src/ 38 ${CMOCK_DIR}/examples 39 ${CMOCK_INCLUDE_DIRS} 40 ) 41 42 add_library(unity STATIC 43 "${CMOCK_DIR}/vendor/unity/src/unity.c" 44 "${CMOCK_DIR}/vendor/unity/extras/fixture/src/unity_fixture.c" 45 "${CMOCK_DIR}/vendor/unity/extras/memory/src/unity_memory.c" 46 ) 47 48 set_target_properties(unity PROPERTIES 49 ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib 50 POSITION_INDEPENDENT_CODE ON 51 ) 52 53 target_include_directories(unity PUBLIC 54 ${CMOCK_INCLUDE_DIRS} 55 ) 56 57 target_link_libraries(cmock unity) 58endmacro() 59