aboutsummaryrefslogtreecommitdiff
path: root/emscripten.py
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-11-13 20:54:48 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:18 -0800
commitec66ae0de489b7b7f795c880c1aa0af3fe8fe014 (patch)
treea05fe883dfcfa18c8ab0b09c2fbd2702343edc67 /emscripten.py
parent3c38471a75ccc1f0f6dc142e97fde2cf615a625b (diff)
only export asm functions from asm, not library functions
Diffstat (limited to 'emscripten.py')
-rwxr-xr-xemscripten.py23
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()