]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
autotools: make `--enable-code-coverage` support llvm/clang
authorViktor Szakats <commit@vsz.me>
Wed, 3 Sep 2025 14:48:49 +0000 (16:48 +0200)
committerViktor Szakats <commit@vsz.me>
Fri, 19 Sep 2025 23:28:35 +0000 (01:28 +0200)
Cherry-picked from #18468

Closes #18473

configure.ac
m4/curl-functions.m4

index 3f02d037ef3dfbb3c30165bb80688dd4287a6b03..6c33b561be37a50252873f45ca48bad4404e0a63 100644 (file)
@@ -128,9 +128,6 @@ CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/inc
 XC_CHECK_PROG_CC
 CURL_ATOMIC
 
-dnl for --enable-code-coverage
-CURL_COVERAGE
-
 XC_AUTOMAKE
 AC_MSG_CHECKING([curl version])
 AC_MSG_RESULT($CURLVERSION)
@@ -523,6 +520,8 @@ dnl platform/compiler/architecture specific checks/flags
 dnl **********************************************************************
 
 CURL_CHECK_COMPILER
+dnl for --enable-code-coverage
+CURL_COVERAGE
 CURL_CHECK_NATIVE_WINDOWS
 
 curl_cv_wince='no'
index 83206dbc82f6822930bcaee983d0909800d4e52d..3640f0c84ebb5fdb40d3ee8a521be3154fb2b85a 100644 (file)
@@ -4290,25 +4290,31 @@ AC_DEFUN([CURL_COVERAGE],[
     AS_HELP_STRING([--enable-code-coverage], [Provide code coverage]),
     coverage="$enableval")
 
-  dnl if not gcc switch off again
-  AS_IF([ test "$GCC" != "yes" ], coverage="no" )
+  dnl if not gcc or clang switch off again
+  AS_IF([test "$compiler_id" != "GNU_C" -a "$compiler_id" != "CLANG" -a "$compiler_id" != "APPLECLANG"], coverage="no" )
   AC_MSG_RESULT($coverage)
 
   if test "x$coverage" = "xyes"; then
     curl_coverage_msg="enabled"
 
-    AC_CHECK_TOOL([GCOV], [gcov], [gcov])
-    if test -z "$GCOV"; then
-      AC_MSG_ERROR([needs gcov for code coverage])
-    fi
-    AC_CHECK_PROG([LCOV], [lcov], [lcov])
-    if test -z "$LCOV"; then
-      AC_MSG_ERROR([needs lcov for code coverage])
-    fi
-
     CPPFLAGS="$CPPFLAGS -DNDEBUG"
-    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
-    LIBS="$LIBS -lgcov"
+    CFLAGS="$CFLAGS -O0 -g"
+
+    if test "$compiler_id" = "GNU_C"; then
+      AC_CHECK_TOOL([GCOV], [gcov], [gcov])
+      if test -z "$GCOV"; then
+        AC_MSG_ERROR([needs gcov for code coverage])
+      fi
+      AC_CHECK_PROG([LCOV], [lcov], [lcov])
+      if test -z "$LCOV"; then
+        AC_MSG_ERROR([needs lcov for code coverage])
+      fi
+      CFLAGS="$CFLAGS -ftest-coverage -fprofile-arcs"
+      LIBS="$LIBS -lgcov"
+    else
+      CFLAGS="$CFLAGS -fprofile-instr-generate -fcoverage-mapping"
+      LDFLAGS="$LDFLAGS -fprofile-instr-generate -fcoverage-mapping"
+    fi
   fi
 ])