[PATCH v2 2/7] Makefile: Include subdirectories in "make cover" reports
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Jul 25, 2010, 14:40 UTC
- Message-ID
- <1280068861-17701-3-git-send-email-avarab@gmail.com>
- In-Reply-To
- <1280068861-17701-1-git-send-email-avarab@gmail.com>
We generate profiling files in all the $(OBJECTS) dirs. Aggregate results from there, and add them to the corresponding clean target.
Also expand the gcov arguments. Generate reports for things like "x() || y()" using --all-blocks, and add --preserve-paths since we're profiling in subdirectories now.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- Makefile | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index bc3c570..a95d260 100644 --- a/Makefile +++ b/Makefile @@ -2280,8 +2280,11 @@ coverage: $(MAKE) coverage-build $(MAKE) coverage-report +object_dirs := $(sort $(dir $(OBJECTS))) coverage-clean: - rm -f *.gcda *.gcno + $(RM) $(addsuffix *.gcov,$(object_dirs)) + $(RM) $(addsuffix *.gcda,$(object_dirs)) + $(RM) $(addsuffix *.gcno,$(object_dirs)) COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov @@ -2292,7 +2295,9 @@ coverage-build: coverage-clean -j1 test coverage-report: - gcov -b *.c + for dir in $(object_dirs); do \ + gcov --preserve-paths --branch-probabilities --all-blocks --object-directory=$$dir $$dir*.c; \ + done grep '^function.*called 0 ' *.c.gcov \ | sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \ | tee coverage-untested-functions
-- 1.7.0.4