diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-11-13 20:54:48 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 14:23:18 -0800 |
commit | ec66ae0de489b7b7f795c880c1aa0af3fe8fe014 (patch) | |
tree | a05fe883dfcfa18c8ab0b09c2fbd2702343edc67 /emscripten.py | |
parent | 3c38471a75ccc1f0f6dc142e97fde2cf615a625b (diff) |
only export asm functions from asm, not library functions
Diffstat (limited to 'emscripten.py')
-rwxr-xr-x | emscripten.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/emscripten.py b/emscripten.py index e8020788..ce8c50f0 100755 --- a/emscripten.py +++ b/emscripten.py @@ -222,10 +222,23 @@ def emscript(infile, settings, outfile, libraries=[]): if DEBUG: print >> sys.stderr, ' emscript: phase 2 took %s seconds' % (time.time() - t) if DEBUG: t = time.time() + # merge forwarded data + all_exported_functions = set(settings['EXPORTED_FUNCTIONS']) # both asm.js and otherwise + exported_implemented_functions = set() + for func_js, curr_forwarded_data in outputs: + curr_forwarded_json = json.loads(curr_forwarded_data) + forwarded_json['Types']['preciseI64MathUsed'] = forwarded_json['Types']['preciseI64MathUsed'] or curr_forwarded_json['Types']['preciseI64MathUsed'] + for key, value in curr_forwarded_json['Functions']['blockAddresses'].iteritems(): + forwarded_json['Functions']['blockAddresses'][key] = value + for key in curr_forwarded_json['Functions']['indexedFunctions'].iterkeys(): + indexed_functions.add(key) + for key in curr_forwarded_json['Functions']['implementedFunctions'].iterkeys(): + if key in all_exported_functions: exported_implemented_functions.add(key) + funcs_js = ''.join([output[0] for output in outputs]) if settings.get('ASM_JS'): exports = [] - for export in settings['EXPORTED_FUNCTIONS'] + settings['EXPORTED_GLOBALS']: + for export in exported_implemented_functions: exports.append("'%s': %s" % (export, export)) exports = '{ ' + ', '.join(exports) + ' }' funcs_js = ''' @@ -245,14 +258,6 @@ var asm = (function(env, buffer) { for (var export in asm) Module[export] = asm[export]; ''' % exports - for func_js, curr_forwarded_data in outputs: - # merge forwarded data - curr_forwarded_json = json.loads(curr_forwarded_data) - forwarded_json['Types']['preciseI64MathUsed'] = forwarded_json['Types']['preciseI64MathUsed'] or curr_forwarded_json['Types']['preciseI64MathUsed'] - for key, value in curr_forwarded_json['Functions']['blockAddresses'].iteritems(): - forwarded_json['Functions']['blockAddresses'][key] = value - for key in curr_forwarded_json['Functions']['indexedFunctions'].iterkeys(): - indexed_functions.add(key) outputs = None if DEBUG: print >> sys.stderr, ' emscript: phase 2b took %s seconds' % (time.time() - t) if DEBUG: t = time.time() |