Extracted common functionality to base class.

pull/275/head
Jussi Pakkanen 10 years ago
parent 4dff3f9fb3
commit d76e89f780
  1. 100
      compilers.py

@ -118,8 +118,8 @@ class RunResult():
self.stdout = stdout
self.stderr = stderr
class CCompiler():
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
class Compiler():
def __init__(self, exelist, version):
if type(exelist) == type(''):
self.exelist = [exelist]
elif type(exelist) == type([]):
@ -127,6 +127,16 @@ class CCompiler():
else:
raise TypeError('Unknown argument to CCompiler')
self.version = version
def get_always_args(self):
return []
def get_linker_always_args(self):
return []
class CCompiler(Compiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version)
self.language = 'c'
self.default_suffix = 'c'
self.id = 'unknown'
@ -142,9 +152,6 @@ class CCompiler():
def get_always_args(self):
return []
def get_linker_always_args(self):
return []
def get_warn_args(self, level):
return self.warn_args[level]
@ -539,29 +546,17 @@ class ObjCPPCompiler(CPPCompiler):
if pe.returncode != 0:
raise EnvironmentException('Executables created by ObjC++ compiler %s are not runnable.' % self.name_string())
class MonoCompiler():
class MonoCompiler(Compiler):
def __init__(self, exelist, version):
if type(exelist) == type(''):
self.exelist = [exelist]
elif type(exelist) == type([]):
self.exelist = exelist
else:
raise TypeError('Unknown argument to Mono compiler')
self.version = version
super().__init__(exelist, version)
self.language = 'cs'
self.default_suffix = 'cs'
self.id = 'mono'
self.monorunner = 'mono'
def get_always_args(self):
return []
def get_output_args(self, fname):
return ['-out:' + fname]
def get_linker_always_args(self):
return []
def get_link_args(self, fname):
return ['-r:' + fname]
@ -679,26 +674,14 @@ class MonoCompiler():
def get_buildtype_args(self, buildtype):
return mono_buildtype_args[buildtype]
class JavaCompiler():
class JavaCompiler(Compiler):
def __init__(self, exelist, version):
if type(exelist) == type(''):
self.exelist = [exelist]
elif type(exelist) == type([]):
self.exelist = exelist
else:
raise TypeError('Unknown argument to JavaCompiler')
self.version = version
super().__init__(exelist, version)
self.language = 'java'
self.default_suffix = 'java'
self.id = 'unknown'
self.javarunner = 'java'
def get_always_args(self):
return []
def get_linker_always_args(self):
return []
def get_soname_args(self, shlib_name, path, soversion):
return []
@ -819,14 +802,9 @@ class JavaCompiler():
def has_function(self, funcname, prefix, env):
raise EnvironmentException('Java does not support function checks.')
class ValaCompiler():
class ValaCompiler(Compiler):
def __init__(self, exelist, version):
if isinstance(exelist, str):
self.exelist = [exelist]
elif type(exelist) == type([]):
self.exelist = exelist
else:
raise TypeError('Unknown argument to Vala compiler')
super().__init__(exelist, version)
self.version = version
self.id = 'unknown'
self.language = 'vala'
@ -863,15 +841,9 @@ class ValaCompiler():
suffix = filename.split('.')[-1]
return suffix in ('vala', 'vapi')
class RustCompiler():
class RustCompiler(Compiler):
def __init__(self, exelist, version):
if isinstance(exelist, str):
self.exelist = [exelist]
elif type(exelist) == type([]):
self.exelist = exelist
else:
raise TypeError('Unknown argument to Rust compiler')
self.version = version
super().__init__(exelist, version)
self.id = 'unknown'
self.language = 'rust'
@ -1233,11 +1205,9 @@ class ClangCPPCompiler(CPPCompiler):
# so it might change semantics at any time.
return ['-include-pch', os.path.join (pch_dir, self.get_pch_name (header))]
class FortranCompiler():
def __init__(self, exelist, version,is_cross, exe_wrapper=None):
super().__init__()
self.exelist = exelist
self.version = version
class FortranCompiler(Compiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version)
self.is_cross = is_cross
self.exe_wrapper = exe_wrapper
self.language = 'fortran'
@ -1293,12 +1263,6 @@ end program prog
if pe.returncode != 0:
raise EnvironmentException('Executables created by Fortran compiler %s are not runnable.' % self.name_string())
def get_always_args(self):
return ['-pipe']
def get_linker_always_args(self):
return []
def get_std_warn_args(self, level):
return FortranCompiler.std_warn_args
@ -1368,6 +1332,9 @@ class GnuFortranCompiler(FortranCompiler):
self.gcc_type = gcc_type
self.id = 'gcc'
def get_always_args(self):
return ['-pipe']
class G95FortranCompiler(FortranCompiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version, is_cross, exe_wrapper=None)
@ -1376,6 +1343,9 @@ class G95FortranCompiler(FortranCompiler):
def get_module_outdir_args(self, path):
return ['-fmod='+path]
def get_always_args(self):
return ['-pipe']
class SunFortranCompiler(FortranCompiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version, is_cross, exe_wrapper=None)
@ -1403,9 +1373,6 @@ class IntelFortranCompiler(FortranCompiler):
def get_module_outdir_args(self, path):
return ['-module', path]
def get_always_args(self):
return []
def can_compile(self, src):
suffix = os.path.splitext(src)[1].lower()
if suffix == '.f' or suffix == '.f90':
@ -1425,9 +1392,6 @@ class PathScaleFortranCompiler(FortranCompiler):
def get_module_outdir_args(self, path):
return ['-module', path]
def get_always_args(self):
return []
def can_compile(self, src):
suffix = os.path.splitext(src)[1].lower()
if suffix == '.f' or suffix == '.f90' or suffix == '.f95':
@ -1447,9 +1411,6 @@ class PGIFortranCompiler(FortranCompiler):
def get_module_outdir_args(self, path):
return ['-module', path]
def get_always_args(self):
return []
def can_compile(self, src):
suffix = os.path.splitext(src)[1].lower()
if suffix == '.f' or suffix == '.f90' or suffix == '.f95':
@ -1470,9 +1431,6 @@ class Open64FortranCompiler(FortranCompiler):
def get_module_outdir_args(self, path):
return ['-module', path]
def get_always_args(self):
return []
def can_compile(self, src):
suffix = os.path.splitext(src)[1].lower()
if suffix == '.f' or suffix == '.f90' or suffix == '.f95':

Loading…
Cancel
Save