[pypy-svn] r49012 - pypy/dist/pypy/translator/llvm
rxe at codespeak.net
rxe at codespeak.net
Sat Nov 24 03:02:25 CET 2007
Author: rxe
Date: Sat Nov 24 03:02:25 2007
New Revision: 49012
Modified:
pypy/dist/pypy/translator/llvm/externs2ll.py
pypy/dist/pypy/translator/llvm/extfuncnode.py
pypy/dist/pypy/translator/llvm/genllvm.py
pypy/dist/pypy/translator/llvm/node.py
Log:
an attempt to support to include dirs ....
Modified: pypy/dist/pypy/translator/llvm/externs2ll.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/externs2ll.py (original)
+++ pypy/dist/pypy/translator/llvm/externs2ll.py Sat Nov 24 03:02:25 2007
@@ -16,7 +16,7 @@
def get_module_file(name):
return os.path.join(get_llvm_cpath(), name)
-def get_ll(ccode, function_names, default_cconv):
+def get_ll(ccode, function_names, default_cconv, c_include_dirs):
function_names += support_functions
filename = str(udir.join("ccode.c"))
f = open(filename, "w")
@@ -24,17 +24,14 @@
f.close()
plain = filename[:-2]
- includes = get_incdirs()
-
+ includes = get_incdirs(c_include_dirs)
if llvm_gcc_version() < 4.0:
emit_llvm = ''
else:
emit_llvm = '-emit-llvm -O0'
- # XXX localize this
- include_path = '-I/sw/include'
- cmd = "llvm-gcc %s %s %s -S %s.c -o %s.ll 2>&1" % (
- include_path, includes, emit_llvm, plain, plain)
+ cmd = "llvm-gcc %s %s -S %s.c -o %s.ll 2>&1" % (
+ includes, emit_llvm, plain, plain)
if os.system(cmd) != 0:
raise Exception("Failed to run '%s'" % cmd)
@@ -106,10 +103,14 @@
def get_llvm_cpath():
return os.path.join(os.path.dirname(__file__), "module")
-def get_incdirs():
+def get_incdirs(c_include_dirs):
+
+ c_include_dirs
import distutils.sysconfig
- includes = (distutils.sysconfig.EXEC_PREFIX + "/include",
+
+ includes = tuple(c_include_dirs) + ("/sw/include",
+ distutils.sysconfig.EXEC_PREFIX + "/include",
distutils.sysconfig.EXEC_PREFIX + "/include/gc",
distutils.sysconfig.get_python_inc(),
get_c_cpath(),
@@ -120,7 +121,7 @@
includestr += "-I %s " % ii
return includestr
-def generate_llfile(db, entrynode, c_includes, c_sources, standalone, default_cconv):
+def generate_llfile(db, entrynode, c_include_dirs, c_includes, c_sources, standalone, default_cconv):
ccode = []
function_names = []
@@ -149,5 +150,5 @@
# append our source file
ccode.append(open(get_module_file('genexterns.c')).read())
- llcode = get_ll("".join(ccode), function_names, default_cconv)
+ llcode = get_ll("".join(ccode), function_names, default_cconv, c_include_dirs)
return llcode
Modified: pypy/dist/pypy/translator/llvm/extfuncnode.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/extfuncnode.py (original)
+++ pypy/dist/pypy/translator/llvm/extfuncnode.py Sat Nov 24 03:02:25 2007
@@ -10,16 +10,20 @@
def external_c_source(self):
# return a list of unique includes and sources in C
+ c_include_dirs = []
c_includes = []
c_sources = []
+ if hasattr(self.value, 'include_dirs'):
+ c_include_dirs = list(self.value.include_dirs)
+
if hasattr(self.value, 'includes'):
c_includes = list(self.value.includes)
if hasattr(self.value, 'sources'):
c_sources = list(self.value.sources)
- return c_includes, c_sources
+ return c_include_dirs, c_includes, c_sources
def writeglobalconstants(self, codewriter):
pass
Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py (original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py Sat Nov 24 03:02:25 2007
@@ -185,11 +185,14 @@
return c.value._obj
def generate_ll_externs(self, codewriter):
+ c_include_dirs = {}
c_includes = {}
c_sources = {}
for node in self.db.getnodes():
- includes, sources = node.external_c_source()
+ include_dirs, includes, sources = node.external_c_source()
+ for incdirin in include_dirs:
+ c_include_dirs[incdir] = True
for include in includes:
c_includes[include] = True
for source in sources:
@@ -197,6 +200,7 @@
self.llcode = generate_llfile(self.db,
self.entrynode,
+ c_include_dirs,
c_includes,
c_sources,
self.standalone,
Modified: pypy/dist/pypy/translator/llvm/node.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/node.py (original)
+++ pypy/dist/pypy/translator/llvm/node.py Sat Nov 24 03:02:25 2007
@@ -34,7 +34,7 @@
def external_c_source(self):
" return a list of unique includes and sources in C "
- return [], []
+ return [], [], []
def writesetupcode(self, codewriter):
" pre entry-point setup "
More information about the Pypy-commit
mailing list