]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/tests/tests_compile_coverage.c
tools: Consolidate gcov handling
[ccan] / tools / ccanlint / tests / tests_compile_coverage.c
index ed9f4ce659ce28326c010e626fbed9bec9cae072..c8bc35d93b1ab1fe37320b18fb79f2bb7023ef0b 100644 (file)
 /* Note: we already test safe_mode in run_tests.c */
 static const char *can_run_coverage(struct manifest *m)
 {
-#ifdef __GNUC__
-       unsigned int timeleft = default_timeout_ms;
-       char *output;
+       return gcov_unavailable(m);
+}
+
+static char *cflags_list(const struct manifest *m)
+{
+       unsigned int i;
+       char *ret = tal_strdup(m, cflags);
+
+       char **flags = get_cflags(m, m->dir, get_or_compile_info);
+       for (i = 0; flags[i]; i++)
+               tal_append_fmt(&ret, " %s", flags[i]);
+       return ret;
+}
+
+static char *cflags_list_append(const struct manifest *m, char *iflags)
+{
+       unsigned int i;
 
-       if (!run_command(m, &timeleft, &output, "gcov -h"))
-               return tal_fmt(m, "No gcov support: %s", output);
-       return NULL;
-#else
-       return "No coverage support for this compiler";
-#endif
+       char **flags = get_cflags(m, m->dir, get_or_compile_info);
+       for (i = 0; flags[i]; i++)
+               tal_append_fmt(&iflags, " %s", flags[i]);
+       return iflags;
 }
 
 static void cov_compile(const void *ctx,
@@ -38,6 +50,7 @@ static void cov_compile(const void *ctx,
                        bool link_with_module)
 {
        char *flags = tal_fmt(ctx, "%s %s", cflags, COVERAGE_CFLAGS);
+       flags = cflags_list_append(m, flags);
 
        file->compiled[COMPILE_COVERAGE] = temp_file(ctx, "", file->fullname);
        compile_and_link_async(file, time_ms, file->fullname, ccan_dir,
@@ -58,7 +71,8 @@ static void do_compile_coverage_tests(struct manifest *m,
        struct ccan_file *i;
        struct list_head *h;
        bool ok;
-       char *f = tal_fmt(score, "%s %s", cflags, COVERAGE_CFLAGS);
+       char *f = cflags_list(m);
+       tal_append_fmt(&f, " %s", COVERAGE_CFLAGS);
 
        /* For API tests, we need coverage version of module. */
        if (!list_empty(&m->api_tests)) {