[pypy-svn] r50474 - in pypy/dist/pypy/rpython/tool: . test
arigo at codespeak.net
arigo at codespeak.net
Wed Jan 9 22:56:22 CET 2008
Author: arigo
Date: Wed Jan 9 22:56:21 2008
New Revision: 50474
Modified:
pypy/dist/pypy/rpython/tool/rffi_platform.py
pypy/dist/pypy/rpython/tool/test/test_rffi_platform.py
Log:
Add rffi_platform.check_eci() that just checks if a set of includes
and libraries compiles and links successfully or not.
Modified: pypy/dist/pypy/rpython/tool/rffi_platform.py
==============================================================================
--- pypy/dist/pypy/rpython/tool/rffi_platform.py (original)
+++ pypy/dist/pypy/rpython/tool/rffi_platform.py Wed Jan 9 22:56:21 2008
@@ -48,6 +48,13 @@
HAS = Has(name)
return configure(CConfig)['HAS']
+def check_eci(eci):
+ """Check if a given ExternalCompilationInfo compiles and links."""
+ class CConfig:
+ _compilation_info_ = eci
+ WORKS = Works()
+ return configure(CConfig)['WORKS']
+
def sizeof(name, eci, **kwds):
class CConfig:
_compilation_info_ = eci
@@ -421,6 +428,10 @@
def question(self, ask_gcc):
return ask_gcc(self.name + ';')
+class Works(CConfigSingleEntry):
+ def question(self, ask_gcc):
+ return ask_gcc("")
+
class SizeOf(CConfigEntry):
"""An entry in a CConfig class that stands for
some external opaque type
Modified: pypy/dist/pypy/rpython/tool/test/test_rffi_platform.py
==============================================================================
--- pypy/dist/pypy/rpython/tool/test/test_rffi_platform.py (original)
+++ pypy/dist/pypy/rpython/tool/test/test_rffi_platform.py Wed Jan 9 22:56:21 2008
@@ -195,5 +195,11 @@
# has() should also not crash if it is given an invalid #include
assert not rffi_platform.has("x", "#include <some/path/which/cannot/exist>")
+def test_check_eci():
+ eci = ExternalCompilationInfo()
+ assert rffi_platform.check_eci(eci)
+ eci = ExternalCompilationInfo(libraries=['some_name_that_doesnt_exist_'])
+ assert not rffi_platform.check_eci(eci)
+
def test_sizeof():
assert rffi_platform.sizeof("char", ExternalCompilationInfo()) == 1
More information about the Pypy-commit
mailing list