@@ -755,10 +755,15 @@ def create_em_js(metadata):
755755 arg_names = [arg .split ()[- 1 ].replace ('*' , '' ) for arg in args if arg ]
756756 args = ',' .join (arg_names )
757757 func = f'function { name } ({ args } ) { body } '
758+ if settings .WASM_ESM_INTEGRATION :
759+ # Like JS library function EM_JS functions are exported at the point of
760+ # declaration in WASM_ESM_INTEGRATION node.
761+ func = f'export { func } '
762+ em_js_funcs .append (func )
758763 if (settings .MAIN_MODULE or settings .ASYNCIFY == 2 ) and name in metadata .em_js_func_types :
759764 sig = func_type_to_sig (metadata .em_js_func_types [name ])
760- func = func + f' \n { name } .sig = \' { sig } \' ;'
761- em_js_funcs .append (func )
765+ sig = f' { name } .sig = \' { sig } \' ;'
766+ em_js_funcs .append (sig )
762767
763768 return em_js_funcs
764769
@@ -826,7 +831,10 @@ def create_sending(metadata, library_symbols):
826831
827832 for name in metadata .imports :
828833 if name in metadata .em_js_funcs :
829- send_items_map [name ] = name
834+ # EM_JS functions are exported directly at the declaration site in
835+ # WASM_ESM_INTEGRATION mode.
836+ if not settings .WASM_ESM_INTEGRATION :
837+ send_items_map [name ] = name
830838 else :
831839 send_items_map [name ] = asmjs_mangle (name )
832840
@@ -881,16 +889,18 @@ def create_sending(metadata, library_symbols):
881889 return '{\n ' + ',\n ' .join (elems ) + '\n }'
882890
883891
884- def create_reexports ():
892+ def create_reexports (metadata ):
885893 assert settings .WASM_ESM_INTEGRATION
886894 exports = '// Re-export imported wasm functions to the JS entry point. These are user-facing and underscore mangled.\n '
887895 wasm_exports = []
888896 for exp in building .user_requested_exports :
889897 if shared .is_c_symbol (exp ):
890898 demangled = shared .demangle_c_symbol_name (exp )
891- if demangled in settings .WASM_EXPORTS :
899+ if demangled in metadata .em_js_funcs :
900+ wasm_exports .append (f'{ demangled } as { exp } ' )
901+ elif demangled in settings .WASM_EXPORTS :
892902 wasm_exports .append (exp )
893- if demangled == 'main' and '__main_argc_argv' in settings .WASM_EXPORTS :
903+ elif demangled == 'main' and '__main_argc_argv' in settings .WASM_EXPORTS :
894904 wasm_exports .append ('_main' )
895905 exports += f"export {{ { ', ' .join (wasm_exports )} }};\n \n "
896906 return exports
@@ -1055,7 +1065,7 @@ def create_module(metadata, function_exports, global_exports, tag_exports,librar
10551065 module .append (create_pointer_conversion_wrappers (metadata ))
10561066
10571067 if settings .WASM_ESM_INTEGRATION :
1058- module .append (create_reexports ())
1068+ module .append (create_reexports (metadata ))
10591069
10601070 return module
10611071
0 commit comments