@@ -403,14 +403,36 @@ if(EMSCRIPTEN)
403403 # only valid with fastcomp and WASM=0
404404 target_link_libraries (binaryen_js "-s ELIMINATE_DUPLICATE_FUNCTIONS=1" )
405405 endif ()
406- target_link_libraries (binaryen_js "-s NO_FILESYSTEM=0" )
406+ # Disabling filesystem and setting web environment for js_of_ocaml
407+ # so it doesn't try to detect the "node" environment
408+ if (JS_OF_OCAML)
409+ target_link_libraries (binaryen_js "-s NO_FILESYSTEM=1" )
410+ target_link_libraries (binaryen_js "-s ENVIRONMENT=web,worker" )
411+ else ()
412+ target_link_libraries (binaryen_js "-s NO_FILESYSTEM=0" )
413+ endif ()
407414 target_link_libraries (binaryen_js "-s NODERAWFS=0" )
408415 target_link_libraries (binaryen_js "-s EXPORT_NAME=Binaryen" )
409- target_link_libraries (binaryen_js "-s EXPORT_ES6=1" )
416+ # Currently, js_of_ocaml can only process ES5 code
417+ if (JS_OF_OCAML)
418+ target_link_libraries (binaryen_js "-s EXPORT_ES6=0" )
419+ else ()
420+ target_link_libraries (binaryen_js "-s EXPORT_ES6=1" )
421+ endif ()
410422 target_link_libraries (binaryen_js "--post-js ${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.js-post.js" )
411- target_link_libraries (binaryen_js "--extern-pre-js ${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.js-extern-pre.js" )
423+ # js_of_ocaml needs a specified variable with special comment to provide the library to consumers
424+ if (JS_OF_OCAML)
425+ target_link_libraries (binaryen_js "--extern-pre-js ${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.jsoo-extern-pre.js" )
426+ else ()
427+ target_link_libraries (binaryen_js "--extern-pre-js ${CMAKE_CURRENT_SOURCE_DIR} /src/js/binaryen.js-extern-pre.js" )
428+ endif ()
412429 target_link_libraries (binaryen_js optimized "--closure 1" )
413- target_link_libraries (binaryen_js optimized "--closure-args \" --language_in=ECMASCRIPT6 --language_out=ECMASCRIPT6\" " )
430+ # Currently, js_of_ocaml can only process ES5 code
431+ if (JS_OF_OCAML)
432+ target_link_libraries (binaryen_js optimized "--closure-args \" --language_in=ECMASCRIPT6 --language_out=ECMASCRIPT5\" " )
433+ else ()
434+ target_link_libraries (binaryen_js optimized "--closure-args \" --language_in=ECMASCRIPT6 --language_out=ECMASCRIPT6\" " )
435+ endif ()
414436 target_link_libraries (binaryen_js optimized "-flto" )
415437 target_link_libraries (binaryen_js debug "--profiling" )
416438 target_link_libraries (binaryen_js debug "-s ASSERTIONS" )
0 commit comments