GCOVHTMLFILE              = $(PATH_BIN_NAME)/GcovHtmlFile

FILES_BASENAME_COVER      = $(notdir $(FILES_COVER))
FILES_BASENAME_C          = $(basename $(notdir $(wildcard $(PATH_TMP_NAME_OBJ)/*.fname_c)))
FILES_BASENAME_CPP        = $(basename $(notdir $(wildcard $(PATH_TMP_NAME_OBJ)/*.fname_cpp)))

FILES_COVER_C             = $(addsuffix .c,$(filter $(FILES_BASENAME_COVER), $(FILES_BASENAME_C)))
FILES_COVER_C___GCOV      = $(addsuffix .gcov,$(FILES_COVER_C))

FILES_COVER_CPP           = $(addsuffix .cpp,$(filter $(FILES_BASENAME_COVER), $(FILES_BASENAME_CPP)))
FILES_COVER_CPP_GCOV      = $(addsuffix .gcov,$(FILES_COVER_CPP))

FILES_COVER_ALL           = $(FILES_COVER_C)                                 \
                            $(FILES_COVER_CPP)

FILES_COVER_ALL_GCOV      = $(FILES_COVER_C___GCOV)                          \
                            $(FILES_COVER_CPP_GCOV)

GCOV_FLAGS                = -i -o $(PATH_TMP_NAME_OBJ)

ifeq ($(COVER_EXCLUDES_SPECIFIC),)
SCOV_FLAGS                = -external                                                  \
                            -title $(TYP_NAME)_GcovCover                               \
                            -exclude $(DQUOTE)x86_64|mingw32|Src_ThirdParty$(DQUOTE)   \
                            -htmldir $(GCOVHTMLFILE)
else
SCOV_FLAGS                = -external                                                  \
                            -title $(TYP_NAME)_GcovCover                               \
                            $(COVER_EXCLUDES_SPECIFIC)                                    \
                            -htmldir $(GCOVHTMLFILE)
endif


GCOV_BATCH_FILE_ANALYSIS  = $(PATH_TMP_NAME_OBJ)/_gcov_cover_analyze.bat

# ------------------------------------------------------------------------------
# Run GCOV and SCOV for code coverage and HTML report.
# Note: Here we are using the patched version
# of SCOV with AL_filepath_extension.
# ------------------------------------------------------------------------------

.PHONY: PostBuildCover
PostBuildCover:
	@$(GNUECHO) +++ perform post-build cover events
	@$(GNUECHO)
	@$(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
	@$(GNUECHO)
	@$(GNUECHO) +++ print application result:
	@$(GNUECHO)
	@$(CAT) $(FILE_BIN_NAME)_ExecutionResult.txt
	@$(GNUECHO)
	@$(GNUECHO) +++ GCOV Cover analysis create $(subst \,/,$(GCOV_BATCH_FILE_ANALYSIS)) +++
	@$(GNUECHO) echo off>                                                                                                          $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) cd $(subst /,\\,$(PATH_TMP_NAME_OBJ))>>                                                                            $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo +++ running GCOV +++>>                                                                                        $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) $(subst /,\\,$(GCOV)) $(FILES_COVER_ALL) $(GCOV_FLAGS)>>                                                           $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo.>>                                                                                                            $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo +++ coverage of instrumented files in application: $(FILE_BIN_NAME).$(SUFFIX_EXE)>>                           $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo +++ print SCOV version +++>>                                                                                  $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) $(subst /,\\,$(SCOV)) -v>>                                                                                         $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo.>>                                                                                                            $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo +++ running SCOV +++>>                                                                                        $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) $(subst /,\\,$(SCOV)) $(SCOV_FLAGS) $(FILES_COVER_ALL_GCOV)>>                                                      $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo.>>                                                                                                            $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo Created GCOV-Coverage Report: file://$(GCOVHTMLFILE)/index.html>>                                             $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO) echo.>>                                                                                                            $(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO)
	@$(GNUECHO) +++ GCOV Cover analysis execute $(subst \,/,$(GCOV_BATCH_FILE_ANALYSIS)) +++
	@$(subst /,\\,$(GCOV_BATCH_FILE_ANALYSIS))
	@$(GNUECHO)
