]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add support for coverage analysis using gcov and lcov
authorJürg Billeter <j@bitron.ch>
Sat, 26 Sep 2009 19:58:39 +0000 (21:58 +0200)
committerJürg Billeter <j@bitron.ch>
Sat, 26 Sep 2009 21:19:36 +0000 (23:19 +0200)
.gitignore
Makefile.am
ccode/Makefile.am
codegen/Makefile.am
compiler/Makefile.am
configure.ac
gee/Makefile.am
vala/Makefile.am

index 42c1298fc372c2f3bb92e7b3ec96a8035a009068..94ed5cc68c63ead1f3d16b559034020cf89b55fb 100644 (file)
@@ -25,3 +25,8 @@ ylwrap
 compile
 stamp-h1
 *.pc
+
+*.gcda
+*.gcno
+coverage
+lcov.info
index e603ea9c82719cea4c64abf943b25a013c58dcec..0dfaa2061d5d1ff0124e63fa848173817f846bcc 100644 (file)
@@ -36,10 +36,30 @@ DIST_SUBDIRS = \
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = vala-1.0.pc
 
+.PHONY: bootstrap
+bootstrap: all
+       find $(top_srcdir) -name "*.vala.stamp" | xargs rm -f
+       $(MAKE) $(AM_MAKEFLAGS) all VALAC=$(abs_top_builddir)/compiler/valac
+
 .PHONY: test
 test:
        cd tests && $(MAKE) $(AM_MAKEFLAGS) check
 
+#if ENABLE_COVERAGE
+.PHONY: coverage coverage-report
+coverage:
+       find $(top_srcdir) -name "*.gcda" | xargs rm -f
+       $(MAKE) $(AM_MAKEFLAGS) bootstrap
+       $(MAKE) $(AM_MAKEFLAGS) test
+
+coverage-report: coverage
+       lcov --directory $(top_srcdir) --capture --output-file $(top_builddir)/lcov.info
+       lcov --directory $(top_srcdir) --output-file $(top_builddir)/lcov.info --remove $(top_builddir)/lcov.info "*.c" "*.h" "*.vapi"
+       rm -r $(top_builddir)/coverage
+       $(mkdir_p) $(top_builddir)/coverage
+       genhtml --title "@PACKAGE_STRING@" --output-directory $(top_builddir)/coverage $(top_builddir)/lcov.info
+#endif
+
 dist-hook: gen-ChangeLog
 
 gen_start_date = 2009-02-25
index af79c1f96f830508ac2c0e15ab9f3a5c0d146948..fdc07bb2f245dfcfb915351384642daebd050f57 100644 (file)
@@ -1,6 +1,7 @@
 NULL =
 
 AM_CPPFLAGS = \
+       $(COVERAGE_CFLAGS) \
        -I$(top_srcdir)/gee \
        $(GLIB_CFLAGS) \
        $(NULL)
@@ -76,10 +77,11 @@ ccodeinclude_HEADERS = \
        $(NULL)
 
 ccode.vapi ccode.vala.stamp: $(libvalaccode_la_VALASOURCES)
-       $(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee -H valaccode.h --library ccode $^
+       $(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee -H valaccode.h --library ccode $^
        touch $@
 
 libvalaccode_la_LIBADD = \
+       $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
        $(NULL)
 
index 8f9401f8b5991b30f18f1f64098e7d8c342ab430..902cf5d25f3e8ed620cc56e970447871ecd55bb1 100644 (file)
@@ -1,6 +1,7 @@
 NULL =
 
 AM_CPPFLAGS = \
+       $(COVERAGE_CFLAGS) \
        -I$(top_srcdir)/gee \
        -I$(top_srcdir)/ccode \
        -I$(top_srcdir)/vala \
@@ -56,12 +57,13 @@ codegeninclude_HEADERS = \
        $(NULL)
 
 codegen.vapi codegen.vala.stamp: $(libvala_la_VALASOURCES)
-       $(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --vapidir ../vala --pkg vala -H valacodegen.h --library codegen $^
+       $(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --vapidir ../vala --pkg vala -H valacodegen.h --library codegen $^
        touch $@
 
 libvala_la_LDFLAGS = -no-undefined
 
 libvala_la_LIBADD = \
+       $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
        ../vala/libvalacore.la \
        $(NULL)
index 4cbe5ba2c79e3b2578c8770eb3f21ea3534294d6..45e4fd760c6509dee58bbc53435df6bb5061101e 100644 (file)
@@ -1,6 +1,7 @@
 NULL =
 
 AM_CPPFLAGS = \
+       $(COVERAGE_CFLAGS) \
        -I$(top_srcdir)/gee \
        -I$(top_srcdir)/ccode \
        -I$(top_srcdir)/vala \
@@ -26,10 +27,11 @@ valac_SOURCES = \
        $(NULL)
 
 valac.vala.stamp: $(valac_VALASOURCES)
-       $(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --vapidir ../vala --pkg vala --vapidir ../codegen --pkg codegen --pkg config $^
+       $(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --vapidir ../vala --pkg vala --vapidir ../codegen --pkg codegen --pkg config $^
        touch $@
 
 valac_LDADD = \
+       $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
        ../codegen/libvala.la \
        $(NULL)
index ec8b3810a4cdec4a61714e639563deee5fc7c80e..5b0b3cb469bbd3c84afa625dcdcbcaede4d308d5 100644 (file)
@@ -29,6 +29,22 @@ AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
 
+AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [Enable coverage analysis]), enable_coverage=$enableval, enable_coverage=no)
+AM_CONDITIONAL(ENABLE_COVERAGE, test x$enable_coverage = xyes)
+
+if test "$enable_coverage" = "yes"; then
+       COVERAGE_VALAFLAGS="-g"
+       COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage"
+       COVERAGE_LIBS="-lgcov"
+else
+       COVERAGE_VALAFLAGS=
+       COVERAGE_CFLAGS=
+       COVERAGE_LIBS=
+fi
+AC_SUBST(COVERAGE_VALAFLAGS)
+AC_SUBST(COVERAGE_CFLAGS)
+AC_SUBST(COVERAGE_LIBS)
+
 AC_ARG_ENABLE(vapigen, AS_HELP_STRING([--enable-vapigen], [Enable VAPI generator]), enable_vapigen=$enableval, enable_vapigen=no)
 AM_CONDITIONAL(ENABLE_VAPIGEN, test x$enable_vapigen = xyes)
 
index 85928fedf813011730d8c860d7692305cfa5ebdc..ece430c97eb7001ef8ba8f571768ba409ec79a59 100644 (file)
@@ -1,6 +1,7 @@
 NULL =
 
 AM_CPPFLAGS = \
+       $(COVERAGE_CFLAGS) \
        $(GLIB_CFLAGS) \
        $(NULL)
 
@@ -39,10 +40,11 @@ geeinclude_HEADERS = \
        $(NULL)
 
 gee.vapi gee.vala.stamp: $(libgee_la_VALASOURCES)
-       $(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 -H gee.h --library gee $^
+       $(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 -H gee.h --library gee $^
        touch $@
 
 libgee_la_LIBADD = \
+       $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
        $(NULL)
 
index e5bdde695d9081be8e2e210e1629bb4afa6e1fb8..016d9241494d1b8c2fcd9627cb3d891e07584b9b 100644 (file)
@@ -1,6 +1,7 @@
 NULL =
 
 AM_CPPFLAGS = \
+       $(COVERAGE_CFLAGS) \
        -I$(top_srcdir)/gee \
        -I$(top_srcdir)/ccode \
        $(GLIB_CFLAGS) \
@@ -165,10 +166,11 @@ valainclude_HEADERS = \
        $(NULL)
 
 vala.vapi vala.vala.stamp: $(libvalacore_la_VALASOURCES)
-       $(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --pkg config -H vala.h --library vala $^
+       $(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir ../gee --pkg gee --vapidir ../ccode --pkg ccode --pkg config -H vala.h --library vala $^
        touch $@
 
 libvalacore_la_LIBADD = \
+       $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
        ../gee/libgee.la \
        ../ccode/libvalaccode.la \