aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-08-28 18:53:37 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2013-08-28 18:53:37 +0300
commit6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2 (patch)
treefddf0ecdca82199e221231988b58b095bc6fc884
parent583de13f5d0f9b80b3ec0cb01e450ead4e8c7ac5 (diff)
downloadmeson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.zip
meson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.tar.gz
meson-6a6f0d1d84fd914ab6e20e57f6f0c1c047ef34e2.tar.bz2
Detect ObjC versions too.
-rw-r--r--environment.py28
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):