#include <tools/ccanlint/ccanlint.h>
#include <tools/tools.h>
-#include <ccan/talloc/talloc.h>
#include <ccan/str/str.h>
+#include <ccan/tal/path/path.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
return NULL;
}
+static char *cflags_list(const struct manifest *m)
+{
+ unsigned int i;
+ char *ret = tal_strdup(m, cflags);
+
+ char **flags = get_cflags(m, m->dir, get_or_compile_info);
+ for (i = 0; flags[i]; i++)
+ tal_append_fmt(&ret, " %s", flags[i]);
+ return ret;
+}
+
void build_objects(struct manifest *m,
struct score *score, const char *flags,
enum compile_type ctype)
list_for_each(&m->c_files, i, list) {
char *output;
- char *fullfile = talloc_asprintf(m, "%s/%s", m->dir, i->name);
+ char *fullfile = path_join(m, m->dir, i->name);
i->compiled[ctype] = temp_file(m, "", fullfile);
if (!compile_object(score, fullfile, ccan_dir, compiler, flags,
i->compiled[ctype], &output)) {
- talloc_free(i->compiled[ctype]);
+ tal_free(i->compiled[ctype]);
score_file_error(score, i, 0,
"Compiling object files:\n%s",
output);
if (!errors) {
score->pass = true;
score->score = score->total - warnings;
- }
+ } else
+ build_failed = true;
}
static void check_objs_build(struct manifest *m,
unsigned int *timeleft, struct score *score)
{
- build_objects(m, score, cflags, COMPILE_NORMAL);
+ const char *flags;
+
+ flags = cflags_list(m);
+ build_objects(m, score, flags, COMPILE_NORMAL);
}
struct ccanlint objects_build = {
.compulsory = true,
.check = check_objs_build,
.can_run = can_build,
- .needs = "depends_exist"
+ .needs = "depends_exist info_ported"
};
REGISTER_TEST(objects_build);