summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@osg.samsung.com>2017-08-25 15:16:17 -0300
committerJussi Pakkanen <jpakkane@gmail.com>2018-02-25 01:10:52 +0200
commitc48b9594ff1ffc9dacdcb0f4fca6f459b95989f5 (patch)
treebc57b20c3714fc7cd024cdb63fce71b3669914fa /mesonbuild/compilers
parente2a4cff76f35b7c666a0bcaa087bcdef579ef19f (diff)
downloadmeson-c48b9594ff1ffc9dacdcb0f4fca6f459b95989f5.tar.gz
Add support for Visual Studio csc c# compiler
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/__init__.py3
-rw-r--r--mesonbuild/compilers/cs.py38
2 files changed, 34 insertions, 7 deletions
diff --git a/mesonbuild/compilers/__init__.py b/mesonbuild/compilers/__init__.py
index f09f25277..84c87fb09 100644
--- a/mesonbuild/compilers/__init__.py
+++ b/mesonbuild/compilers/__init__.py
@@ -67,6 +67,7 @@ __all__ = [
'JavaCompiler',
'LLVMDCompiler',
'MonoCompiler',
+ 'VisualStudioCsCompiler',
'NAGFortranCompiler',
'ObjCCompiler',
'ObjCPPCompiler',
@@ -127,7 +128,7 @@ from .cpp import (
IntelCPPCompiler,
VisualStudioCPPCompiler,
)
-from .cs import MonoCompiler
+from .cs import MonoCompiler, VisualStudioCsCompiler
from .d import (
DCompiler,
DmdDCompiler,
diff --git a/mesonbuild/compilers/cs.py b/mesonbuild/compilers/cs.py
index dd7a433d9..6d4811b38 100644
--- a/mesonbuild/compilers/cs.py
+++ b/mesonbuild/compilers/cs.py
@@ -15,15 +15,16 @@
import os.path, subprocess
from ..mesonlib import EnvironmentException
+from ..mesonlib import is_windows
from .compilers import Compiler, mono_buildtype_args
-class MonoCompiler(Compiler):
- def __init__(self, exelist, version, **kwargs):
+class CsCompiler(Compiler):
+ def __init__(self, exelist, version, id, runner=None):
self.language = 'cs'
- super().__init__(exelist, version, **kwargs)
- self.id = 'mono'
- self.monorunner = 'mono'
+ super().__init__(exelist, version)
+ self.id = id
+ self.runner = runner
def get_display_language(self):
return 'C sharp'
@@ -96,7 +97,10 @@ class MonoCompiler(Compiler):
pc.wait()
if pc.returncode != 0:
raise EnvironmentException('Mono compiler %s can not compile programs.' % self.name_string())
- cmdlist = [self.monorunner, obj]
+ if self.runner:
+ cmdlist = [self.runner, obj]
+ else:
+ cmdlist = [os.path.join(work_dir, obj)]
pe = subprocess.Popen(cmdlist, cwd=work_dir)
pe.wait()
if pe.returncode != 0:
@@ -107,3 +111,25 @@ class MonoCompiler(Compiler):
def get_buildtype_args(self, buildtype):
return mono_buildtype_args[buildtype]
+
+
+class MonoCompiler(CsCompiler):
+ def __init__(self, exelist, version):
+ super().__init__(exelist, version, 'mono',
+ 'mono')
+
+
+class VisualStudioCsCompiler(CsCompiler):
+ def __init__(self, exelist, version):
+ super().__init__(exelist, version, 'csc')
+
+ def get_buildtype_args(self, buildtype):
+ res = mono_buildtype_args[buildtype]
+ if not is_windows():
+ tmp = []
+ for flag in res:
+ if flag == '-debug':
+ flag = '-debug:portable'
+ tmp.append(flag)
+ res = tmp
+ return res