X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Fexamples_compile.c;h=5086239396840d524c9c4df2a3c613bb96bd14ca;hp=b10940ae8a3bb4c112ed4cd1fcbc726c2e88410e;hb=HEAD;hpb=e0529e15e0c7f9251af5465ef03f208d279affc1 diff --git a/tools/ccanlint/tests/examples_compile.c b/tools/ccanlint/tests/examples_compile.c index b10940ae..50862393 100644 --- a/tools/ccanlint/tests/examples_compile.c +++ b/tools/ccanlint/tests/examples_compile.c @@ -126,6 +126,17 @@ static char *example_lib_list(const void *ctx, struct manifest **deps) return list; } +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; +} + /* FIXME: Test with reduced features! */ static bool compile(const void *ctx, struct manifest *m, @@ -133,11 +144,12 @@ static bool compile(const void *ctx, char **output) { struct manifest **deps = get_example_deps(m, file); + const char *flags = cflags_list(m); file->compiled[COMPILE_NORMAL] = temp_file(ctx, "", file->fullname); if (!compile_and_link(ctx, file->fullname, ccan_dir, example_obj_list(file, deps), - compiler, cflags, + compiler, flags, example_lib_list(file, deps), file->compiled[COMPILE_NORMAL], output)) { @@ -347,7 +359,8 @@ static char *strip_comment(const void *ctx, const char *orig_line) static char *mangle(struct manifest *m, char **lines) { char *ret, *use_funcs = NULL, *why; - bool in_function = false, fake_function = false, has_main = false; + bool in_function = false, fake_function = false, has_main = false, + fake_main = false; unsigned int i; ret = tal_fmt(m, @@ -381,6 +394,7 @@ static char *mangle(struct manifest *m, char **lines) fake_function = true; in_function = true; has_main = true; + fake_main = true; } else tal_append_fmt(&ret, "/* The example %s, so didn't wrap in main() */\n", @@ -417,6 +431,7 @@ static char *mangle(struct manifest *m, char **lines) /* This implies we start a function here. */ start_main(&ret, why); has_main = true; + fake_main = true; fake_function = true; in_function = true; } @@ -430,8 +445,9 @@ static char *mangle(struct manifest *m, char **lines) if (!has_main) { ret = tal_strcat(m, take(ret), "/* Need a main to link successfully. */\n" - "int main(void)\n{\n"); + "int main(int argc, char *argv[])\n{\n"); fake_function = true; + fake_main = true; } if (use_funcs) { @@ -448,8 +464,13 @@ static char *mangle(struct manifest *m, char **lines) tal_append_fmt(&ret, " %s\n", use_funcs); } + if (fake_main) + ret = tal_strcat(m, take(ret), + "(void)argc; (void)argv;\n"); + if (fake_function) - ret = tal_strcat(m, take(ret), "return 0;\n}\n"); + ret = tal_strcat(m, take(ret), + "return 0;\n}\n"); return ret; } @@ -473,7 +494,7 @@ static struct ccan_file *mangle_example(struct manifest *m, return NULL; contents = mangle(m, lines); - if (write(fd, contents, strlen(contents)) != strlen(contents)) { + if (write(fd, contents, strlen(contents)) != (int)strlen(contents)) { close(fd); return NULL; } @@ -538,7 +559,7 @@ static unsigned int try_compiling(struct manifest *m, } static void build_examples(struct manifest *m, - unsigned int *timeleft, struct score *score) + unsigned int *timeleft UNNEEDED, struct score *score) { struct ccan_file *i; char **prev = NULL;