-char **get_libs(const void *ctx, const char *dir,
- unsigned int *num, char **infofile)
+/* Can return NULL: _info may not support 'libs'. */
+static char **get_one_libs(const void *ctx, const char *dir,
+ char *(*get_info)(const void *ctx, const char *dir))
+{
+ char *cmd, **lines;
+
+ cmd = tal_fmt(ctx, "%s libs", get_info(ctx, dir));
+ lines = lines_from_cmd(cmd, "%s", cmd);
+ /* Strip final NULL. */
+ if (lines)
+ tal_resize(&lines, tal_count(lines)-1);
+ return lines;
+}
+
+/* O(n^2) but n is small. */
+static char **add_deps(char **deps1, char **deps2)
+{
+ unsigned int i, len;
+
+ len = tal_count(deps1);
+
+ for (i = 0; deps2[i]; i++) {
+ if (have_dep(deps1, deps2[i]))
+ continue;
+ tal_resize(&deps1, len + 1);
+ deps1[len-1] = tal_strdup(deps1, deps2[i]);
+ deps1[len++] = NULL;
+ }
+ return deps1;
+}
+
+char **get_libs(const void *ctx, const char *dir, const char *style,
+ char *(*get_info)(const void *ctx, const char *dir))