]> git.ozlabs.org Git - ccan/blobdiff - tools/gcov.c
tools: Consolidate gcov handling
[ccan] / tools / gcov.c
diff --git a/tools/gcov.c b/tools/gcov.c
new file mode 100644 (file)
index 0000000..f922d8d
--- /dev/null
@@ -0,0 +1,36 @@
+#include "tools.h"
+#include <stdlib.h>
+#include <stdarg.h>
+
+bool run_gcov(const void *ctx, unsigned int *time_ms, char **output,
+             const char *fmt, ...)
+{
+       char *args;
+       va_list ap;
+       bool rc;
+
+       va_start(ap, fmt);
+       args = tal_vfmt(ctx, fmt, ap);
+       rc = run_command(ctx, time_ms, output, "gcov %s", args);
+       tal_free(args);
+       return rc;
+}
+
+const char *gcov_unavailable(void *ctx)
+{
+       const char *err = NULL;
+
+#ifdef __GNUC__
+       unsigned int timeleft = default_timeout_ms;
+       char *output;
+
+       if (!run_gcov(ctx, &timeleft, &output, "-h")) {
+               err = tal_fmt(ctx, "No gcov support: %s", output);
+               tal_free(output);
+       }
+#else
+       err = "No coverage support for this compiler";
+#endif
+
+       return err;
+}