Module Name: src
Committed By: rillig
Date: Thu Dec 3 18:43:02 UTC 2020
Modified Files:
src/usr.bin/make: Makefile
Log Message:
make(1): format coverage summary as a table
This is only used interactively, not in the official builds, therefore
the additional dependency on Perl doesn't matter. The same result could
have been achieved in any other programming language, but probably not
as concisely.
To generate a diff of this commit:
cvs rdiff -u -r1.106 -r1.107 src/usr.bin/make/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/make/Makefile
diff -u src/usr.bin/make/Makefile:1.106 src/usr.bin/make/Makefile:1.107
--- src/usr.bin/make/Makefile:1.106 Sun Oct 25 13:25:19 2020
+++ src/usr.bin/make/Makefile Thu Dec 3 18:43:02 2020
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.106 2020/10/25 13:25:19 rillig Exp $
+# $NetBSD: Makefile,v 1.107 2020/12/03 18:43:02 rillig Exp $
# @(#)Makefile 5.2 (Berkeley) 12/28/90
PROG= make
@@ -43,6 +43,13 @@ USE_COVERAGE?= no # works only with gcc
.if ${USE_COVERAGE} == "yes"
GCOV?= gcov
COPTS+= --coverage -O0 -ggdb
+GCOV_PERL= if (/^File '(\S+)'/) {
+GCOV_PERL+= $$file = $$1; $$func = "";
+GCOV_PERL+= } elsif (/^Function '(\S+)'/) {
+GCOV_PERL+= $$func = $$1;
+GCOV_PERL+= } elsif (/^Lines executed:(\d+\.\d+)% of (\d+)/) {
+GCOV_PERL+= printf("%6.2f %5d %s%s\n", $$1, $$2, $$file, $$func);
+GCOV_PERL+= }
LDADD+= --coverage
.endif
CLEANFILES+= *.gcda *.gcno *.gcov
@@ -170,8 +177,8 @@ test: .MAKE
cd ${.CURDIR}/unit-tests \
&& MAKEFLAGS= ${TEST_MAKE} -r -m / TEST_MAKE=${TEST_MAKE} ${TESTS:DTESTS=${TESTS:Q}} ${.TARGET}
.if ${USE_COVERAGE} == yes
- ${GCOV} ${GCOV_OPTS} ${SRCS}
- sed -i 's,^\([^:]*\): *[0-9]*:,\1: ,' *.gcov
+ @${GCOV} ${GCOV_OPTS} ${SRCS} | perl -ne ${GCOV_PERL:Q} | sort -nr
+ @sed -i 's,^\([^:]*\): *[0-9]*:,\1: ,' *.gcov
.endif
accept sync-mi: .MAKE