def run(self, inputFile, outputFile, flags): inputLanguage = ProgrammingLanguage.lookupFile(inputFile) if inputLanguage == ProgrammingLanguage.C: tool = mx_sulong.getGCC() flags.append('-std=gnu99') elif inputLanguage == ProgrammingLanguage.C_PLUS_PLUS: tool = mx_sulong.getGPP() elif inputLanguage == ProgrammingLanguage.FORTRAN: tool = mx_sulong.getGFortran() else: raise Exception('Unsupported input language') return self.runTool([tool, '-S', '-fplugin=' + mx_sulong._dragonEggPath, '-fplugin-arg-dragonegg-emit-ir', '-o', outputFile] + flags + [inputFile], errorMsg='Cannot compile %s with %s' % (inputFile, os.path.basename(tool)))
def getTool(self, inputFile, outputFile): inputLanguage = ProgrammingLanguage.lookupFile(inputFile) if inputLanguage == ProgrammingLanguage.C: if self.gcc is None: self.gcc = mx_sulong.getGCC() return self.gcc, ['-std=gnu99'] elif inputLanguage == ProgrammingLanguage.C_PLUS_PLUS: if self.gpp is None: self.gpp = mx_sulong.getGPP() return self.gpp, [] elif inputLanguage == ProgrammingLanguage.FORTRAN: if self.gfortran is None: self.gfortran = mx_sulong.getGFortran() return self.gfortran, ['-J%s' % os.path.dirname(outputFile)] else: raise Exception('Unsupported input language')