diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-12 01:08:11 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-12 01:08:11 +0200 |
commit | 8d8e25118bb7cb811bc152d95489d721d6e03dcd (patch) | |
tree | ba5b20f899bcf3bc7452648b284a2be158aae360 /environment.py | |
parent | ba6191864d4a4461131081fef918796604a9ef28 (diff) | |
parent | 161d633f362a316e4711b8ab524d3688cd6847ef (diff) | |
download | meson-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.py | 21 |
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'] |