diff options
| author | rillig <rillig@NetBSD.org> | 2020-12-03 18:43:02 +0000 |
|---|---|---|
| committer | rillig <rillig@NetBSD.org> | 2020-12-03 18:43:02 +0000 |
| commit | aa3e0c28dad151b5aba5260d002c8e5e4e7eea60 (patch) | |
| tree | 17b0fdd0e72390b399c9f76b137147d2ccdb21aa /usr.bin/make/Makefile | |
| parent | 58910c34dfc1d900cd19b782694abcebe49336fb (diff) | |
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.
Diffstat (limited to 'usr.bin/make/Makefile')
| -rw-r--r-- | usr.bin/make/Makefile | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/usr.bin/make/Makefile b/usr.bin/make/Makefile index 80fd57399ea..2b81a622761 100644 --- a/usr.bin/make/Makefile +++ b/usr.bin/make/Makefile @@ -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; clang9 fails to link .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 |
