Author: Philip Jenvey <pjen...@underboss.org>
Branch: py3k
Changeset: r63764:d3a9a3b856c4
Date: 2013-04-29 21:37 -0700
http://bitbucket.org/pypy/pypy/changeset/d3a9a3b856c4/

Log:    merge default

diff --git a/pypy/module/sys/version.py b/pypy/module/sys/version.py
--- a/pypy/module/sys/version.py
+++ b/pypy/module/sys/version.py
@@ -15,13 +15,9 @@
 
 if platform.name == 'msvc':
     COMPILER_INFO = 'MSC v.%d 32 bit' % (platform.version * 10 + 600)
-elif platform.cc is not None and platform.cc.startswith('gcc'):
-    out = platform.execute(platform.cc, '--version').out
-    match = re.search(' (\d+\.\d+(\.\d+)*)', out)
-    if match:
-        COMPILER_INFO = "GCC " + match.group(1)
-    else:
-        COMPILER_INFO = "GCC"
+elif platform.cc is not None and platform.cc.startswith(('gcc', 'clang')):
+    from rpython.rtyper.tool import rffi_platform
+    COMPILER_INFO = 'GCC ' + rffi_platform.getdefinedstring('__VERSION__', '')
 else:
     COMPILER_INFO = ""
 
diff --git a/rpython/rtyper/tool/rffi_platform.py 
b/rpython/rtyper/tool/rffi_platform.py
--- a/rpython/rtyper/tool/rffi_platform.py
+++ b/rpython/rtyper/tool/rffi_platform.py
@@ -61,6 +61,12 @@
         DEFINED = DefinedConstantInteger(macro)
     return configure(CConfig)['DEFINED']
 
+def getdefinedstring(macro, c_header_source):
+    class CConfig:
+        _compilation_info_ = eci_from_header(c_header_source)
+        DEFINED = DefinedConstantString(macro)
+    return configure(CConfig)['DEFINED']
+
 def getintegerfunctionresult(function, args=None, c_header_source='', 
includes=[]):
     class CConfig:
         _compilation_info_ = eci_from_header(c_header_source)
diff --git a/rpython/rtyper/tool/test/test_rffi_platform.py 
b/rpython/rtyper/tool/test/test_rffi_platform.py
--- a/rpython/rtyper/tool/test/test_rffi_platform.py
+++ b/rpython/rtyper/tool/test/test_rffi_platform.py
@@ -126,6 +126,13 @@
     value = rffi_platform.getdefineddouble('BLAH', '#define BLAH (double)0/0')
     assert isnan(value)
 
+def test_defined_constant_string():
+    value = rffi_platform.getdefinedstring('MCDONC', '')
+    assert value is None
+    value = rffi_platform.getdefinedstring('RAYDEO',
+                                           '#define RAYDEO "Michael Merickel"')
+    assert value == 'Michael Merickel'
+
 def test_getintegerfunctionresult():
     func = 'int sum(int a, int b) {return a + b;}'
     value = rffi_platform.getintegerfunctionresult('sum', [6, 7], func)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to