X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Fcompulsory_tests%2Fcompile_tests.c;h=1559bd182a53792da2ab551b4fbcadf87fc23dc3;hp=c6527ed51a2fbc5145e07b8288211ced9373f57a;hb=29c59e05146152bb2f3561152a8cfa63ce2d37a7;hpb=1d893107b3481639bf1fc6f96972457ac6e828f7 diff --git a/tools/ccanlint/compulsory_tests/compile_tests.c b/tools/ccanlint/compulsory_tests/compile_tests.c index c6527ed5..1559bd18 100644 --- a/tools/ccanlint/compulsory_tests/compile_tests.c +++ b/tools/ccanlint/compulsory_tests/compile_tests.c @@ -36,8 +36,10 @@ static char *obj_list(const struct manifest *m, bool link_with_module) list_for_each(&m->other_test_c_files, i, list) list = talloc_asprintf_append(list, " %s", i->compiled); + /* Our own object files. */ if (link_with_module) - list = talloc_asprintf_append(list, " %s.o", m->dir); + list_for_each(&m->c_files, i, list) + list = talloc_asprintf_append(list, " %s", i->compiled); /* Other ccan modules. */ list_for_each(&m->dep_dirs, i, list) { @@ -60,18 +62,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; } @@ -82,7 +89,9 @@ struct compile_tests_result { const char *output; }; -static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) +static void *do_compile_tests(struct manifest *m, + bool keep, + unsigned int *timeleft) { struct list_head *list = talloc(m, struct list_head); char *cmdout; @@ -93,7 +102,7 @@ static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) 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; @@ -105,7 +114,7 @@ static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) 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; @@ -117,7 +126,7 @@ static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) 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; @@ -129,7 +138,7 @@ static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) 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; @@ -137,7 +146,7 @@ static void *do_compile_tests(struct manifest *m, unsigned int *timeleft) 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; @@ -184,7 +193,7 @@ static const char *describe_compile_tests(struct manifest *m, } struct ccanlint compile_tests = { - .key = "compile", + .key = "compile-tests", .name = "Module tests compile", .score = score_compile_tests, .check = do_compile_tests, @@ -192,4 +201,4 @@ struct ccanlint compile_tests = { .can_run = can_build, }; -REGISTER_TEST(compile_tests, &compile_test_helpers, NULL); +REGISTER_TEST(compile_tests, &compile_test_helpers, &build_objs, NULL);