summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2011-11-29 20:35:48 +0100
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2011-12-05 20:04:48 +0100
commit840ecc9e075a0268884141eb25e4f2dc3f35d9dc (patch)
treedc823dbda33966f995142f0f50b848c2f4d5ed46
parent51177b1fe93297d2dbb87802ef9bc18afc72fc21 (diff)
Add coverage support.
Adds --enable-coverage to configure and a "coverage-html" make target. The dependency stuff in the Makefile is a bit questionable, but the best I could think of so far. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
-rw-r--r--Makefile11
-rw-r--r--common.mak2
-rwxr-xr-xconfigure3
3 files changed, 15 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 94fb830723..c0af5c2c74 100644
--- a/Makefile
+++ b/Makefile
@@ -137,6 +137,8 @@ clean::
$(RM) $(CLEANSUFFIXES)
$(RM) $(TOOLS)
$(RM) $(CLEANSUFFIXES:%=tools/%)
+ $(RM) coverage.info
+ $(RM) -r coverage-html
distclean::
$(RM) $(DISTCLEANSUFFIXES)
@@ -145,6 +147,15 @@ distclean::
config:
$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
+# Without the sed genthml thinks "libavutil" and "./libavutil" are two different things
+coverage.info: $(wildcard *.gcda *.gcno */*.gcda */*.gcno */*/*.gcda */*/*.gcno)
+ $(Q)lcov -c -d . -b . | sed -e 's#/./#/#g' > $@
+
+coverage-html: coverage.info
+ $(Q)mkdir -p $@
+ $(Q)genhtml -o $@ $<
+ $(Q)touch $@
+
include $(SRC_PATH)/doc/Makefile
include $(SRC_PATH)/tests/Makefile
diff --git a/common.mak b/common.mak
index 14c79f0e47..b7786c5c67 100644
--- a/common.mak
+++ b/common.mak
@@ -113,7 +113,7 @@ $(TOOLOBJS): | tools
OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOSTOBJS) $(TESTOBJS))
-CLEANSUFFIXES = *.d *.o *~ *.ho *.map *.ver
+CLEANSUFFIXES = *.d *.o *~ *.ho *.map *.ver *.gcno *.gcda
DISTCLEANSUFFIXES = *.pc
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp
diff --git a/configure b/configure
index 7596c41124..cc7ba534df 100755
--- a/configure
+++ b/configure
@@ -260,6 +260,7 @@ Advanced options (experts only):
--optflags override optimization-related compiler flags
Developer options (useful when working on FFmpeg itself):
+ --enable-coverage build with test coverage instrumentation
--disable-debug disable debugging symbols
--enable-debug=LEVEL set the debug level [$debuglevel]
--disable-optimizations disable compiler optimizations
@@ -1242,6 +1243,7 @@ CMDLINE_SELECT="
$CONFIG_LIST
$THREADS_LIST
asm
+ coverage
cross_compile
debug
extra_warnings
@@ -3194,6 +3196,7 @@ check_cpp_condition \
fi
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
+enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement