X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Fcompulsory_tests%2Fcompile_tests.c;h=e633facd794a74389d52e8e4b41baa1a417e4799;hp=a614adb3ea5df1cff665d554ed35260edf42f1ac;hb=fb4c4c3ddc24772f71a64ec02d2c9ddaeb6e9f6b;hpb=f952b88b36e3803370825fb43385f1a42aa24b64;ds=sidebyside diff --git a/tools/ccanlint/compulsory_tests/compile_tests.c b/tools/ccanlint/compulsory_tests/compile_tests.c index a614adb3..e633facd 100644 --- a/tools/ccanlint/compulsory_tests/compile_tests.c +++ b/tools/ccanlint/compulsory_tests/compile_tests.c @@ -40,8 +40,10 @@ static char *obj_list(const struct manifest *m, bool link_with_module) list = talloc_asprintf_append(list, " %s.o", m->dir); /* Other ccan modules. */ - list_for_each(&m->dep_objs, i, list) - list = talloc_asprintf_append(list, " %s", i->name); + list_for_each(&m->dep_dirs, i, list) { + if (i->compiled) + list = talloc_asprintf_append(list, " %s", i->compiled); + } return list; } @@ -58,18 +60,23 @@ static char *lib_list(const struct manifest *m) } static char *compile(const void *ctx, - struct manifest *m, struct ccan_file *file, bool fail, - bool link_with_module) + struct manifest *m, + struct ccan_file *file, + bool fail, + bool link_with_module, + bool keep) { char *errmsg; - file->compiled = compile_and_link(ctx, file->fullname, ccan_dir, - obj_list(m, link_with_module), - fail ? "-DFAIL" : "", - lib_list(m), &errmsg); - if (!file->compiled) + file->compiled = maybe_temp_file(ctx, "", keep, file->fullname); + errmsg = compile_and_link(ctx, file->fullname, ccan_dir, + obj_list(m, link_with_module), + fail ? "-DFAIL" : "", + lib_list(m), file->compiled); + if (errmsg) { + talloc_free(file->compiled); return errmsg; - talloc_steal(ctx, file->compiled); + } return NULL; } @@ -80,7 +87,9 @@ struct compile_tests_result { const char *output; }; -static void *do_compile_tests(struct manifest *m) +static void *do_compile_tests(struct manifest *m, + bool keep, + unsigned int *timeleft) { struct list_head *list = talloc(m, struct list_head); char *cmdout; @@ -91,7 +100,7 @@ static void *do_compile_tests(struct manifest *m) list_for_each(&m->compile_ok_tests, i, list) { compile_tests.total_score++; - cmdout = compile(list, m, i, false, false); + cmdout = compile(list, m, i, false, false, keep); if (cmdout) { res = talloc(list, struct compile_tests_result); res->filename = i->name; @@ -103,7 +112,7 @@ static void *do_compile_tests(struct manifest *m) list_for_each(&m->run_tests, i, list) { compile_tests.total_score++; - cmdout = compile(m, m, i, false, false); + cmdout = compile(m, m, i, false, false, keep); if (cmdout) { res = talloc(list, struct compile_tests_result); res->filename = i->name; @@ -115,7 +124,7 @@ static void *do_compile_tests(struct manifest *m) list_for_each(&m->api_tests, i, list) { compile_tests.total_score++; - cmdout = compile(m, m, i, false, true); + cmdout = compile(m, m, i, false, true, keep); if (cmdout) { res = talloc(list, struct compile_tests_result); res->filename = i->name; @@ -127,7 +136,7 @@ static void *do_compile_tests(struct manifest *m) list_for_each(&m->compile_fail_tests, i, list) { compile_tests.total_score++; - cmdout = compile(list, m, i, false, false); + cmdout = compile(list, m, i, false, false, false); if (cmdout) { res = talloc(list, struct compile_tests_result); res->filename = i->name; @@ -135,7 +144,7 @@ static void *do_compile_tests(struct manifest *m) res->output = talloc_steal(res, cmdout); list_add_tail(list, &res->list); } else { - cmdout = compile(list, m, i, true, false); + cmdout = compile(list, m, i, true, false, false); if (!cmdout) { res = talloc(list, struct compile_tests_result); res->filename = i->name; @@ -182,8 +191,8 @@ static const char *describe_compile_tests(struct manifest *m, } struct ccanlint compile_tests = { - .key = "compile", - .name = "Compile tests succeed", + .key = "compile-tests", + .name = "Module tests compile", .score = score_compile_tests, .check = do_compile_tests, .describe = describe_compile_tests,