#include <err.h>
#include <string.h>
#include <ctype.h>
+#include "build.h"
static const char *can_build(struct manifest *m)
{
return NULL;
}
-static void check_objs_build(struct manifest *m,
- bool keep,
- unsigned int *timeleft, struct score *score)
+void build_objects(struct manifest *m,
+ bool keep, struct score *score, const char *flags,
+ enum compile_type ctype)
{
struct ccan_file *i;
bool errors = false, warnings = false;
char *output;
char *fullfile = talloc_asprintf(m, "%s/%s", m->dir, i->name);
- i->compiled = maybe_temp_file(m, "", keep, fullfile);
- if (!compile_object(score, fullfile, ccan_dir, "", i->compiled,
- &output)) {
- talloc_free(i->compiled);
- score->error = "Compiling object files";
- score_file_error(score, i, 0, output);
+ i->compiled[ctype] = maybe_temp_file(m, "", keep, fullfile);
+ if (!compile_object(score, fullfile, ccan_dir, compiler, flags,
+ i->compiled[ctype], &output)) {
+ talloc_free(i->compiled[ctype]);
+ score_file_error(score, i, 0,
+ "Compiling object files:\n%s",
+ output);
errors = true;
} else if (!streq(output, "")) {
- score->error = "Compiling object files gave warnings";
- score_file_error(score, i, 0, output);
+ score_file_error(score, i, 0,
+ "Compiling object files gave"
+ " warnings:\n%s",
+ output);
warnings = true;
}
}
}
}
+static void check_objs_build(struct manifest *m,
+ bool keep,
+ unsigned int *timeleft, struct score *score)
+{
+ build_objects(m, keep, score, cflags, COMPILE_NORMAL);
+}
+
struct ccanlint objects_build = {
.key = "objects_build",
.name = "Module object files can be built",