X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fgcov.c;h=bf2b61ccfdeb66a14c73f575bcbb2499159eb427;hp=f922d8d97ed1dc5496213d81840305c0d99c5985;hb=HEAD;hpb=bcb956d9afb054a36c4f481900cdbc6587c4a2bf diff --git a/tools/gcov.c b/tools/gcov.c index f922d8d9..bf2b61cc 100644 --- a/tools/gcov.c +++ b/tools/gcov.c @@ -2,17 +2,32 @@ #include #include +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); + va_end(ap); return rc; } @@ -20,6 +35,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;