blob: f0225ac09f417a68ae95ee57bbe662a744d2cf50 [file] [log] [blame] [edit]
'''
Separates out the core asm module out of an emscripten output file.
This is useful because it lets you load the asm module first, then the main script, which on some browsers uses less memory
'''
import os, sys
import asm_module
infile = sys.argv[1]
asmfile = sys.argv[2]
otherfile = sys.argv[3]
everything = open(infile).read()
module = asm_module.AsmModule(infile).asm_js
module = module[module.find('=')+1:] # strip the initial "var asm =" bit, leave just the raw module as a function
if 'var Module' in everything:
everything = everything.replace(module, 'Module["asm"]')
else:
# closure compiler removes |var Module|, we need to find the closured name
evil = everything.find('eval(')
evil = everything.rfind('=', 0, evil)
start = evil
while everything[start] in [' ', '=']: start -= 1
while everything[start] not in [' ', ',', '(']: start -= 1
closured_name = everything[start+1:evil].strip()
everything = everything.replace(module, closured_name + '["asm"]')
o = open(asmfile, 'w')
o.write('Module["asm"] = ')
o.write(module)
o.write(';')
o.close()
o = open(otherfile, 'w')
o.write(everything)
o.close()