@@ -25,7 +25,6 @@ HAVE_REWIND = 1
2525HAVE_AUDIOMIXER = 1
2626HAVE_CC_RESAMPLER = 1
2727HAVE_EGL    = 1
28- HAVE_OPENGLES = 1
2928HAVE_RJPEG  = 0
3029HAVE_RPNG   = 1
3130HAVE_EMSCRIPTEN = 1
@@ -58,34 +57,49 @@ HAVE_CHD ?= 0
5857#  You have been warned.
5958HAVE_RWEBAUDIO = 0
6059
61- ASYNC ?= 0
62- ifeq ($(LIBRETRO), mupen64plus)
63-    ASYNC = 1
64- endif
60+ # help diagnose GL problems (can cause issues in normal operation)
61+ GL_DEBUG ?= 0
6562
66- LTO ?= 0
67- ifeq ($(LIBRETRO), tyrquake)
68-    LTO = 0
69- endif
63+ # enable javascript filesystem tracking
64+ FS_DEBUG = 1
7065
71- PTHREAD ?= 0
66+ HAVE_OPENGLES ?= 1
67+ HAVE_OPENGLES3 ?= 0
7268
73- MEMORY ?= 134217728
69+ ASYNC ?= 0
70+ LTO ?= 0
71+ PTHREAD ?= 0
7472
75- PRECISE_F32 = 1
73+ STACK_SIZE ?= 4194304
74+ INITIAL_HEAP ?= 134217728
75+ 
76+ # 4194304 ----- 4 MiB (Stack: recommended)
77+ # 8388608 ----- 8 MiB
78+ # 16777216 ---- 16 MiB
79+ # 33554432 ---- 32 MiB
80+ # 67108864 ---- 64 MiB
81+ # 134217728 --- 128 MiB (Heap: recommended) (Stack: recommended for some cores [mupen64plus_next])
82+ # 268435456 --- 256 MiB (Heap: recommended for some cores [mupen64plus_next])
83+ # 536870912 --- 512 MiB (Heap: needed for some cores [mednafen_psx(_hw)])
84+ # 1073741824 -- 1 GiB
85+ # 1610612736 -- 1.5 GiB
86+ # 2147483648 -- 2 GiB
7687
7788OBJDIR := obj-emscripten
7889
79- #if you compile with SDL2 flag add this Emscripten flag "-s USE_SDL=2" to LDFLAGS:
90+ EXPORTED_FUNCTIONS = _main,_malloc,_free,_cmd_savefiles,_cmd_save_state,_cmd_load_state,_cmd_undo_save_state,_cmd_undo_load_state,_cmd_take_screenshot,\
91+ _cmd_toggle_menu,_cmd_reload_config,_cmd_toggle_grab_mouse,_cmd_toggle_game_focus,_cmd_reset,_cmd_toggle_pause,_cmd_pause,_cmd_unpause,\
92+ _cmd_set_volume,_cmd_set_shader,_cmd_cheat_set_code,_cmd_cheat_get_code,_cmd_cheat_toggle_index,_cmd_cheat_get_code_state,_cmd_cheat_realloc,\
93+ _cmd_cheat_get_size,_cmd_cheat_apply_cheats
8094
8195LIBS    := -s USE_ZLIB=1
82- LDFLAGS := -L. --no-heap-copy -s $(LIBS) -s TOTAL_MEMORY =$(MEMORY ) -s NO_EXIT_RUNTIME=0 -s FULL_ES2=1  \
83-            -s " EXPORTED_RUNTIME_METHODS=[' callMain', 'FS', ' PATH', ' ERRNO_CODES']"  \
84-            -s ALLOW_MEMORY_GROWTH=1 -s " EXPORTED_FUNCTIONS=['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot'] " \
96+ LDFLAGS := -L. --no-heap-copy -s $(LIBS) -s STACK_SIZE =$(STACK_SIZE ) -s INITIAL_MEMORY=$(INITIAL_HEAP)  \
97+            -s EXPORTED_RUNTIME_METHODS=callMain,FS, PATH, ERRNO_CODES,stringToNewUTF8,UTF8ToString  \
98+            -s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="$(EXPORTED_FUNCTIONS) " \
8599           -s MODULARIZE=1 -s EXPORT_ES6=1 -s EXPORT_NAME="libretro_$(subst -,_,$(LIBRETRO))" \
86-            -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1  \
87-            --js-library emscripten/library_errno_codes .js \
88-            --js-library emscripten/library_rwebcam .js
100+            --extern-pre-js emscripten/pre.js  \
101+            --js-library emscripten/library_rwebcam .js \
102+            --js-library emscripten/library_platform_emscripten .js
89103
90104ifeq ($(HAVE_RWEBAUDIO), 1)
91105   LDFLAGS += --js-library emscripten/library_rwebaudio.js
@@ -94,11 +108,11 @@ endif
94108ifeq ($(HAVE_AL), 1)
95109   LDFLAGS += -lopenal
96110   DEFINES += -DHAVE_AL
97-    ASYNC = 1
111+    override  ASYNC = 1
98112endif
99113
100114ifneq ($(PTHREAD), 0)
101-    LDFLAGS += -s WASM_MEM_MAX =1073741824 -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD)
115+    LDFLAGS += -s MAXIMUM_MEMORY =1073741824 -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD)
102116   CFLAGS += -pthread
103117   HAVE_THREADS=1
104118else
@@ -108,10 +122,26 @@ endif
108122ifeq ($(ASYNC), 1)
109123   LDFLAGS += -s ASYNCIFY=$(ASYNC) -s ASYNCIFY_STACK_SIZE=8192 
110124   ifeq ($(DEBUG), 1)
111-      LDFLAGS += -s ASYNCIFY_DEBUG=1 # -s ASYNCIFY_ADVISE
125+        LDFLAGS += -s ASYNCIFY_DEBUG=1 # -s ASYNCIFY_ADVISE
112126   endif
113127endif
114128
129+ ifeq ($(HAVE_OPENGLES), 1)
130+    ifeq ($(HAVE_OPENGLES3), 1)
131+       LDFLAGS += -s FULL_ES3=1 -s MIN_WEBGL_VERSION=2 -s MAX_WEBGL_VERSION=2
132+    else
133+       LDFLAGS += -s FULL_ES2=1
134+    endif
135+ endif
136+ 
137+ ifeq ($(GL_DEBUG), 1)
138+    LDFLAGS += -s GL_ASSERTIONS=1 -s GL_DEBUG=1
139+ endif
140+ 
141+ ifeq ($(FS_DEBUG), 1)
142+    LDFLAGS += -s FS_DEBUG=1
143+ endif
144+ 
115145ifeq ($(HAVE_SDL2), 1)
116146   LIBS += -s USE_SDL=2
117147   DEFINES += -DHAVE_SDL2
@@ -121,12 +151,14 @@ include Makefile.common
121151
122152CFLAGS += $(DEF_FLAGS) -Ideps -Ideps/stb
123153
124- libretro :=
154+ libretro     =
155+ libretro_new =
125156
126157ifeq ($(HAVE_STATIC_DUMMY),1)
127158  DEFINES += -DHAVE_STATIC_DUMMY
128159else
129-   libretro += libretro_emscripten.bc
160+   libretro     = libretro_emscripten.bc
161+   libretro_new = libretro_emscripten.a
130162endif
131163
132164ifneq ($(V), 1)
@@ -135,31 +167,26 @@ endif
135167
136168ifeq ($(DEBUG), 1)
137169   LDFLAGS += -O0 -g -gsource-map -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2 -s ASSERTIONS=1
138-    CFLAGS += -O0 -g -gsource-map -s SAFE_HEAP=1 -s SAFE_HEAP_LOG=1 -s STACK_OVERFLOW_CHECK=2 -s ASSERTIONS=1 
170+    CFLAGS += -O0 -g -gsource-map
139171else
140-    LDFLAGS += -O3 -s WASM=1 
172+    LDFLAGS += -O3
141173   # WARNING: some optimizations can break some cores (ex: LTO breaks tyrquake)
142-    LDFLAGS += -s PRECISE_F32=$(PRECISE_F32)
143174   ifeq ($(LTO), 1)
144-       LDFLAGS += --llvm-lto 3 
175+       LDFLAGS += -flto 
145176   endif
146177   CFLAGS += -O3
147178endif
148179
149- # 128 * 1024, double the usual emscripten stack size
150- LDFLAGS += -s STACK_SIZE=131072
151- 
152- LDFLAGS += --extern-pre-js emscripten/pre.js
153- 
154180CFLAGS += -Wall -I. -Ilibretro-common/include -Ideps/7zip -std=gnu99
155181
156182RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
157183
158184all: $(TARGET)
159185
160186$(TARGET): $(RARCH_OBJ) $(libretro)
161- 	@$(if $(Q), $(shell echo echo LD $@),)
162- 	$(Q)$(LD) -o $@ $(RARCH_OBJ) $(libretro) $(LIBS) $(LDFLAGS)
187+ 	@$(if $(libretro), mv -f $(libretro) $(libretro_new),)
188+ 	@$(if $(Q), $(shell echo echo "LD $@ \<obj\> $(libretro_new) $(LIBS) $(LDFLAGS)"),)
189+ 	$(Q)$(LD) -o $@ $(RARCH_OBJ) $(libretro_new) $(LIBS) $(LDFLAGS)
163190
164191$(OBJDIR)/%.o: %.c
165192	@mkdir -p $(dir $@)
0 commit comments