[pypy-svn] r39814 - pypy/dist/pypy/translator/llvm

rxe at codespeak.net rxe at codespeak.net
Sat Mar 3 16:20:38 CET 2007


Author: rxe
Date: Sat Mar  3 16:20:36 2007
New Revision: 39814

Modified:
   pypy/dist/pypy/translator/llvm/buildllvm.py
   pypy/dist/pypy/translator/llvm/genllvm.py
Log:
(mwh, rxe) start sanitizing build interface

Modified: pypy/dist/pypy/translator/llvm/buildllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/buildllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/buildllvm.py	Sat Mar  3 16:20:36 2007
@@ -4,6 +4,7 @@
 import py
 
 from pypy.translator.llvm.log import log
+from pypy.translator.llvm.pyxwrapper import write_pyx_wrapper 
 from pypy.translator.tool import stdoutcapture
 from pypy.translator.tool.cbuild import make_c_from_pyxfile
 
@@ -77,6 +78,18 @@
     log.build(cmd)
     py.process.cmdexec(cmd)
 
+
+def build_module(genllvm):
+    # use pyrex to create module for CPython
+    postfix = ''
+    basename = genllvm.filename.purebasename + '_wrapper' + postfix + '.pyx'
+    pyxfile = genllvm.filename.new(basename = basename)
+    write_pyx_wrapper(genllvm, pyxfile)
+    return make_module_from_llvm(genllvm, genllvm.filename, pyxfile=pyxfile)
+
+def build_standalone(genllvm, exename):
+    return make_module_from_llvm(genllvm, genllvm.filename, exe_name=exename)
+
 def make_module_from_llvm(genllvm, llvmfile,
                           pyxfile=None, optimize=True, exe_name=None,
                           profile=False, cleanup=False, use_gcc=True):
@@ -101,12 +114,12 @@
     else: #we generate 1.x .ll files, so upgrade these first
         cmds = ["llvm-upgrade < %s.ll | llvm-as | opt %s -f -o %s.bc" % (b, opts, b)]
 
-    object_files = ["-L%s/lib" % distutils.sysconfig.EXEC_PREFIX]
+    object_files = ["-L/sw/lib"]
     library_files = genllvm.db.gcpolicy.gc_libraries()
     gc_libs = ' '.join(['-l' + lib for lib in library_files])
 
     if sys.platform == 'darwin':
-        libdir = distutils.sysconfig.EXEC_PREFIX + "/lib"
+        libdir = '/sw/' + "/lib"
         gc_libs_path = '-L%s -ldl' % libdir
     else:
         gc_libs_path = '-static'
@@ -122,7 +135,7 @@
         cmds.append("as %s.s -o %s.o" % (b, b))
 
         if exe_name:
-            cmd = "gcc %s.o %s %s -lm -pipe -o %s" % (b, gc_libs_path, gc_libs, exe_name)
+            cmd = "gcc -O3 %s.o %s %s -lm -pipe -o %s" % (b, gc_libs_path, gc_libs, exe_name)
             cmds.append(cmd)
         object_files.append("%s.o" % b)
     else:

Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py	Sat Mar  3 16:20:36 2007
@@ -4,7 +4,6 @@
 
 from pypy.translator.llvm import buildllvm
 from pypy.translator.llvm.database import Database 
-from pypy.translator.llvm.pyxwrapper import write_pyx_wrapper 
 from pypy.rpython.rmodel import inputconst
 from pypy.rpython.typesystem import getfunctionptr
 from pypy.rpython.lltypesystem import lltype
@@ -48,6 +47,7 @@
 
         self._checkpoint('done')
         codewriter.close()
+
         return self.filename
 
     def setup(self, func):
@@ -221,13 +221,8 @@
     def compile_module(self):
         assert not self.standalone
 
-        # use pyrex to create module for CPython
-        postfix = ''
-        basename = self.filename.purebasename + '_wrapper' + postfix + '.pyx'
-        pyxfile = self.filename.new(basename = basename)
-        write_pyx_wrapper(self, pyxfile)    
-        info = buildllvm.make_module_from_llvm(self, self.filename, pyxfile=pyxfile)
-        mod, wrap_fun = self.get_module(*info)
+        modname, dirpath = buildllvm.build_module(self)
+        mod, wrap_fun = self.get_module(modname, dirpath)
         return mod, wrap_fun
 
     def get_module(self, modname, dirpath):
@@ -242,8 +237,7 @@
 
     def compile_standalone(self, exe_name):
         assert self.standalone
-        return buildllvm.make_module_from_llvm(self, self.filename,
-                                               exe_name=exe_name)
+        return buildllvm.build_standalone(self, exe_name)
 
     def _checkpoint(self, msg=None):
         if not self.config.translation.llvm.logging:



More information about the Pypy-commit mailing list