aboutsummaryrefslogtreecommitdiff
path: root/compilers.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-10-04 02:57:07 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-10-04 02:57:07 +0300
commitd76e89f78044698a31ee422601206eef131f010c (patch)
tree827879659a5251663bb35bf638a0d00d224a4812 /compilers.py
parent4dff3f9fb3efb1f9c32484cbdc2f0668de782913 (diff)
downloadmeson-d76e89f78044698a31ee422601206eef131f010c.zip
meson-d76e89f78044698a31ee422601206eef131f010c.tar.gz
meson-d76e89f78044698a31ee422601206eef131f010c.tar.bz2
Extracted common functionality to base class.
Diffstat (limited to 'compilers.py')
-rw-r--r--compilers.py100
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':