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