diff --git a/.gitignore b/.gitignore
index 5e74ce7dce02d16d93e2ab940cc21e5dead04fc1..36f0ca346a3c6ec32c3024338912d9631190040b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,8 @@
 *.dll
 *.sw?
 *.exe
+*.gcda
+*.gcno
 a.out
 makefile.dep
 /Makefile.conf
diff --git a/configure b/configure
index 8f15791a4b2192a7d3af32a4b7757b4dc2d1ca6d..eda363efcf5554e750586b2f6633b7dae06d89af 100755
--- a/configure
+++ b/configure
@@ -697,6 +697,7 @@ enable_modules
 enable_doc
 enable_pdfdoc
 enable_debug
+enable_gcov
 enable_basic_warnings
 enable_fussy
 enable_debug_glibcxx
@@ -1359,6 +1360,7 @@ Optional Features:
   --enable-doc            enable documentation, default: yes
   --enable-pdfdoc         enable pdf version of the manual, default: no
   --enable-debug          enable debugging, default: no
+  --enable-gcov           enable gcov to estimate code coverage, default: no
   --enable-basic-warnings enable basic warnings, default: yes
   --enable-fussy          enable fussy warnings, default: no
   --enable-debug-glibcxx  enable enable boundary check, default: no
@@ -2462,6 +2464,24 @@ fi
 
 
 
+gcov=
+# Check whether --enable-gcov was given.
+if test "${enable_gcov+set}" = set; then :
+  enableval=$enable_gcov; case "${enableval}" in
+             (yes) gcov=true ;;
+             (no)  gcov=false ;;
+             (*)   as_fn_error $? "wrong argument to --enable-gcov" "$LINENO" 5 ;;
+  esac
+else
+  case "no" in
+             (yes) gcov=true ;;
+             (no)  gcov=false ;;
+  esac
+
+fi
+
+
+
 basic_warnings=
 # Check whether --enable-basic-warnings was given.
 if test "${enable_basic_warnings+set}" = set; then :
@@ -4519,6 +4539,59 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
 
+if test $gcov == true
+then
+
+  save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS --coverage"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts --coverage" >&5
+$as_echo_n "checking whether $CXX accepts --coverage... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5
+$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+  CFLAGS="$CFLAGS --coverage"
+  LDFLAGS="$CFLAGS --coverage"
+  STATIC_LIBS="$STATIC_LIBS --coverage"
+fi
+
 if test $fussy == true
 then
 
diff --git a/configure.ac b/configure.ac
index 6a63de2515dad40640c37c3d132462da4910bfcc..b9ecf5beca7dcd5c71370523c3220f583dc00891 100644
--- a/configure.ac
+++ b/configure.ac
@@ -162,6 +162,7 @@ AC_ARG_ENABLE([modules],
 PLUMED_CONFIG_ENABLE([doc],[doc],[documentation],[yes])
 PLUMED_CONFIG_ENABLE([pdfdoc],[pdfdoc],[pdf version of the manual],[no])
 PLUMED_CONFIG_ENABLE([debug],[debug],[debugging],[no])
+PLUMED_CONFIG_ENABLE([gcov],[gcov],[gcov to estimate code coverage],[no])
 PLUMED_CONFIG_ENABLE([basic_warnings],[basic-warnings],[basic warnings],[yes])
 PLUMED_CONFIG_ENABLE([fussy],[fussy],[fussy warnings],[no])
 PLUMED_CONFIG_ENABLE([debug_glibcxx],[debug-glibcxx],[enable boundary check],[no])
@@ -259,6 +260,14 @@ then
   PLUMED_CHECK_CXXFLAG([-g])
 fi
 
+if test $gcov == true
+then
+  PLUMED_CHECK_CXXFLAG([--coverage])
+  CFLAGS="$CFLAGS --coverage"
+  LDFLAGS="$CFLAGS --coverage"
+  STATIC_LIBS="$STATIC_LIBS --coverage"
+fi
+
 if test $fussy == true
 then
   PLUMED_CHECK_CXXFLAG([-Wextra])
diff --git a/src/maketools/make.rules b/src/maketools/make.rules
index 2d3155e89aa7b392e4658e78f03891bf7320b87e..835b9bc645c673a171b37dc7a3f9f4eda86f1b44 100644
--- a/src/maketools/make.rules
+++ b/src/maketools/make.rules
@@ -42,5 +42,5 @@ ifndef XLF
 endif
 
 #
-CLEANLIST=*~ *.tmp *.xxd *.o *.so *.dylib
+CLEANLIST=*~ *.tmp *.xxd *.o *.so *.dylib *.gcda *.gcno