[pypy-svn] r58910 - in pypy/branch/cbuild-refactor/pypy/translator: . c platform tool

fijal at codespeak.net fijal at codespeak.net
Fri Oct 10 16:18:14 CEST 2008


Author: fijal
Date: Fri Oct 10 16:18:11 2008
New Revision: 58910

Modified:
   pypy/branch/cbuild-refactor/pypy/translator/c/genc.py
   pypy/branch/cbuild-refactor/pypy/translator/platform/linux.py
   pypy/branch/cbuild-refactor/pypy/translator/tool/cbuild.py
   pypy/branch/cbuild-refactor/pypy/translator/translator.py
Log:
(fijal, pedronis) Start to make genc use platform


Modified: pypy/branch/cbuild-refactor/pypy/translator/c/genc.py
==============================================================================
--- pypy/branch/cbuild-refactor/pypy/translator/c/genc.py	(original)
+++ pypy/branch/cbuild-refactor/pypy/translator/c/genc.py	Fri Oct 10 16:18:11 2008
@@ -32,7 +32,15 @@
         self.gcpolicy = gcpolicy    # for tests only, e.g. rpython/memory/
         if gcpolicy is not None and gcpolicy.requires_stackless:
             config.translation.stackless = True
-        self.eci = ExternalCompilationInfo()
+        self.eci = self.get_eci()
+
+    def get_eci(self):
+        from distutils import sysconfig
+        python_inc = sysconfig.get_python_inc()
+        pypy_include_dir = py.path.local(autopath.pypydir).join('translator', 'c')
+        return ExternalCompilationInfo(
+            include_dirs=[python_inc, pypy_include_dir]
+        )
 
     def build_database(self):
         translator = self.translator
@@ -206,9 +214,8 @@
             export_symbols.append('malloc_counters')
         extsymeci = ExternalCompilationInfo(export_symbols=export_symbols)
         self.eci = self.eci.merge(extsymeci)
-        compile_c_module([self.c_source_filename] + self.extrafiles,
-                         self.c_source_filename.purebasename, self.eci,
-                         tmpdir=self.c_source_filename.dirpath())
+        files = [self.c_source_filename] + self.extrafiles
+        self.translator.platform.compile(files, self.eci, standalone=False)
         self._compiled = True
 
     def _make_wrapper_module(self):

Modified: pypy/branch/cbuild-refactor/pypy/translator/platform/linux.py
==============================================================================
--- pypy/branch/cbuild-refactor/pypy/translator/platform/linux.py	(original)
+++ pypy/branch/cbuild-refactor/pypy/translator/platform/linux.py	Fri Oct 10 16:18:11 2008
@@ -14,6 +14,8 @@
     return pipe.returncode, stdout, stderr
 
 class Linux(Platform):
+    link_extra = ['-lpthread']
+    
     def __init__(self, cc='gcc'):
         self.cc = cc
 
@@ -22,7 +24,7 @@
         library_dirs = ['-L%s' % (ldir,) for ldir in eci.library_dirs]
         libraries = ['-l%s' % (lib,) for lib in eci.libraries]
         return (include_dirs + [str(f) for f in cfiles] +
-                library_dirs + libraries)
+                library_dirs + libraries + self.link_extra)
 
     def _args_for_shared(self, args):
         return ['-shared'] + args

Modified: pypy/branch/cbuild-refactor/pypy/translator/tool/cbuild.py
==============================================================================
--- pypy/branch/cbuild-refactor/pypy/translator/tool/cbuild.py	(original)
+++ pypy/branch/cbuild-refactor/pypy/translator/tool/cbuild.py	Fri Oct 10 16:18:11 2008
@@ -378,13 +378,6 @@
 
     def __init__(self, cfilenames, eci, outputfilename=None,
                  compiler_exe=None, profbased=None, standalone=True):
-        from distutils import sysconfig
-        python_inc = sysconfig.get_python_inc()
-        pypy_include_dir = py.path.local(autopath.pypydir).join('translator', 'c')
-        eci = eci.merge(ExternalCompilationInfo(
-            include_dirs=[python_inc, pypy_include_dir],
-            platform=eci.platform,
-        ))
         self.cfilenames = cfilenames
         if standalone:
             ext = ''

Modified: pypy/branch/cbuild-refactor/pypy/translator/translator.py
==============================================================================
--- pypy/branch/cbuild-refactor/pypy/translator/translator.py	(original)
+++ pypy/branch/cbuild-refactor/pypy/translator/translator.py	Fri Oct 10 16:18:11 2008
@@ -13,6 +13,7 @@
 from pypy.tool.sourcetools import nice_repr_for_func
 from pypy.config.pypyoption import pypy_optiondescription
 from pypy.config.translationoption import get_combined_translation_config
+from pypy.config.translationoption import get_platform
 import py
 log = py.log.Producer("flowgraph")
 py.log.setconsumer("flowgraph", ansi_log)
@@ -36,6 +37,7 @@
             if attr in flowing_flags:
                 setattr(config.translation, attr, flowing_flags[attr])
         self.config = config
+        self.platform = get_platform(config)
         self.create_flowspace_config()
         self.annotator = None
         self.rtyper = None



More information about the Pypy-commit mailing list