[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