]> git.ozlabs.org Git - ccan/blobdiff - tools/gcov.c
ccanlint: Correct default coverage tool for clang
[ccan] / tools / gcov.c
index f922d8d97ed1dc5496213d81840305c0d99c5985..79528c1b9e855b705b3986fc2c683791a624db28 100644 (file)
@@ -2,16 +2,30 @@
 #include <stdlib.h>
 #include <stdarg.h>
 
+const char *gcov; /* = NULL */
+
 bool run_gcov(const void *ctx, unsigned int *time_ms, char **output,
              const char *fmt, ...)
 {
+       const char *cmd = gcov;
        char *args;
        va_list ap;
        bool rc;
 
+       if (!gcov) {
+#if defined(__clang__)
+               cmd = "llvm-cov gcov";
+#elif defined(__GNUC__)
+               cmd = "gcov";
+#endif
+       }
+
+       if (!cmd)
+               return false;
+
        va_start(ap, fmt);
        args = tal_vfmt(ctx, fmt, ap);
-       rc = run_command(ctx, time_ms, output, "gcov %s", args);
+       rc = run_command(ctx, time_ms, output, "%s %s", cmd, args);
        tal_free(args);
        return rc;
 }
@@ -20,6 +34,13 @@ const char *gcov_unavailable(void *ctx)
 {
        const char *err = NULL;
 
+       /* 
+        * If the user has specified a path, assume they know what
+        * they're doing
+        */
+       if (gcov)
+               return NULL;
+
 #ifdef __GNUC__
        unsigned int timeleft = default_timeout_ms;
        char *output;