diff options
author | Alon Zakai <azakai@mozilla.com> | 2011-03-12 13:37:44 -0800 |
---|---|---|
committer | Alon Zakai <azakai@mozilla.com> | 2011-03-12 13:37:44 -0800 |
commit | f534adece703cadde53e2e14b199219376d63028 (patch) | |
tree | dff10421f0365455700f124db13fbdb2f17e7828 /tools/exec_llvm.py | |
parent | 490af7780df1e986999faf1be3c44cb79082af7a (diff) |
test runner improvements
Diffstat (limited to 'tools/exec_llvm.py')
-rwxr-xr-x | tools/exec_llvm.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/exec_llvm.py b/tools/exec_llvm.py new file mode 100755 index 00000000..05194b1a --- /dev/null +++ b/tools/exec_llvm.py @@ -0,0 +1,39 @@ +''' +Small utility to execute some llvm bitcode. + +The use case is a Makefile that builds some executable +and runs it as part of the build process. With emmaken, +the Makefile will generate llvm bitcode, so we can't +just execute it directly. This script will get that +code into a runnable form, and run it. + +We cannot just use lli, since code built with debug +symbols will crash it due to + + http://llvm.org/bugs/show_bug.cgi?id=6981 + +So instead we compile the bitcode into native code. + +To use this, change the Makefile so that instead of +running + + /bin/sh THE_FILE PARAMS + +it runs + + python $(EMSCRIPTEN_TOOLS)/exec_llvm.py THE_FILE PARAMS +''' + +import os, sys +from subprocess import Popen, PIPE, STDOUT + +abspath = os.path.abspath(os.path.dirname(__file__)) +def path_from_root(*pathelems): + return os.path.join(os.path.sep, *(abspath.split(os.sep)[:-1] + list(pathelems))) +exec(open(path_from_root('tools', 'shared.py'), 'r').read()) + +print 'EXEC_LLVM: ', sys.argv +Popen([LLVM_COMPILER, '-march=c', sys.argv[1]]).communicate()[0] +Popen(['gcc', sys.argv[1]+'.cbe.c']).communicate()[0] +Popen(['./a.out'] + sys.argv[2:]).communicate()[0] + |