diff options
Diffstat (limited to 'compilers.py')
-rw-r--r-- | compilers.py | 100 |
1 files changed, 29 insertions, 71 deletions
diff --git a/compilers.py b/compilers.py index f817161..9c78932 100644 --- a/compilers.py +++ b/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': |