예제 #1
0
    def doCompile(self, message):
        task_folder = message['task_folder']
        task_data = message['task_data']
        cc_type = task_data['type']
        argv = task_data['argv']

        with util.FolderChanger(task_folder):
            p, out, err = util.Execute(argv)
            if cc_type == 'gcc':
                err, deps = util.ParseGCCDeps(err)
            elif cc_type == 'msvc':
                out, deps = util.ParseMSVCDeps(self.vars, out)
            elif cc_type == 'sun':
                err, deps = util.ParseSunDeps(err)
            elif cc_type == 'fxc':
                out, deps = util.ParseFXCDeps(out)
            else:
                raise Exception('unknown compiler type')

            paths = self.rewriteDeps(deps)

        reply = {
            'ok': p.returncode == 0,
            'cmdline': self.task_argv_debug(message),
            'stdout': out,
            'stderr': err,
            'deps': paths,
        }
        return reply
예제 #2
0
    def parseDependencies(self, tools_env, out, err, dep_type, dep_info):
        if dep_type == 'md':
            with open(dep_info) as fp:
                deps = make_parser.ParseDependencyFile(dep_info, fp)
        elif dep_type == 'gcc':
            err, deps = util.ParseGCCDeps(err)
        elif dep_type == 'msvc':
            inclusion_pattern = GetMsvcInclusionPattern(self.vars, tools_env)
            out, deps = util.ParseMSVCDeps(out, inclusion_pattern)
        elif dep_type == 'fxc':
            out, deps = util.ParseFXCDeps(out)
        else:
            raise Exception('unknown dependency type')

        paths = self.rewriteDeps(deps)
        return out, err, paths
예제 #3
0
파일: task.py 프로젝트: peace-maker/ambuild
    def doCompile(self, message):
        task_folder = message['task_folder']
        task_data = message['task_data']
        tools_env = message['task_tools_env']
        cc_type = task_data['type']
        argv = task_data['argv']

        env = None
        if tools_env is not None:
            if tools_env.env_cmds is not None:
                env = util.BuildEnv(tools_env.env_cmds)
            if 'cl' in tools_env.tools:
                argv[0] = tools_env.tools['cl']

        with util.FolderChanger(task_folder):
            p, out, err = util.Execute(argv, env=env)
            if cc_type == 'gcc':
                err, deps = util.ParseGCCDeps(err)
            elif cc_type == 'msvc':
                inclusion_pattern = GetMsvcInclusionPattern(
                    self.vars, tools_env)
                out, deps = util.ParseMSVCDeps(out, inclusion_pattern)
            elif cc_type == 'sun':
                err, deps = util.ParseSunDeps(err)
            elif cc_type == 'fxc':
                out, deps = util.ParseFXCDeps(out)
            else:
                raise Exception('unknown compiler type')

            paths = self.rewriteDeps(deps)

        reply = {
            'ok': p.returncode == 0,
            'cmdline': self.task_argv_debug(message),
            'stdout': out,
            'stderr': err,
            'deps': paths,
        }
        return reply