[pypy-svn] r12789 - pypy/dist/pypy/translator/llvm
ericvrp at codespeak.net
ericvrp at codespeak.net
Wed May 25 10:33:45 CEST 2005
Author: ericvrp
Date: Wed May 25 10:33:45 2005
New Revision: 12789
Modified:
pypy/dist/pypy/translator/llvm/build_llvm_module.py
Log:
added llvm compile support for x64-64
Modified: pypy/dist/pypy/translator/llvm/build_llvm_module.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/build_llvm_module.py (original)
+++ pypy/dist/pypy/translator/llvm/build_llvm_module.py Wed May 25 10:33:45 2005
@@ -14,7 +14,7 @@
from pypy.translator.tool.buildpyxmodule import make_c_from_pyxfile
from pypy.translator.tool import stdoutcapture
-debug = 1
+debug = False
class CompileError(exceptions.Exception):
pass
@@ -27,22 +27,31 @@
lastdir = path.local()
os.chdir(str(dirpath))
modname = pyxfile.purebasename
- ops1 = ["llvm-as %s -f -o %s.bc" % (llvmfile, llvmfile.purebasename),
- "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES,
- llvmfile.purebasename,
- llvmfile.purebasename),
- "llc -enable-correct-eh-support %s_optimized.bc -f -o %s.s" % \
- (llvmfile.purebasename, llvmfile.purebasename),
- "as %s.s -o %s.o" % (llvmfile.purebasename, llvmfile.purebasename)]
- if not optimize:
- ops1 = ["llvm-as %s -f" % llvmfile,
- "llc -enable-correct-eh-support %s.bc -f -o %s.s" % \
- (llvmfile.purebasename, llvmfile.purebasename),
- "as %s.s -o %s.o" % (llvmfile.purebasename,
- llvmfile.purebasename)]
- ops2 = ["gcc -c -fPIC -I/usr/include/python2.3 %s.c" % pyxfile.purebasename,
- "gcc -shared %s.o %s.o -o %s.so" % (llvmfile.purebasename,
- modname, modname)]
+ b = llvmfile.purebasename
+
+ if sys.maxint == 2147483647: #32 bit platform
+ if optimize:
+ ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+ "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES, b, b),
+ "llc -enable-correct-eh-support %s_optimized.bc -f -o %s.s" % (b, b),
+ "as %s.s -o %s.o" % (b, b)]
+ else:
+ ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+ "llc -enable-correct-eh-support %s.bc -f -o %s.s" % (b, b),
+ "as %s.s -o %s.o" % (b, b)]
+ ops2 = ["gcc -c -shared -I/usr/include/python2.3 %s.c" % pyxfile.purebasename,
+ "gcc -shared %s.o %s.o -o %s.so" % (b, modname, modname)]
+ else: #assume 64 bit platform (x86-64?)
+ #this special case for x86-64 (called ia64 in llvm) can go as soon as llc supports ia64 assembly output!
+ if optimize:
+ ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+ "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES, b, b),
+ "llc -enable-correct-eh-support %s_optimized.bc -march=c -f -o %s.c" % (b, b)]
+ else:
+ ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+ "llc -enable-correct-eh-support %s.bc -march=c -f -o %s.c" % (b, b)]
+ ops2 = ["gcc -shared -fPIC -I/usr/include/python2.3 %s.c %s.c -o %s.so" % (b, modname, modname)]
+
try:
if debug: print "modname", modname
c = stdoutcapture.Capture(mixed_out_err = True)
@@ -50,11 +59,11 @@
try:
try:
for op in ops1:
- print op
+ if debug: print op
cmdexec(op)
make_c_from_pyxfile(pyxfile)
for op in ops2:
- print op
+ if debug: print op
cmdexec(op)
finally:
foutput, foutput = c.done()
More information about the Pypy-commit
mailing list