@@ -25,7 +25,6 @@ HAVE_REWIND = 1
25
25
HAVE_AUDIOMIXER = 1
26
26
HAVE_CC_RESAMPLER = 1
27
27
HAVE_EGL = 1
28
- HAVE_OPENGLES = 1
29
28
HAVE_RJPEG = 0
30
29
HAVE_RPNG = 1
31
30
HAVE_EMSCRIPTEN = 1
@@ -58,34 +57,49 @@ HAVE_CHD ?= 0
58
57
# You have been warned.
59
58
HAVE_RWEBAUDIO = 0
60
59
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
65
62
66
- LTO ?= 0
67
- ifeq ($(LIBRETRO), tyrquake)
68
- LTO = 0
69
- endif
63
+ # enable javascript filesystem tracking
64
+ FS_DEBUG = 1
70
65
71
- PTHREAD ?= 0
66
+ HAVE_OPENGLES ?= 1
67
+ HAVE_OPENGLES3 ?= 0
72
68
73
- MEMORY ?= 134217728
69
+ ASYNC ?= 0
70
+ LTO ?= 0
71
+ PTHREAD ?= 0
74
72
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
76
87
77
88
OBJDIR := obj-emscripten
78
89
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
80
94
81
95
LIBS := -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) " \
85
99
-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
89
103
90
104
ifeq ($(HAVE_RWEBAUDIO), 1)
91
105
LDFLAGS += --js-library emscripten/library_rwebaudio.js
@@ -94,11 +108,11 @@ endif
94
108
ifeq ($(HAVE_AL), 1)
95
109
LDFLAGS += -lopenal
96
110
DEFINES += -DHAVE_AL
97
- ASYNC = 1
111
+ override ASYNC = 1
98
112
endif
99
113
100
114
ifneq ($(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)
102
116
CFLAGS += -pthread
103
117
HAVE_THREADS=1
104
118
else
@@ -108,10 +122,26 @@ endif
108
122
ifeq ($(ASYNC), 1)
109
123
LDFLAGS += -s ASYNCIFY=$(ASYNC) -s ASYNCIFY_STACK_SIZE=8192
110
124
ifeq ($(DEBUG), 1)
111
- LDFLAGS += -s ASYNCIFY_DEBUG=1 # -s ASYNCIFY_ADVISE
125
+ LDFLAGS += -s ASYNCIFY_DEBUG=1 # -s ASYNCIFY_ADVISE
112
126
endif
113
127
endif
114
128
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
+
115
145
ifeq ($(HAVE_SDL2), 1)
116
146
LIBS += -s USE_SDL=2
117
147
DEFINES += -DHAVE_SDL2
@@ -121,12 +151,14 @@ include Makefile.common
121
151
122
152
CFLAGS += $(DEF_FLAGS) -Ideps -Ideps/stb
123
153
124
- libretro :=
154
+ libretro =
155
+ libretro_new =
125
156
126
157
ifeq ($(HAVE_STATIC_DUMMY),1)
127
158
DEFINES += -DHAVE_STATIC_DUMMY
128
159
else
129
- libretro += libretro_emscripten.bc
160
+ libretro = libretro_emscripten.bc
161
+ libretro_new = libretro_emscripten.a
130
162
endif
131
163
132
164
ifneq ($(V), 1)
@@ -135,31 +167,26 @@ endif
135
167
136
168
ifeq ($(DEBUG), 1)
137
169
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
139
171
else
140
- LDFLAGS += -O3 -s WASM=1
172
+ LDFLAGS += -O3
141
173
# WARNING: some optimizations can break some cores (ex: LTO breaks tyrquake)
142
- LDFLAGS += -s PRECISE_F32=$(PRECISE_F32)
143
174
ifeq ($(LTO), 1)
144
- LDFLAGS += --llvm-lto 3
175
+ LDFLAGS += -flto
145
176
endif
146
177
CFLAGS += -O3
147
178
endif
148
179
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
-
154
180
CFLAGS += -Wall -I. -Ilibretro-common/include -Ideps/7zip -std=gnu99
155
181
156
182
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
157
183
158
184
all: $(TARGET)
159
185
160
186
$(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)
163
190
164
191
$(OBJDIR)/%.o: %.c
165
192
@mkdir -p $(dir $@)
0 commit comments