def _create_binary_conf_taskgen(conf, name, body, builder, headers=None, extension=".c"): if headers is not None: head = "\n".join(["#include <%s>" % h for h in headers]) else: head = "" code = "\n".join([c for c in [head, body]]) sources = [create_file(conf, code, name, extension)] task_gen = CompiledTaskGen("conf", conf, sources, name) task_gen.env.update(copy.deepcopy(conf.env)) task_gen.env["INCPATH"] = "" apply_libs(task_gen) apply_libdir(task_gen) tasks = task_gen.process() tasks.extend(builder(task_gen, name)) for t in tasks: t.disable_output = True t.log = conf.log succeed = False explanation = None try: run_tasks(conf, tasks) succeed = True except TaskRunFailure, e: msg = str(e) explanation = unicode(msg).encode("utf-8")
def create_link_conf_taskgen(conf, name, body, headers, msg, extension=".c"): if headers: head = "\n".join(["#include <%s>" % h for h in headers]) else: head = "" code = "\n".join([c for c in [head, body]]) sources = [create_file(conf, code, name, extension)] task_gen = CompiledTaskGen("conf", sources, name) task_gen.env.update(copy.deepcopy(conf.env)) task_gen.env["INCPATH"] = "" apply_libs(task_gen) apply_libdir(task_gen) tasks = create_tasks(task_gen, sources) tasks.extend(link_task(task_gen, name)) for t in tasks: t.disable_output = True sys.stderr.write(msg + "... ") succeed = False explanation = None try: run_tasks(conf, tasks) succeed = True sys.stderr.write("yes\n") except TaskRunFailure, e: sys.stderr.write("no\n") explanation = str(e)
def _program(self, task_gen, name): apply_libdir(task_gen) tasks = task_gen.process() ltask = fprogram_task(task_gen, name) tasks.extend(ltask) for t in tasks: t.env = task_gen.env task_gen.link_task = ltask return tasks
def program(self, name, sources, env=None): sources = [self.ctx.src_root.find_resource(s) for s in sources] task_gen = CompiledTaskGen("cxxprogram", self.ctx, sources, name) task_gen.env = _merge_env(self.env, env) apply_cpppath(task_gen) apply_libdir(task_gen) apply_libs(task_gen) tasks = task_gen.process() ltask = cxxprogram_task(task_gen, name) tasks.extend(ltask) for t in tasks: t.env = task_gen.env self.ctx.tasks.extend(tasks) self.link_task = ltask outputs = [] for t in ltask: outputs.extend(t.outputs) return outputs
def program(self, name, sources, env=None): sources = [self.ctx.src_root.find_resource(s) for s in sources] task_gen = CompiledTaskGen("cxxprogram", self.ctx, sources, name) task_gen.env = yaku.tools._merge_env(self.env, env) apply_define(task_gen) apply_cpppath(task_gen) apply_libdir(task_gen) apply_libs(task_gen) tasks = task_gen.process() ltask = cxxprogram_task(task_gen, name) tasks.extend(ltask) for t in tasks: t.env = task_gen.env self.ctx.tasks.extend(tasks) self.link_task = ltask outputs = [] for t in ltask: outputs.extend(t.outputs) return outputs