]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/tests/build_objs.c
Web updates.
[ccan] / tools / ccanlint / tests / build_objs.c
index 199772ab8f1d08614d57eec52b2fea811a9e44fb..2f189e859f25a8b523505609cafd31c429e3a443 100644 (file)
 
 static const char *can_build(struct manifest *m)
 {
-       if (list_empty(&m->c_files))
-               return "No C files in module";
        if (safe_mode)
                return "Safe mode enabled";
        return NULL;
 }
 
-static bool compile_obj(struct ccan_file *c_file, char *objfile, char **report)
-{
-       char *contents;
-
-       contents = run_command(objfile, "cc " CFLAGS " -o %s -c %s",
-                              objfile, c_file->name);
-       if (contents) {
-               if (*report)
-                       *report = talloc_append_string(*report, contents);
-               else
-                       *report = contents;
-               return false;
-       }
-       return true;
-}
-
-static int cleanup_obj(char *objfile)
-{
-       unlink(objfile);
-       return 0;
-}
-
 static void *check_objs_build(struct manifest *m)
 {
        char *report = NULL;
        struct ccan_file *i;
 
-       /* One point for each obj file. */
-       build_objs.total_score = 0;
-       list_for_each(&m->c_files, i, list)
-               build_objs.total_score++;
-
        list_for_each(&m->c_files, i, list) {
-               char *objfile = talloc_strdup(m, i->name);
-               objfile[strlen(objfile)-1] = 'o';
+               char *err;
+
+               /* One point for each obj file. */
+               build_objs.total_score++;
 
-               if (compile_obj(i, objfile, &report))
-                       talloc_set_destructor(objfile, cleanup_obj);
+               i->compiled = compile_object(m, i->name, &err);
+               if (!i->compiled) {
+                       if (report)
+                               report = talloc_append_string(report, err);
+                       else
+                               report = err;
+               }
        }
        return report;
 }
 
 static const char *describe_objs_build(struct manifest *m, void *check_result)
 {
-       return talloc_asprintf(check_result, 
-                              "%s", (char *)check_result);
+       return check_result;
 }
 
 struct ccanlint build_objs = {
        .name = "Module object files can be built",
-       .total_score = 1,
        .check = check_objs_build,
        .describe = describe_objs_build,
        .can_run = can_build,