2010-09-10 07:03:24 +04:00
|
|
|
#!/usr/bin/python
|
|
|
|
|
|
|
|
import os, sys, subprocess
|
|
|
|
|
|
|
|
COMPILER = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'src', 'parser.js')
|
|
|
|
|
2010-09-10 10:22:10 +04:00
|
|
|
def emscripten(filename, js_engine, settings):
|
|
|
|
data = open(filename, 'r').read()
|
2010-09-10 07:03:24 +04:00
|
|
|
cwd = os.getcwd()
|
|
|
|
os.chdir(os.path.dirname(COMPILER))
|
2010-09-10 10:22:10 +04:00
|
|
|
subprocess.Popen([js_engine, COMPILER], stdin=subprocess.PIPE).communicate(settings+'\n'+data)[0]
|
2010-09-10 07:03:24 +04:00
|
|
|
os.chdir(cwd)
|
|
|
|
|
2010-09-10 10:36:52 +04:00
|
|
|
if __name__ == '__main__':
|
|
|
|
if sys.argv.__len__() not in [3,4]:
|
2010-09-12 10:14:16 +04:00
|
|
|
print '''
|
|
|
|
Emscripten usage: emscripten.py INFILE PATH-TO-JS-ENGINE [SETTINGS]
|
|
|
|
|
|
|
|
INFILE must be in human-readable LLVM disassembly form (i.e., as text,
|
|
|
|
not binary).
|
|
|
|
PATH-TO-JS-ENGINE should be a path to the JavaScript engine used to
|
|
|
|
run the compiler (which is in JavaScript itself). You can later use
|
|
|
|
the same engine to run the code, or another one, that is a separate
|
|
|
|
issue.
|
|
|
|
SETTINGS is an optional set of compiler settings, overriding the defaults.
|
|
|
|
'''
|
2010-09-10 07:03:24 +04:00
|
|
|
else:
|
2010-09-10 10:22:10 +04:00
|
|
|
emscripten(sys.argv[1], sys.argv[2], sys.argv[3] if len(sys.argv) == 4 else "{}")
|
2010-09-10 07:03:24 +04:00
|
|
|
|