@@ -537,90 +537,41 @@ endif()
537537# binaryen.js
538538#
539539# Note that we can't emit binaryen.js directly, as there is libbinaryen already
540- # declared earlier, so we create binaryen_wasm/js .js, which must then be copied.
540+ # declared earlier, so we create binaryen_js .js, which must then be copied.
541541if (EMSCRIPTEN)
542- # binaryen.js WebAssembly variant
543- add_executable (binaryen_wasm ${binaryen_HEADERS} )
542+ add_executable (binaryen_js ${binaryen_HEADERS} )
544543 # For the emscripten build we link against libbinaryen wih `--whole-archive`.
545544 # Without this, the EMSCRIPTEN_KEEPALIVE symbols within the library would
546545 # be ignored.
547- target_link_libraries (binaryen_wasm PRIVATE binaryen)
548- target_link_libraries (binaryen_wasm PRIVATE "-sFILESYSTEM" )
549- target_link_libraries (binaryen_wasm PRIVATE "-sEXPORT_NAME=Binaryen" )
550- target_link_libraries (binaryen_wasm PRIVATE "-sNODERAWFS=0" )
551- # Do not error on the repeated NODERAWFS argument
552- target_link_libraries (binaryen_wasm PRIVATE "-Wno-unused-command-line-argument" )
553- # Emit a single file for convenience of people using binaryen.js as a library,
554- # so they only need to distribute a single file.
555- if (EMSCRIPTEN_ENABLE_SINGLE_FILE)
556- target_link_libraries (binaryen_wasm PRIVATE "-sSINGLE_FILE" )
557- endif ()
558- target_link_libraries (binaryen_wasm PRIVATE "-sEXPORT_ES6" )
559- target_link_libraries (binaryen_wasm PRIVATE "-sEXPORTED_RUNTIME_METHODS=stringToUTF8OnStack,stringToAscii" )
560- # Explictly export _i32_load to ensure the binaryen-c.cpp is linked in.
561- # This is the file that contains all the EMSCRIPTEN_KEEPALIVE symbols which
562- # we want to exports, but enless we explictly reference a symbol from it
563- # the linker will ignore the whole library.
564- # TODO(sbc): Replace with `LINK_LIBRARY:WHOLE_ARCHIVE` once we bump the min
565- # cmake version 3.24.
566- target_link_libraries (binaryen_wasm PRIVATE "-sEXPORTED_FUNCTIONS=_malloc,_free,__i32_load" )
567- target_link_libraries (binaryen_wasm PRIVATE "--post-js=${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.js-post.js" )
568- target_link_libraries (binaryen_wasm PRIVATE optimized "--closure=1" )
569- # TODO: Fix closure warnings! (#5062)
570- target_link_libraries (binaryen_wasm PRIVATE optimized "-Wno-error=closure" )
571- target_link_libraries (binaryen_wasm PRIVATE debug "--profiling" )
572- # Avoid catching exit as that can confuse error reporting in Node,
573- # see https://github.com/emscripten-core/emscripten/issues/17228
574- target_link_libraries (binaryen_wasm PRIVATE "-sNODEJS_CATCH_EXIT=0" )
575- install (TARGETS binaryen_wasm DESTINATION ${CMAKE_INSTALL_BINDIR} )
576-
577- # binaryen.js JavaScript variant
578- add_executable (binaryen_js ${binaryen_HEADERS} )
579546 target_link_libraries (binaryen_js PRIVATE binaryen)
580- target_link_libraries (binaryen_js PRIVATE "-sWASM=0" )
581- target_link_libraries (binaryen_js PRIVATE "-sWASM_ASYNC_COMPILATION=0" )
582-
583- if (${CMAKE_CXX_COMPILER_VERSION} STREQUAL "6.0.1" )
584- # only valid with fastcomp and WASM=0
585- target_link_libraries (binaryen_js PRIVATE "-sELIMINATE_DUPLICATE_FUNCTIONS" )
586- endif ()
587- # Disabling filesystem and setting web environment for js_of_ocaml
588- # so it doesn't try to detect the "node" environment
589- if (JS_OF_OCAML)
590- target_link_libraries (binaryen_js PRIVATE "-sFILESYSTEM=0" )
591- target_link_libraries (binaryen_js PRIVATE "-sENVIRONMENT=web,worker" )
592- else ()
593- target_link_libraries (binaryen_js PRIVATE "-sFILESYSTEM=1" )
594- endif ()
547+ target_link_libraries (binaryen_js PRIVATE "-sFILESYSTEM" )
548+ target_link_libraries (binaryen_js PRIVATE "-sEXPORT_NAME=Binaryen" )
595549 target_link_libraries (binaryen_js PRIVATE "-sNODERAWFS=0" )
596550 # Do not error on the repeated NODERAWFS argument
597551 target_link_libraries (binaryen_js PRIVATE "-Wno-unused-command-line-argument" )
552+ # Emit a single file for convenience of people using binaryen.js as a library,
553+ # so they only need to distribute a single file.
598554 if (EMSCRIPTEN_ENABLE_SINGLE_FILE)
599555 target_link_libraries (binaryen_js PRIVATE "-sSINGLE_FILE" )
600556 endif ()
601- target_link_libraries (binaryen_js PRIVATE "-sEXPORT_NAME=Binaryen" )
602- # Currently, js_of_ocaml can only process ES5 code
603557 if (JS_OF_OCAML)
604- target_link_libraries (binaryen_js PRIVATE "-sEXPORT_ES6=0" )
558+ # js_of_ocaml needs a specified variable with special comment to provide the library to consumer
559+ target_link_libraries (binaryen_js PRIVATE "--extern-pre-js=${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.jsoo-extern-pre.js" )
560+ # Currently, js_of_ocaml can only process ES5 code
561+ target_link_libraries (binaryen_js PRIVATE optimized "--closure-args=\" --language_out=ECMASCRIPT5\" " )
605562 else ()
606- target_link_libraries (binaryen_js PRIVATE "-sEXPORT_ES6=1" )
563+ # Currently, js_of_ocaml can only process ES5 code
564+ target_link_libraries (binaryen_js PRIVATE "-sEXPORT_ES6" )
607565 endif ()
608566 target_link_libraries (binaryen_js PRIVATE "-sEXPORTED_RUNTIME_METHODS=stringToUTF8OnStack,stringToAscii" )
609567 target_link_libraries (binaryen_js PRIVATE "-sEXPORTED_FUNCTIONS=_malloc,_free,__i32_load" )
610568 target_link_libraries (binaryen_js PRIVATE "--post-js=${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.js-post.js" )
611- # js_of_ocaml needs a specified variable with special comment to provide the library to consumers
612- if (JS_OF_OCAML)
613- target_link_libraries (binaryen_js PRIVATE "--extern-pre-js=${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.jsoo-extern-pre.js" )
614- endif ()
569+ target_link_libraries (binaryen_js PRIVATE "-msign-ext" )
570+ target_link_libraries (binaryen_js PRIVATE "-mbulk-memory" )
615571 target_link_libraries (binaryen_js PRIVATE optimized "--closure=1" )
616- # Currently, js_of_ocaml can only process ES5 code
617- if (JS_OF_OCAML)
618- target_link_libraries (binaryen_js PRIVATE optimized "--closure-args=\" --language_out=ECMASCRIPT5\" " )
619- endif ()
620572 # TODO: Fix closure warnings! (#5062)
621573 target_link_libraries (binaryen_js PRIVATE optimized "-Wno-error=closure" )
622574 target_link_libraries (binaryen_js PRIVATE debug "--profiling" )
623- target_link_libraries (binaryen_js PRIVATE debug "-sASSERTIONS" )
624575 # Avoid catching exit as that can confuse error reporting in Node,
625576 # see https://github.com/emscripten-core/emscripten/issues/17228
626577 target_link_libraries (binaryen_js PRIVATE "-sNODEJS_CATCH_EXIT=0" )
0 commit comments