summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Lambert <eric_lambert@xyratex.com>2014-08-08 13:29:01 -0700
committerEric Lambert <eric_lambert@xyratex.com>2014-08-08 13:29:01 -0700
commit9b92176b4e00e287c09f540f4e801941418115b3 (patch)
treeaa830d315398dc797adb97e1e7c8e6b1b68356ec
parentf83caee42afe6c500a4588b41e91ed8047ccb994 (diff)
downloadliberasurecode-9b92176b4e00e287c09f540f4e801941418115b3.tar.gz
Added ability to generate coverage data with configure --enable-gcov.
Currently only works on Linux (build/tests will run on OS X but coverage data is not generated).
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac19
-rw-r--r--src/Makefile.am8
-rw-r--r--src/builtin/null_code/Makefile.am6
-rw-r--r--src/builtin/xor_codes/Makefile.am6
-rw-r--r--test/Makefile.am16
6 files changed, 45 insertions, 13 deletions
diff --git a/Makefile.am b/Makefile.am
index 714d06f..6e23397 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,7 +11,7 @@ INCLUDE = -I$(abs_top_builddir)/include \
AM_CPPFLAGS = $(CPPFLAGS) $(INCLUDE)
AM_CPPFLAGS += -Werror
-AM_CFLAGS = -fPIC $(AM_CPPFLAGS) -L/usr/local/lib
+AM_CFLAGS = -fPIC $(AM_CPPFLAGS) @GCOV_FLAGS@ -L/usr/local/lib
include_HEADERS = \
include/erasurecode/alg_sig.h \
@@ -49,3 +49,4 @@ cscope:
find src include -name "*.[ch]" > cscope.files
cscope -q -b
+MOSTLYCLEANFILES = *.gcda *.gcno *.gcov
diff --git a/configure.ac b/configure.ac
index 3f20373..3155567 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,6 +49,25 @@ else
CFLAGS="-O2 -g -Werror -D_GNU_SOURCE=1"
fi
+AC_ARG_ENABLE([gcov],
+[ --enable-gcov Turn on code coverage],
+[case "${enableval}" in
+ yes) gcov=true ;;
+ no) gcov=false ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-gcov]) ;;
+esac],[gcov=false])
+if test x$gcov = xtrue ; then
+ AC_CHECK_LIB(gcov, main,
+ [
+ GCOV_FLAGS="-fprofile-arcs -ftest-coverage"
+ GCOV_LDFLAGS="-lgcov"
+ ], [
+ AC_MSG_ERROR([failed to locate gcov library])
+ ])
+fi
+AC_SUBST(GCOV_FLAGS)
+AC_SUBST(GCOV_LDFLAGS)
+
dnl Expand the sources and objects needed to build the library
AC_SUBST(ac_aux_dir)
AC_SUBST(OBJECTS)
diff --git a/src/Makefile.am b/src/Makefile.am
index 2e64f95..4f2d639 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,10 +19,14 @@ liberasurecode_la_SOURCES = \
backends/jerasure/jerasure_rs_vand.c \
backends/jerasure/jerasure_rs_cauchy.c
-liberasurecode_la_CPPFLAGS = -Werror
+liberasurecode_la_CPPFLAGS = -Werror @GCOV_FLAGS@
liberasurecode_la_LIBADD = \
- builtin/xor_codes/libXorcode.la -lpthread -lm
+ builtin/xor_codes/libXorcode.la -lpthread -lm @GCOV_LDFLAGS@
# Version format (C - A).(A).(R) for C:R:A input
liberasurecode_la_LDFLAGS = -rpath '$(libdir)' -version-info 9:10:9
+MOSTLYCLEANFILES = *.gcda *.gcno *.gcov utils/chksum/*.gcda utils/chksum/*.gcno utils/chksum/*.gcov \
+ backends/null/*.gcda backends/null/*.gcno backends/null/*.gcov \
+ backends/xor/*.gcda backends/xor/*.gcno backends/xor/*.gcov \
+ backends/jerasure/*.gcda backends/jerasure/*.gcno backends/jerasure/*.gcov
diff --git a/src/builtin/null_code/Makefile.am b/src/builtin/null_code/Makefile.am
index 3166256..e4e27f2 100644
--- a/src/builtin/null_code/Makefile.am
+++ b/src/builtin/null_code/Makefile.am
@@ -2,8 +2,10 @@ lib_LTLIBRARIES = libnullcode.la
# libnullcode params
libnullcode_la_SOURCES = null_code.c
-libnullcode_la_CPPFLAGS = -I$(top_srcdir)/include/null_code
+libnullcode_la_CPPFLAGS = -I$(top_srcdir)/include/null_code @GCOV_FLAGS@
# Version format (C - A).(A).(R) for C:R:A input
-libnullcode_la_LDFLAGS = -rpath '$(libdir)' -version-info 1:1:0
+libnullcode_la_LDFLAGS = @GCOV_LDFLAGS@ -rpath '$(libdir)' -version-info 1:1:0
+
+MOSTLYCLEANFILES = *.gcda *.gcno *.gcov
diff --git a/src/builtin/xor_codes/Makefile.am b/src/builtin/xor_codes/Makefile.am
index b69b20f..cb35246 100644
--- a/src/builtin/xor_codes/Makefile.am
+++ b/src/builtin/xor_codes/Makefile.am
@@ -2,8 +2,10 @@ lib_LTLIBRARIES = libXorcode.la
# libXorcode params
libXorcode_la_SOURCES = xor_code.c xor_hd_code.c
-libXorcode_la_CPPFLAGS = -I$(top_srcdir)/include/xor_codes
+libXorcode_la_CPPFLAGS = -I$(top_srcdir)/include/xor_codes @GCOV_FLAGS@
# Version format (C - A).(A).(R) for C:R:A input
-libXorcode_la_LDFLAGS = -rpath '$(libdir)' -version-info 1:1:0
+libXorcode_la_LDFLAGS = @GCOV_LDFLAGS@ -rpath '$(libdir)' -version-info 1:1:0
+
+MOSTLYCLEANFILES = *.gcda *.gcno *.gcov
diff --git a/test/Makefile.am b/test/Makefile.am
index 5f9db05..88c2631 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -4,16 +4,20 @@ noinst_PROGRAMS = test_xor_hd_code alg_sig_test liberasurecode_test
test_xor_hd_code_SOURCES = \
builtin/xor_codes/test_xor_hd_code.c \
builtin/xor_codes/test_xor_hd_code.h
-test_xor_hd_code_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode -I$(top_srcdir)/include/xor_codes
-test_xor_hd_code_LDFLAGS = -static-libtool-libs $(top_srcdir)/src/liberasurecode.la $(top_srcdir)/src/builtin/xor_codes/libXorcode.la
+test_xor_hd_code_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode -I$(top_srcdir)/include/xor_codes @GCOV_FLAGS@
+test_xor_hd_code_LDFLAGS = @GCOV_LDFLAGS@ -static-libtool-libs $(top_srcdir)/src/liberasurecode.la $(top_srcdir)/src/builtin/xor_codes/libXorcode.la
check_PROGRAMS = test_xor_hd_code
alg_sig_test_SOURCES = utils/chksum/test_alg_sig.c
-alg_sig_test_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode -I$(top_srcdir)/include/xor_codes
-alg_sig_test_LDFLAGS = -static-libtool-libs $(top_srcdir)/src/liberasurecode.la -ldl
+alg_sig_test_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode -I$(top_srcdir)/include/xor_codes @GCOV_FLAGS@
+alg_sig_test_LDFLAGS = @GCOV_LDFLAGS@ -static-libtool-libs $(top_srcdir)/src/liberasurecode.la -ldl
check_PROGRAMS += alg_sig_test
liberasurecode_test_SOURCES = liberasurecode_test.c
-liberasurecode_test_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode
-liberasurecode_test_LDFLAGS = $(top_srcdir)/src/liberasurecode.la -ldl -lpthread
+liberasurecode_test_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/erasurecode @GCOV_FLAGS@
+liberasurecode_test_LDFLAGS = @GCOV_LDFLAGS@ $(top_srcdir)/src/liberasurecode.la -ldl -lpthread
check_PROGRAMS += liberasurecode_test
+
+MOSTLYCLEANFILES = *.gcda *.gcno *.gcov \
+ ./builtin/xor_codes/*.gcda ./builtin/xor_codes/*.gcno ./builtin/xor_codes/*.gcov \
+ ./utils/chksum/*.gcda ./utils/chksum/*.gcno ./utils/chksum/*.gcov