X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Fcompulsory_tests%2Fbuild.c;h=7c73f0d4f834c98519dc68ff18420cb935d4d6cc;hb=83cfe17fd85efb7f5d8e8b1edb1f3c28b180a2ce;hp=ec9e6de173aa6a8f040981f73dd051d1bbb7cf23;hpb=304652023042670b3173de0ad5dc0eb7c836618c;p=ccan diff --git a/tools/ccanlint/compulsory_tests/build.c b/tools/ccanlint/compulsory_tests/build.c index ec9e6de1..7c73f0d4 100644 --- a/tools/ccanlint/compulsory_tests/build.c +++ b/tools/ccanlint/compulsory_tests/build.c @@ -33,40 +33,41 @@ static char *obj_list(const struct manifest *m) return list; } -static void *do_build(struct manifest *m, unsigned int *timeleft) +static void do_build(struct manifest *m, + bool keep, + unsigned int *timeleft, + struct score *score) { - char *filename, *err; + char *filename, *errstr; if (list_empty(&m->c_files)) { /* No files? No score, but we "pass". */ - build.total_score = 0; - return NULL; + score->total = 0; + score->pass = true; + return; } - filename = link_objects(m, obj_list(m), &err); - if (filename) { + + filename = link_objects(m, m->basename, false, obj_list(m), &errstr); + if (!filename) { + score->error = "The object file didn't build"; + score_file_error(score, NULL, 0, errstr); + return; + } + + if (keep) { char *realname = talloc_asprintf(m, "%s.o", m->dir); /* We leave this object file around, all built. */ if (!move_file(filename, realname)) - return talloc_asprintf(m, "Failed to rename %s to %s", - filename, realname); - return NULL; + err(1, "Renaming %s to %s", filename, realname); } - return err; -} - -static const char *describe_build(struct manifest *m, void *check_result) -{ - return talloc_asprintf(check_result, - "The object file for the module didn't build:\n" - "%s", (char *)check_result); + score->pass = true; + score->score = score->total; } struct ccanlint build = { .key = "build", .name = "Module can be built from object files", - .total_score = 1, .check = do_build, - .describe = describe_build, .can_run = can_build, };