def shlink_task(self, name): objects = [tsk.outputs[0] for tsk in self.object_tasks] target = os.path.join(self.env["BLDDIR"], name + ".so") ensure_dir(target) task = Task("cc_shlink", inputs=objects, outputs=target) task.gen = self task.env = self.env task.func = cshlink task.env_vars = cshlink_vars return [task]
def pycxx_task(self, node): base = self.env["CXX_OBJECT_FMT"] % node.name target = node.parent.declare(base) ensure_dir(target.abspath()) task = Task("pycxx", inputs=[node], outputs=[target]) task.gen = self task.env_vars = pycxx_vars task.env = self.env task.func = pycxx return [task]
def fcompile_task(self, node): base = "%s.o" % node.name target = node.parent.declare(base) ensure_dir(target.abspath()) task = Task("f77", inputs=[node], outputs=[target]) task.gen = self task.env_vars = f77_vars task.env = self.env task.func = f77_compile self.object_tasks.append(task) return [task]
def static_link_task(self, name): objects = [tsk.outputs[0] for tsk in self.object_tasks] folder, base = os.path.split(name) tmp = folder + os.path.sep + self.env["STATICLIB_FMT"] % base target = self.bld.bld_root.declare(tmp) ensure_dir(target.abspath()) task = Task("cc_link", inputs=objects, outputs=[target]) task.gen = self task.env = self.env task.func = clink task.env_vars = clink_vars return [task]
def ccompile_task(self, node): base = self.env["CC_OBJECT_FMT"] % node.name target = node.parent.declare(base) ensure_dir(target.abspath()) task = Task("cc", inputs=[node], outputs=[target]) task.gen = self task.env_vars = cc_vars #print find_deps("foo.c", ["."]) #task.scan = lambda : find_deps(node, ["."]) #task.deps.extend(task.scan()) task.env = self.env task.func = ccompile return [task]
def cython_task(self, node): out = node.change_ext(".c") target = node.parent.declare(out.name) ensure_dir(target.name) task = Task("cython", inputs=[node], outputs=[target]) task.gen = self task.env_vars = [] task.env = self.env self.env["CYTHON_INCPATH"] = ["-I%s" % p for p in self.env["CYTHON_CPPPATH"]] task.func = compile_fun("cython", "${CYTHON} ${SRC} -o ${TGT} ${CYTHON_INCPATH}", False)[0] return [task]
def ccprogram_task(self, name): objects = [tsk.outputs[0] for tsk in self.object_tasks] def declare_target(): folder, base = os.path.split(name) tmp = folder + os.path.sep + self.env["PROGRAM_FMT"] % base return self.bld.bld_root.declare(tmp) target = declare_target() ensure_dir(target.abspath()) task = Task("ccprogram", inputs=objects, outputs=[target]) task.gen = self task.env = self.env task.func = ccprogram task.env_vars = ccprogram_vars return [task]
def pylink_task(self, name): objects = [tsk.outputs[0] for tsk in self.object_tasks] if len(objects) < 1: warnings.warn("task %s has no inputs !" % name) def declare_target(): folder, base = os.path.split(name) tmp = folder + os.path.sep + self.env["PYEXT_FMT"] % base return self.bld.src_root.declare(tmp) target = declare_target() ensure_dir(target.abspath()) task = Task("pylink", inputs=objects, outputs=[target]) task.gen = self task.func = pylink task.env_vars = pylink_vars self.link_task = task return [task]