From 415af2739529890ce809b21a962157db812e2977 Mon Sep 17 00:00:00 2001 From: hitstergtd Date: Sun, 8 May 2016 19:36:53 +0100 Subject: [PATCH] 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. --- m4/ax_code_coverage.m4 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4 index 93dfce3a..d7fe78a7 100644 --- a/m4/ax_code_coverage.m4 +++ b/m4/ax_code_coverage.m4 @@ -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])