Author: Philip Jenvey <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit