coverage: do not delete .gcno files before building

The coverage-compile target depends on coverage-clean, which is supposed to remove the earlier build products that would get in the way of the next coverage test run. However, removing *.gcno is actively wrong. These are the files that contain the compile-time coverage related data. They are only rebuilt if the source is compiled. So if one ran 'make coverage' two times in a row, the second run would remove *.gcno, but then fail to recreate them because neither source files nor build flags have changed. (This remained hidden for so long most likely because any other intervening use of 'make' will change the build flags, causing a full rebuild.) So we make an exception for *.gcno. The *.gcda are the coverage results, written when the gcov-instrumented program is run. We still remove those, so as to get a one-test-run view of the data; you could probably argue the other way too. Signed-off-by: Thomas Rast <trast@inf.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Thomas Rast committed May 13, 2013 at 23:27 UTC dcbe7f1ab8b96b3875ae820d71c1364ee3bd99f5
1 file changed +6 -3
Makefile
+6 -3
@@ -2443,7 +2443,7 @@ profile-clean:
2443 $(RM) $(addsuffix *.gcda,$(addprefix $(PROFILE_DIR)/, $(object_dirs)))
2444 $(RM) $(addsuffix *.gcno,$(addprefix $(PROFILE_DIR)/, $(object_dirs)))
2445
2446 -clean: profile-clean
2446 +clean: profile-clean coverage-clean
2447 $(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o \
2448 builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)
2449 $(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
@@ -2525,20 +2525,23 @@ check-builtins::
2525 ### Test suite coverage testing
2526 #
2527 .PHONY: coverage coverage-clean coverage-compile coverage-test coverage-report
2528 +.PHONY: coverage-clean-results
2529
2530 coverage:
2531 $(MAKE) coverage-test
2532 $(MAKE) coverage-report
2533
2534 object_dirs := $(sort $(dir $(OBJECTS)))
2534 -coverage-clean:
2535 +coverage-clean-results:
2536 $(RM) $(addsuffix *.gcov,$(object_dirs))
2537 $(RM) $(addsuffix *.gcda,$(object_dirs))
2537 - $(RM) $(addsuffix *.gcno,$(object_dirs))
2538 $(RM) coverage-untested-functions
2539 $(RM) -r cover_db/
2540 $(RM) -r cover_db_html/
2541
2542 +coverage-clean: coverage-clean-results
2543 + $(RM) $(addsuffix *.gcno,$(object_dirs))
2544 +
2545 COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs
2546 COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov
2547 GCOVFLAGS = --preserve-paths --branch-probabilities --all-blocks