Skip to content

Type-safe Embind port, compatible with the current API #7553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 12 commits into
base: main
Choose a base branch
from
18 changes: 8 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -528,8 +528,10 @@ endif()
# Note that we can't emit binaryen.js directly, as there is libbinaryen already
# declared earlier, so we create binaryen_wasm/js.js, which must then be copied.
if(EMSCRIPTEN)
add_compile_flag("-DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0")

# binaryen.js WebAssembly variant
add_executable(binaryen_wasm ${binaryen_SOURCES})
add_executable(binaryen_wasm src/binaryen-embind.cpp)
target_link_libraries(binaryen_wasm PRIVATE binaryen)
target_link_libraries(binaryen_wasm PRIVATE "-sFILESYSTEM")
target_link_libraries(binaryen_wasm PRIVATE "-sEXPORT_NAME=Binaryen")
Expand All @@ -542,12 +544,10 @@ if(EMSCRIPTEN)
target_link_libraries(binaryen_wasm PRIVATE "-sSINGLE_FILE")
endif()
target_link_libraries(binaryen_wasm PRIVATE "-sEXPORT_ES6")
target_link_libraries(binaryen_wasm PRIVATE "-sEXPORTED_RUNTIME_METHODS=stringToUTF8OnStack,stringToAscii")
target_link_libraries(binaryen_wasm PRIVATE "-sEXPORTED_FUNCTIONS=_malloc,_free")
target_link_libraries(binaryen_wasm PRIVATE "--post-js=${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-post.js")
target_link_libraries(binaryen_wasm PRIVATE "-lembind")
target_link_libraries(binaryen_wasm PRIVATE "--emit-tsd binaryen.d.ts")
target_link_libraries(binaryen_wasm PRIVATE "-msign-ext")
target_link_libraries(binaryen_wasm PRIVATE "-mbulk-memory")
target_link_libraries(binaryen_wasm PRIVATE optimized "--closure=1")
# TODO: Fix closure warnings! (#5062)
target_link_libraries(binaryen_wasm PRIVATE optimized "-Wno-error=closure")
if (BYN_ENABLE_LTO)
Expand All @@ -560,7 +560,7 @@ if(EMSCRIPTEN)
install(TARGETS binaryen_wasm DESTINATION ${CMAKE_INSTALL_BINDIR})

# binaryen.js JavaScript variant
add_executable(binaryen_js ${binaryen_SOURCES})
add_executable(binaryen_js src/binaryen-embind.cpp)
target_link_libraries(binaryen_js PRIVATE binaryen)
target_link_libraries(binaryen_js PRIVATE "-sWASM=0")
target_link_libraries(binaryen_js PRIVATE "-sWASM_ASYNC_COMPILATION=0")
Expand Down Expand Up @@ -590,14 +590,12 @@ if(EMSCRIPTEN)
else()
target_link_libraries(binaryen_js PRIVATE "-sEXPORT_ES6=1")
endif()
target_link_libraries(binaryen_js PRIVATE "-sEXPORTED_RUNTIME_METHODS=stringToUTF8OnStack,stringToAscii")
target_link_libraries(binaryen_js PRIVATE "-sEXPORTED_FUNCTIONS=_malloc,_free")
target_link_libraries(binaryen_js PRIVATE "--post-js=${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-post.js")
target_link_libraries(binaryen_js PRIVATE "-lembind")
target_link_libraries(binaryen_js PRIVATE "--emit-tsd binaryen.d.ts")
# js_of_ocaml needs a specified variable with special comment to provide the library to consumers
if(JS_OF_OCAML)
target_link_libraries(binaryen_js PRIVATE "--extern-pre-js=${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.jsoo-extern-pre.js")
endif()
target_link_libraries(binaryen_js PRIVATE optimized "--closure=1")
# Currently, js_of_ocaml can only process ES5 code
if(JS_OF_OCAML)
target_link_libraries(binaryen_js PRIVATE optimized "--closure-args=\"--language_out=ECMASCRIPT5\"")
Expand Down
Loading
Loading