aboutsummaryrefslogtreecommitdiff
path: root/environment.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-12-12 01:08:11 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2015-12-12 01:08:11 +0200
commit8d8e25118bb7cb811bc152d95489d721d6e03dcd (patch)
treeba5b20f899bcf3bc7452648b284a2be158aae360 /environment.py
parentba6191864d4a4461131081fef918796604a9ef28 (diff)
parent161d633f362a316e4711b8ab524d3688cd6847ef (diff)
downloadmeson-8d8e25118bb7cb811bc152d95489d721d6e03dcd.zip
meson-8d8e25118bb7cb811bc152d95489d721d6e03dcd.tar.gz
meson-8d8e25118bb7cb811bc152d95489d721d6e03dcd.tar.bz2
Merge pull request #330 from mesonbuild/swift
Added Swift support.
Diffstat (limited to 'environment.py')
-rw-r--r--environment.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/environment.py b/environment.py
index c92eb87..308a21c 100644
--- a/environment.py
+++ b/environment.py
@@ -19,6 +19,10 @@ import configparser
build_filename = 'meson.build'
+class EnvironmentException(coredata.MesonException):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+
def find_coverage_tools():
gcovr_exe = 'gcovr'
lcov_exe = 'lcov'
@@ -457,6 +461,23 @@ class Environment():
return RustCompiler(exelist, version)
raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"')
+ def detect_swift_compiler(self):
+ exelist = ['swiftc']
+ try:
+ p = subprocess.Popen(exelist + ['-v'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ except OSError:
+ raise EnvironmentException('Could not execute Swift compiler "%s"' % ' '.join(exelist))
+ (_, err) = p.communicate()
+ err = err.decode()
+ vmatch = re.search(Environment.version_regex, err)
+ if vmatch:
+ version = vmatch.group(0)
+ else:
+ version = 'unknown version'
+ if 'Swift' in err:
+ return SwiftCompiler(exelist, version)
+ raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"')
+
def detect_static_linker(self, compiler):
if compiler.is_cross:
linker = self.cross_info.config['binaries']['ar']