diff --git a/FreeRTOS/Test/CMock/testdir.mk b/FreeRTOS/Test/CMock/testdir.mk index e832de60b8..5ebc8fdcbe 100644 --- a/FreeRTOS/Test/CMock/testdir.mk +++ b/FreeRTOS/Test/CMock/testdir.mk @@ -54,6 +54,8 @@ DEPS_OBJ_LIST := $(addprefix $(SCRATCH_DIR)/dep_,$(PROJECT_DEPS_SRC:.c=.o)) EXECS := $(addprefix $(EXEC_PREFIX)_,$(SUITE_UT_SRC:.c=)) EXEC_LIST := $(addprefix $(BIN_DIR)/,$(EXECS)) LCOV_LIST := $(addsuffix .info,$(addprefix $(SCRATCH_DIR)/,$(SUITE_UT_SRC:.c=))) +COVINFO_INITIAL := $(SCRATCH_DIR)/$(EXEC_PREFIX)_initial.info +COVINFO_COMBINE := $(SCRATCH_DIR)/$(EXEC_PREFIX)_combined.info COVINFO := $(abspath $(SCRATCH_DIR)/..)/$(EXEC_PREFIX).info LIBS_LIST := $(foreach lib, $(LIBS), $(LIB_DIR)/$(lib).so) @@ -171,6 +173,10 @@ $(EXEC_LIST) : $(BIN_DIR)/$(EXEC_PREFIX)_%_utest : $(SCRATCH_DIR)/%_utest.o $(CC) $< $(subst .o,_runner.o,$<) $(SF_OBJ_LIST) $(DEPS_OBJ_LIST) \ $(MOCK_OBJ_LIST) $(PROJ_OBJ_LIST) $(LDFLAGS) -o $@ +# Generate baseline inital coverage data from .gcno file +$(SCRATCH_DIR)/$(EXEC_PREFIX)_initial.info : $(PROJ_OBJ_LIST) + lcov $(LCOV_OPTS) --capture --initial --directory $(PROJ_DIR) -o $@ + # Run the test runner and genrate a filtered gcov.json.gz file $(SCRATCH_DIR)/%_utest.info : $(BIN_DIR)/$(EXEC_PREFIX)_%_utest \ $(PROJ_DIR)/callgraph.json @@ -197,5 +203,9 @@ $(SCRATCH_DIR)/%_utest.info : $(BIN_DIR)/$(EXEC_PREFIX)_%_utest \ rm -f $(PROJ_GCDA_LIST) # Combine lcov from each test bin into one lcov info file for the suite -$(COVINFO) : $(LCOV_LIST) - lcov $(LCOV_OPTS) -q -o $@ $(foreach cov,$(LCOV_LIST),--add-tracefile $(cov) ) +$(COVINFO_COMBINE) : $(LCOV_LIST) + lcov $(LCOV_OPTS) -o $@ $(foreach cov,$(LCOV_LIST),--add-tracefile $(cov) ) + +# Add baseline / initial coverage generated by gcc to point out untagged functions +$(COVINFO) : $(COVINFO_COMBINE) $(COVINFO_INITIAL) + lcov $(LCOV_OPTS) -o $@ --add-tracefile $(COVINFO_INITIAL) --add-tracefile $(COVINFO_COMBINE)