Skip to content

Commit b711419

Browse files
committed
fix: fix the napi wasm entry
1 parent 1ced70e commit b711419

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,20 +95,22 @@ if(ZMQ_WASM OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
9595

9696
set(CMAKE_LINKER "${EMSCRIPTEN_ROOT}/bin/lld${CMAKE_EXECUTABLE_SUFFIX}" CACHE STRING "Linker" FORCE)
9797

98+
add_compile_definitions("-D__wasm__" "-D__EMSCRIPTEN__")
99+
98100
# export an indirect function table for napi-wasm
99101
add_link_options("--export-table")
100102

103+
add_compile_options("-fwasm-exceptions")
104+
101105
# Add WebAssembly-specific exports for napi-wasm
102-
add_link_options("SHELL:-s EXPORTED_FUNCTIONS=['_malloc','_free','napi_wasm_malloc','napi_register_module_v1']")
106+
add_link_options("SHELL:-s EXPORTED_FUNCTIONS=['_malloc','_free','_napi_register_wasm_v1']")
103107
add_link_options("SHELL:-s EXPORTED_RUNTIME_METHODS=['ccall','cwrap']")
104108
add_link_options("SHELL:-s ALLOW_MEMORY_GROWTH=1")
105109
add_link_options("SHELL:-s MODULARIZE=1")
106-
add_link_options("SHELL:-s EXPORT_NAME='createModule'")
107110
add_link_options("SHELL:-s ENVIRONMENT='web,worker'")
108-
add_link_options("SHELL:--no-entry")
109-
add_link_options("SHELL:-Wl,--strip-all")
110111

111112
# Allow undefined symbols on Linux for runtime loading
113+
add_link_options("SHELL:-s ERROR_ON_UNDEFINED_SYMBOLS=0")
112114
add_link_options("SHELL:-Wl,--unresolved-symbols=ignore-all")
113115
endif()
114116

src/module.cc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,26 @@ Module::Module(Napi::Env env, Napi::Object exports) : MsgTrash(env) {
117117
}
118118
} // namespace zmq
119119

120+
#ifdef ZMQ_WASM
121+
122+
EXTERN_C_START
123+
NAPI_MODULE_EXPORT uint8_t* napi_wasm_malloc(size_t size) {
124+
const size_t align = alignof(size_t);
125+
126+
if (size > 0) {
127+
void* ptr = std::aligned_alloc(align, size);
128+
if (ptr != nullptr) {
129+
return static_cast<uint8_t*>(ptr);
130+
}
131+
} else {
132+
return reinterpret_cast<uint8_t*>(align);
133+
}
134+
135+
std::abort();
136+
}
137+
EXTERN_C_END
138+
139+
#endif
140+
120141
using Module = zmq::Module;
121142
NODE_API_ADDON(Module)

src/wasm.cc

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)