[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