PATH_RESULT               = $(PATH_BIN_BASE)/result.txt

FILES_COVER_ALL           = $(wildcard $(addsuffix .*,$(FILES_COVER)))
FILES_COVER_C             = $(filter %.c,$(FILES_COVER_ALL))
FILES_COVER_CPP           = $(filter %.cpp,$(FILES_COVER_ALL))

PATH_CTC                  = $(PATH_TOOLS_COVERAGE)/Testwell/CTC_8_2_2

CTCPOST                   = $(PATH_CTC)/ctcpost.exe
CTC2HTML                  = $(PATH_CTC)/ctc2html.bat

CTCMONFILE                = $(PATH_BIN_NAME)/CtcMonFile
CTCPROFFILE               = $(PATH_BIN_NAME)/CtcProfile.txt
CTCHTMLFILE               = $(PATH_BIN_NAME)/CtcHtmlFile

CTC                       = $(PATH_CTC)/ctc.exe

CTCFLAGS                  = -i d                                                                        \
                            -i f                                                                        \
                            -i m                                                                        \
                            -v                                                                          \
                            -n                                                                          \
                            $(CTCMONFILE)                                                               \
                            -C "EXCLUDE=*"

CTC_NO_EXCLUDE_C          = -C "NO_EXCLUDE=$(addsuffix $(COMMA), $(FILES_COVER_C))"

CTC_NO_EXCLUDE_CPP        = -C "NO_EXCLUDE=$(addsuffix $(COMMA), $(FILES_COVER_CPP))"

FILE_CTCMON_DLL           = $(subst /,\,$(PATH_CTC)/ctcmsnt64.dll)

# ------------------------------------------------------------------------------
# Flags for code coverage. Only experts should tune these flags.
# ------------------------------------------------------------------------------

CTCCOVER_FLAGS_DECISION_AND_STATEMENT           = -fd
CTCCOVER_FLAGS_MODIFIED_DECISION_AND_CONDITION  = -fmcdc

CTCCOVER_FLAGS = $(CTCCOVER_FLAGS_DECISION_AND_STATEMENT)

# ------------------------------------------------------------------------------
# Run CTC for code coverage and HTML report.
# ------------------------------------------------------------------------------

.PHONY: PostBuildCover
PostBuildCover:
	@$(GNUECHO) +++ perform post-build cover events
	@-copy /Y $(FILE_CTCMON_DLL) $(GLOBAL_BASEDIR)
	@$(GNUECHO) $(FILES_COVER_C)>   $(PATH_RESULT)
	@$(GNUECHO) +++ running application: $(FILE_BIN_NAME).$(SUFFIX_EXE)
	@$(GNUECHO) BuildSettings: $(TYP_ECU) $(TYP_OEM) $(TYP_PRJ)>                $(FILE_BIN_NAME)_ExecutionResult.txt
	@-$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_EXE))>>                             $(FILE_BIN_NAME)_ExecutionResult.txt
	@$(CAT) $(FILE_BIN_NAME)_ExecutionResult.txt
	@$(GNUECHO)
	@$(GNUECHO) +++ coverage of instrumented files in application: $(FILE_BIN_NAME).$(SUFFIX_EXE)
	@$(GNUECHO) The CTC - Decision and Statement Coverage (C0 and C1):
	@$(GNUECHO) ---------------------------------------------------------------------------------------- 
	@$(GNUECHO)
	@$(GNUECHO) Generating CTC profile
	$(CTCPOST) $(CTCMONFILE) $(CTCCOVER_FLAGS) -p $(CTCPROFFILE)
	@$(GNUECHO)
	@$(GNUECHO) Generating CTC HTML report
	$(CTC2HTML) -i $(CTCPROFFILE) -o $(CTCHTMLFILE) -t 75 -nsb
	@$(FINDSTR) /c:"TER    " $(subst /,\,$(CTCPROFFILE))
	@$(GNUECHO)
	@$(GNUECHO) Created CTC-Coverage Report: file://$(PATH_BIN_NAME)/CtcHtmlFile/index.html
