Problem: Coverage option broken with LLVM GCOV

Solution:
This is an issue with the imported Autoconf M4 macro package for standardised
code coverage builds, i.e. using --enable-code-coverage.

The simplest way that I could find is to add a case statement that checks if
the output of running `gcov -version` contains the "LLVM" keyword; if that is
true then do not link with LIBGCOV as its neither required nor supported when
using the GCOV frontend for LLVM; least not on Mac OS X. The case statement
would also be the most portable.

Moreover, using the "-version" argument instead of "-v" seems to be the best
bet as that is supported by the normal GCOV and LLVM GCOV frontend.

Upstream candidate - this solution should be improved by Autoconf M4 macro
overlords and applied to the upstream M4 package; I could not find a suitable
way to detect if LLVM GCOV is being used, except for the solution herein; this
should also work on *BSD too.
This commit is contained in:
hitstergtd 2016-05-08 19:36:53 +01:00
parent c4ce6d9b1b
commit 415af27395

View File

@ -143,7 +143,14 @@ AC_DEFUN([AX_CODE_COVERAGE],[
CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_LDFLAGS="-lgcov"
dnl Libgcov is not required for the LLVM GCOV frontend
case "`$GCOV -version`" in
*LLVM*)
CODE_COVERAGE_LDFLAGS="";;
*)
CODE_COVERAGE_LDFLAGS="-lgcov";;
esac
AC_SUBST([CODE_COVERAGE_CPPFLAGS])
AC_SUBST([CODE_COVERAGE_CFLAGS])