[pypy-svn] r43551 - pypy/branch/kill-ctypes/pypy/translator/c

fijal at codespeak.net fijal at codespeak.net
Tue May 22 10:56:49 CEST 2007


Author: fijal
Date: Tue May 22 10:56:47 2007
New Revision: 43551

Modified:
   pypy/branch/kill-ctypes/pypy/translator/c/external.py
   pypy/branch/kill-ctypes/pypy/translator/c/genc.py
   pypy/branch/kill-ctypes/pypy/translator/c/node.py
Log:
Simple wacking around to get more C sources compiled


Modified: pypy/branch/kill-ctypes/pypy/translator/c/external.py
==============================================================================
--- pypy/branch/kill-ctypes/pypy/translator/c/external.py	(original)
+++ pypy/branch/kill-ctypes/pypy/translator/c/external.py	Tue May 22 10:56:47 2007
@@ -3,7 +3,6 @@
 from pypy.translator.c.support import USESLOTS # set to False if necessary while refactoring
 from pypy.translator.c.support import cdecl, somelettersfrom
 
-
 class CExternalFunctionCodeGenerator(object):
     if USESLOTS:
         __slots__ = """db fnptr FUNCTYPE argtypenames resulttypename""".split()

Modified: pypy/branch/kill-ctypes/pypy/translator/c/genc.py
==============================================================================
--- pypy/branch/kill-ctypes/pypy/translator/c/genc.py	(original)
+++ pypy/branch/kill-ctypes/pypy/translator/c/genc.py	Tue May 22 10:56:47 2007
@@ -603,6 +603,22 @@
     print >> f, '\treturn error;'
     print >> f, '}'
 
+def extra_information(database):
+    includes = {}
+    sources = {}
+    for node in database.globalcontainers():
+        if hasattr(node, 'includes'):
+            for include in node.includes:
+                includes[include] = True
+        if hasattr(node, 'sources'):
+            for source in node.sources:
+                sources[source] = True
+    includes = includes.keys()
+    includes.sort()
+    sources = sources.keys()
+    sources.sort()
+    return includes, sources
+
 def gen_source_standalone(database, modulename, targetdir, 
                           entrypointname, defines={}): 
     assert database.standalone
@@ -632,13 +648,7 @@
     for line in database.gcpolicy.pre_gc_code():
         print >> fi, line
 
-    includes = {}
-    for node in database.globalcontainers():
-        if hasattr(node, 'includes'):
-            for include in node.includes:
-                includes[include] = True
-    includes = includes.keys()
-    includes.sort()
+    includes, sources = extra_information(database)
     for include in includes:
         print >> fi, '#include <%s>' % (include,)
     fi.close()
@@ -665,8 +675,8 @@
         n = database.instrument_ncounter
         print >>fi, "#define INSTRUMENT_NCOUNTER %d" % n
         fi.close()
-    
-    return filename, sg.getextrafiles()
+
+    return filename, sg.getextrafiles() + sources
 
 
 def gen_source(database, modulename, targetdir, defines={}, exports={},
@@ -696,13 +706,7 @@
     for line in database.gcpolicy.pre_gc_code():
         print >> fi, line
 
-    includes = {}
-    for node in database.globalcontainers():
-        if hasattr(node, 'includes'):
-            for include in node.includes:
-                includes[include] = True
-    includes = includes.keys()
-    includes.sort()
+    includes, sources = extra_information(database)
     for include in includes:
         print >> fi, '#include <%s>' % (include,)
     fi.close()
@@ -833,7 +837,7 @@
     f.write(SETUP_PY % locals())
     f.close()
 
-    return filename, sg.getextrafiles()
+    return filename, sg.getextrafiles() + sources
 
 
 SETUP_PY = '''

Modified: pypy/branch/kill-ctypes/pypy/translator/c/node.py
==============================================================================
--- pypy/branch/kill-ctypes/pypy/translator/c/node.py	(original)
+++ pypy/branch/kill-ctypes/pypy/translator/c/node.py	Tue May 22 10:56:47 2007
@@ -619,6 +619,8 @@
         self.ptrname = self.name
 
     def make_funcgens(self):
+        if hasattr(self.obj, 'sources'):
+            self.sources = self.obj.sources
         self.funcgens = select_function_code_generators(self.obj, self.db, self.name)
         if self.funcgens:
             argnames = self.funcgens[0].argnames()  #Assume identical for all funcgens



More information about the Pypy-commit mailing list