You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeRTOS/FreeRTOS-Plus/Test/FreeRTOS-Plus-TCP/Unit/Makefile

111 lines
4.0 KiB
Makefile

#CC := /usr/local/bin/gcc
#GCOV := /usr/local/bin/gcov
EXECUTABLE=cmock_test
ROOT_DIR ?= $(shell pwd)
CONFIGURATION_DIR ?= ${ROOT_DIR}/tools/configuration
CMOCK_DIR ?= ${ROOT_DIR}/../CMock
CMOCK_SRC_DIR ?= ${CMOCK_DIR}/src
CMOCK_INCLUDE_DIR ?= ${CMOCK_SRC_DIR}
CMOCK_LIB_DIR ?= ${CMOCK_DIR}/lib
UNITY_DIR ?= ${CMOCK_DIR}/vendor/unity
UNITY_SRC_DIR ?= ${UNITY_DIR}/src
UNITY_INCLUDE_DIR ?= ${UNITY_SRC_DIR}
UNITY_BIN_DIR ?= ${UNITY_DIR}/auto
UNITY_FIXTURE_DIR ?= ${UNITY_DIR}/extras/fixture/src
UNITY_MEMORY_DIR ?= ${UNITY_DIR}/extras/memory/src
BUILD_DIR ?= ${ROOT_DIR}/build
LIB_DIR ?= ${ROOT_DIR}/build/lib
BIN_DIR ?= ${ROOT_DIR}/build/bin
MOCKS_DIR ?= ${ROOT_DIR}/build/mocks
GEN_DIR ?= ${ROOT_DIR}/build/generated
SRC_DIR ?= ${ROOT_DIR}/../../Source/FreeRTOS-Plus-TCP/test
EXAMPLE_DIR ?= ${ROOT_DIR}/tests/example
CONFIG_FILES_DIR ?= $(ROOT_DIR)/Config_files
TEST_DIR ?= test
KERNEL_INCLUDES ?= ${ROOT_DIR}/../../../FreeRTOS/Source/include
# ${FREE_RTOS_INCLUDE_DIR}/FreeRTOS_IP.h -I ${FREE_RTOS_INCLUDE_DIR}
INCLUDE_DIR ?= -I ${ROOT_DIR} -I ${ROOT_DIR}/tests/example -I $(CONFIG_FILES_DIR) -I ${CMOCK_INCLUDE_DIR} -I ${UNITY_INCLUDE_DIR} -I ${MOCKS_DIR} -I ${UNITY_FIXTURE_DIR} -I ${SRC_DIR} -I ${UNITY_MEMORY_DIR}
MOCK_HEADERS ?= ${ROOT_DIR}/tests/example/some_value.h
CODE_COVERAGE ?= -fprofile-arcs -ftest-coverage -fprofile-generate
.PHONY: all clean directories mocks coverage run
all: ${LIB_DIR}/libcmock.so ${LIB_DIR}/libunity.so directories mocks ${BIN_DIR}/${EXECUTABLE}
directories:
mkdir -p ${BUILD_DIR}
mkdir -p ${MOCKS_DIR}
mkdir -p ${LIB_DIR}
mkdir -p ${BIN_DIR}
mkdir -p ${GEN_DIR}
mocks: directories
cd ${BUILD_DIR} && ruby ${CMOCK_LIB_DIR}/cmock.rb -o${CONFIGURATION_DIR}/project.yml ${MOCK_HEADERS}
@echo "\n"
${LIB_DIR}/libcmock.so: ${CMOCK_SRC_DIR}/cmock.c ${CMOCK_SRC_DIR}/cmock.h Makefile ${LIB_DIR}/libunity.so
${CC} -o $@ -shared -fPIC $< ${INCLUDE_DIR}
@echo "\n"
${LIB_DIR}/libunity.so: ${UNITY_SRC_DIR}/unity.c ${CMOCK_SRC_DIR}/cmock.h Makefile directories
${CC} -o $@ -shared -fPIC $< -I ${UNITY_INCLUDE_DIR}
@echo "\n"
#=============================================================================================
#============== LIST ALL THE HEADERS YOU WANT TO MOCK IN SIMILAR MANNER =====================
${LIB_DIR}/mock_some_value.o: ${MOCKS_DIR}/mock_some_value.c mocks Makefile
${CC} -c $< -o $@ ${INCLUDE_DIR} -fPIC
COMMON_OBJECTS ?= ${LIB_DIR}/mock_some_value.o
#=============================================================================================
#======================== LIST ALL THE TEST SOURCE FILES HERE ================================
TEST_FILES ?= ${EXAMPLE_DIR}/hello_world_test.c
#=============================================================================================
#===================== LIST ALL THE SOURCE FILES UNDER TEST HERE =============================
SOURCE_FILES ?= ${EXAMPLE_DIR}/hello_world.c
#---------------------------------------------------------------------------------------------
#=============================================================================================
${LIB_DIR}/libcommon.so: ${COMMON_OBJECTS}
${CC} -o $@ -shared -fPIC $+ ${INCLUDE_DIR} ${CODE_COVERAGE} -lgcov
${GEN_DIR}/${EXECUTABLE}_test_runner.c: mocks Makefile ${LIB_DIR}/libunity.so ${LIB_DIR}/libcmock.so
ruby ${UNITY_BIN_DIR}/generate_test_runner.rb ${CONFIGURATION_DIR}/project.yml ${ROOT_DIR}/tests/example/hello_world_test.c $@
@echo "\n"
${BIN_DIR}/${EXECUTABLE}: ${GEN_DIR}/${EXECUTABLE}_test_runner.c ${TEST_FILES} ${SOURCE_FILES} ${LIB_DIR}/libcommon.so
${CC} --coverage -o $@ $+ ${INCLUDE_DIR} -L ${LIB_DIR} -Wl,-rpath,${LIB_DIR} -lunity -lcmock -lcommon
@echo "\n"
clean:
@rm -rf build
@rm -f *.gcda *.gcno
@echo "Cleaned...\n"
run: ${BIN_DIR}/${EXECUTABLE}
${BIN_DIR}/${EXECUTABLE}
coverage: run
lcov --base-directory . --directory . -c --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 -o build/cmock_test.info
genhtml build/cmock_test.info --branch-coverage --output-directory build/coverage_html