@@ -433,7 +433,8 @@ def emscript(in_wasm, out_wasm, outfile_js, js_syms, finalize=True, base_metadat
433433 receiving = create_receiving (function_exports )
434434 if settings .WASM_ESM_INTEGRATION :
435435 sending = create_sending (metadata , forwarded_json ['librarySymbols' ])
436- parts += [sending , receiving ]
436+ reexports = create_reexports ()
437+ parts += [sending , receiving , reexports ]
437438 else :
438439 parts += create_module (receiving , metadata , global_exports , forwarded_json ['librarySymbols' ])
439440 parts .append (post )
@@ -858,7 +859,10 @@ def create_sending(metadata, library_symbols):
858859 elems = []
859860 for k , v in sorted_items :
860861 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
862866
863867 prefix = ''
864868 if settings .MAYBE_CLOSURE_COMPILER :
@@ -876,6 +880,21 @@ def create_sending(metadata, library_symbols):
876880 return '{\n ' + ',\n ' .join (elems ) + '\n }'
877881
878882
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+
879898def can_use_await ():
880899 return settings .MODULARIZE
881900
0 commit comments