@@ -433,7 +433,8 @@ def emscript(in_wasm, out_wasm, outfile_js, js_syms, finalize=True, base_metadat
433
433
receiving = create_receiving (function_exports )
434
434
if settings .WASM_ESM_INTEGRATION :
435
435
sending = create_sending (metadata , forwarded_json ['librarySymbols' ])
436
- parts += [sending , receiving ]
436
+ reexports = create_reexports ()
437
+ parts += [sending , receiving , reexports ]
437
438
else :
438
439
parts += create_module (receiving , metadata , global_exports , forwarded_json ['librarySymbols' ])
439
440
parts .append (post )
@@ -858,7 +859,10 @@ def create_sending(metadata, library_symbols):
858
859
elems = []
859
860
for k , v in sorted_items :
860
861
elems .append (f'{ v } as { k } ' )
861
- return f"export {{ { ', ' .join (elems )} }};\n \n "
862
+ elems = ',\n ' .join (elems )
863
+ exports = '// Export JS functions to the wasm module with demangled names.\n '
864
+ exports += f"export {{\n { elems } \n }};\n \n "
865
+ return exports
862
866
863
867
prefix = ''
864
868
if settings .MAYBE_CLOSURE_COMPILER :
@@ -876,6 +880,21 @@ def create_sending(metadata, library_symbols):
876
880
return '{\n ' + ',\n ' .join (elems ) + '\n }'
877
881
878
882
883
+ def create_reexports ():
884
+ assert settings .WASM_ESM_INTEGRATION
885
+ exports = '// Re-export imported wasm functions to the JS entry point. These are user-facing and underscore mangled.\n '
886
+ wasm_exports = []
887
+ for exp in building .user_requested_exports :
888
+ if shared .is_c_symbol (exp ):
889
+ demangled = shared .demangle_c_symbol_name (exp )
890
+ if demangled in settings .WASM_EXPORTS :
891
+ wasm_exports .append (exp )
892
+ if demangled == 'main' and '__main_argc_argv' in settings .WASM_EXPORTS :
893
+ wasm_exports .append ('_main' )
894
+ exports += f"export {{ { ', ' .join (wasm_exports )} }};\n \n "
895
+ return exports
896
+
897
+
879
898
def can_use_await ():
880
899
return settings .MODULARIZE
881
900
0 commit comments