diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-08-28 18:53:37 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-08-28 18:53:37 +0300 |
commit | 6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2 (patch) | |
tree | fddf0ecdca82199e221231988b58b095bc6fc884 | |
parent | 583de13f5d0f9b80b3ec0cb01e450ead4e8c7ac5 (diff) | |
download | meson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.zip meson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.tar.gz meson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.tar.bz2 |
Detect ObjC versions too.
-rw-r--r-- | environment.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/environment.py b/environment.py index 5161303..717478d 100644 --- a/environment.py +++ b/environment.py @@ -906,16 +906,22 @@ class Environment(): is_cross = False exe_wrap = None try: - p = subprocess.Popen(exelist + ['--version'], stdout=subprocess.PIPE) + p = subprocess.Popen(exelist + ['--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: raise EnvironmentException('Could not execute ObjC compiler "%s"' % ' '.join(exelist)) - out = p.communicate()[0] + (out, err) = p.communicate() out = out.decode() + err = err.decode() + vmatch = re.search(Environment.version_regex, out) + if vmatch: + version = vmatch.group(0) + else: + version = 'unknown version' if (out.startswith('cc ') or 'gcc' in out) and \ 'Free Software Foundation' in out: - return GnuObjCCompiler(exelist, is_cross, exe_wrap) + return GnuObjCCompiler(exelist, version, is_cross, exe_wrap) if 'apple' in out and 'Free Software Foundation' in out: - return GnuObjCCompiler(exelist, is_cross, exe_wrap) + return GnuObjCCompiler(exelist, version, is_cross, exe_wrap) raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"') def detect_objcpp_compiler(self): @@ -928,16 +934,22 @@ class Environment(): is_cross = False exe_wrap = None try: - p = subprocess.Popen(exelist + ['--version'], stdout=subprocess.PIPE) + p = subprocess.Popen(exelist + ['--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: raise EnvironmentException('Could not execute ObjC++ compiler "%s"' % ' '.join(exelist)) - out = p.communicate()[0] + (out, err) = p.communicate() out = out.decode() + err = err.decode() + vmatch = re.search(Environment.version_regex, out) + if vmatch: + version = vmatch.group(0) + else: + version = 'unknown version' if (out.startswith('c++ ') or out.startswith('g++')) and \ 'Free Software Foundation' in out: - return GnuObjCPPCompiler(exelist, is_cross, exe_wrap) + return GnuObjCPPCompiler(exelist, version, is_cross, exe_wrap) if 'apple' in out and 'Free Software Foundation' in out: - return GnuObjCPPCompiler(exelist, is_cross, exe_wrap) + return GnuObjCPPCompiler(exelist, version, is_cross, exe_wrap) raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"') def detect_static_linker(self, compiler): |