diff --git a/Makefile.emscripten b/Makefile.emscripten index 0dfce81491..8879b5b81e 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten @@ -42,7 +42,8 @@ LIBS := -s USE_ZLIB=1 LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 -s TOTAL_MEMORY=$(MEMORY) -s NO_EXIT_RUNTIME=0 -s FULL_ES2=1 \ -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \ --js-library emscripten/library_rwebaudio.js \ - --js-library emscripten/library_rwebcam.js + --js-library emscripten/library_rwebcam.js \ + --js-library emscripten/library_errno_codes.js ifneq ($(PTHREAD), 0) LDFLAGS += -s USE_PTHREADS=$(PTHREAD) -s PTHREAD_POOL_SIZE=2 endif diff --git a/emscripten/library_errno_codes.js b/emscripten/library_errno_codes.js new file mode 100644 index 0000000000..7ec23ac3b4 --- /dev/null +++ b/emscripten/library_errno_codes.js @@ -0,0 +1,15 @@ +//"use strict"; + +// HACK: This is a dummy library that forces ERRNO_CODES to be used, so it's not optimized away. +// Needed for BrowserFS. + +var LibraryErrnoCodes = { + dummyErrnoCodes__deps: ['$ERRNO_CODES'], + dummyErrnoCodes: function() { + if (!ERRNO_CODES) { + console.error("ERRNO_CODES not imported!"); + } + } +}; + +mergeInto(LibraryManager.library, LibraryErrnoCodes); diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 949fab0d2b..b87addf509 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -47,6 +47,7 @@ #include "../../file_path_special.h" void RWebAudioRecalibrateTime(void); +void dummyErrnoCodes(void); static unsigned emscripten_fullscreen_reinit; static unsigned emscripten_frame_count = 0; @@ -226,6 +227,8 @@ int main(int argc, char *argv[]) { EMSCRIPTEN_RESULT r; + dummyErrnoCodes(); + emscripten_set_canvas_element_size("#canvas", 800, 600); emscripten_set_element_css_size("#canvas", 800.0, 600.0); emscripten_set_main_loop(emscripten_mainloop, 0, 0);