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