- foreach_ptr(list, &compulsory_tests, &normal_tests)
- list_for_each(list, i, list)
- if (!depends_on(i, target))
- i->skip = "not relevant to target";
+ if (!get_token(line, "#"))
+ continue;
+ if (!get_token(line, "define"))
+ continue;
+ sym = get_symbol_token(lines, line);
+ if (streq(sym, "CCAN_COMPILER") && !compiler) {
+ compiler = demangle_string(lines[i]);
+ if (!compiler)
+ errx(1, "%s:%u:could not parse CCAN_COMPILER",
+ fname, i+1);
+ if (verbose > 1)
+ printf("%s: compiler set to '%s'\n",
+ fname, compiler);
+ } else if (streq(sym, "CCAN_CFLAGS") && !cflags) {
+ cflags = demangle_string(lines[i]);
+ if (!cflags)
+ errx(1, "%s:%u:could not parse CCAN_CFLAGS",
+ fname, i+1);
+ if (verbose > 1)
+ printf("%s: compiler flags set to '%s'\n",
+ fname, cflags);
+ }
+ }
+ if (!compiler)
+ compiler = CCAN_COMPILER;
+ if (!cflags)
+ compiler = CCAN_CFLAGS;
+}
+
+static char *opt_set_const_charp(const char *arg, const char **p)
+{
+ return opt_set_charp(arg, cast_const2(char **, p));
+}
+
+static bool should_run_ccanlint(const char *name, struct ccanlint *c,
+ void *unused)
+{
+ c->should_run = true;
+ return true;
+}
+
+static bool should_run_node(struct dgraph_node *to, void *unused)
+{
+ should_run_ccanlint(NULL, container_of(to, struct ccanlint, node),
+ unused);
+ return true;
+}
+
+static char *add_target(const char *arg, bool *targeting)
+{
+ struct ccanlint *c = find_test(arg);
+ if (!c)
+ return talloc_asprintf(NULL, "Unknown test %s", arg);
+
+ dgraph_traverse_to(&c->node, should_run_node, NULL);
+ *targeting = true;
+ return NULL;