@@ -122,10 +122,10 @@ else:
122122# try to keep 32 but maybe with 64 iface (bigint)
123123WASM_EXTRA = env ("WASM_EXTRA" , "" ) + " " + env ("WASM_OPTS" , "" )
124124
125- COPTS = env ("COPTS" , "-O0 " )
125+ COPTS = env ("COPTS" , "-O1 " )
126126
127127
128- MAIN_MODULE = LINKING = False
128+ MAIN_MODULE = LINKING = STATIC = False
129129
130130EXE = False
131131HTML = False
@@ -148,15 +148,12 @@ for argc, arg in enumerate(sys.argv):
148148 if arg in ("-l" , "-L" , "-I" ):
149149 sys .argv [argc ] += sys .argv [argc + 1 ]
150150 sys .argv [argc + 1 ] = ""
151+ RUSTC = True
151152
152153while "" in sys .argv :
153154 sys .argv .remove ("" )
154155
155156for argc , arg in enumerate (sys .argv ):
156- if arg in ("-v" , "--version" ):
157- SKIP = True
158- break
159-
160157 if arg .startswith ("CMakeFiles/" ) or arg .startswith ("@CMakeFiles/" ):
161158 CMAKE = True
162159
@@ -166,10 +163,25 @@ for argc, arg in enumerate(sys.argv):
166163 if arg .find ("MAIN_MODULE" ) > 0 :
167164 MAIN_MODULE = True
168165
166+ if arg == '-static' :
167+ STATIC = True
168+
169169 if arg == "-sENVIRONMENT=web" :
170170 EXE = False
171171 HTML = True
172172
173+
174+ for argc , arg in enumerate (sys .argv ):
175+ if arg in ("-v" , "--version" ):
176+ SKIP = True
177+ break
178+
179+ if not MAIN_MODULE :
180+ # https://github.com/emscripten-core/emscripten/issues/22742
181+ # https://github.com/hoodmane/emscripten/commit/34144634026c91a73bd3e1db85627132d3a37a6d
182+ if arg == "-lc" :
183+ continue
184+
173185 # only html may not exit runtime.
174186 if not HTML and arg .find ("EXIT_RUNTIME" ) > 0 :
175187 continue
@@ -187,10 +199,11 @@ for argc, arg in enumerate(sys.argv):
187199 if MVP :
188200 continue
189201
190- if arg in ("-O1" , "-O2" , "-O3" , "-Os" , "-Oz" ):
202+ if arg in ("-O0" , "- O1" , "-O2" , "-O3" , "-Os" , "-Oz" ):
191203 continue
192204
193- if arg in ("-g0" , "-g1" , "-g2" , "-g3" , "-g4" ):
205+ # keep g3
206+ if arg in ("-g0" , "-g1" , "-g2" , "-g4" ):
194207 continue
195208
196209 # FAILSAFE
@@ -204,11 +217,6 @@ for argc, arg in enumerate(sys.argv):
204217 if arg .startswith ("-L/usr/" ):
205218 continue
206219
207- # https://github.com/emscripten-core/emscripten/issues/22742
208- # https://github.com/hoodmane/emscripten/commit/34144634026c91a73bd3e1db85627132d3a37a6d
209- if arg == "-lc" :
210- continue
211-
212220 if arg .find ("ASSERTIONS" ) > 0 :
213221 continue
214222
@@ -219,8 +227,6 @@ for argc, arg in enumerate(sys.argv):
219227 # prevent duplicate lib when linking
220228 if arg in out :
221229 continue
222- else :
223- RUSTC = True
224230
225231 elif arg in ("-o" , "-c" ):
226232 MODE = arg
@@ -235,18 +241,19 @@ for argc, arg in enumerate(sys.argv):
235241 elif not AOUT :
236242 AOUT = sys .argv [out_pos ]
237243
238- elif arg .endswith (".so" ) or arg == "-shared" or arg .find ("SIDE_MODULE" ) > 0 :
239- IS_SHARED = True
240- if arg == "-shared" :
241- pass
242- elif arg .endswith (".so" ):
243- if arg .find ("wasm32-emscripten.so" ) > 0 or arg .find ("abi3.so" ) > 0 :
244- PY_MODULE = true
245- SHARED_TARGET = arg
246- out .append (arg )
247-
248- SHARED = f"-shared -sSIDE_MODULE=1 -L{ os .environ ['PREFIX' ]} /lib"
249- continue
244+ elif not STATIC :
245+ if arg .endswith (".so" ) or arg == "-shared" or arg .find ("SIDE_MODULE" ) > 0 :
246+ IS_SHARED = True
247+ if arg == "-shared" :
248+ pass
249+ elif arg .endswith (".so" ):
250+ if arg .find ("wasm32-emscripten.so" ) > 0 or arg .find ("abi3.so" ) > 0 :
251+ PY_MODULE = true
252+ SHARED_TARGET = arg
253+ out .append (arg )
254+
255+ SHARED = f"-shared -sASSERTIONS=0 -sSIDE_MODULE=1 -L{ os .environ ['PREFIX' ]} /lib"
256+ continue
250257
251258 # duplicates can happen on cmake/rustc but they are expected to be here for a reason so skip them
252259 if not (CMAKE or RUSTC ):
@@ -261,33 +268,27 @@ for argc, arg in enumerate(sys.argv):
261268os .environ .pop ("_EMCC_CCACHE" , "" )
262269
263270
264- """
265- if [ "$arg" = "-nomvp" ]
266- then
267- MVP=false
268- continue
269- fi
270-
271- if $MVP
272- then
273- if $WASM_PURE
274- then
275- SOTMP=$(mktemp).so
276- mv $SHARED_TARGET $SOTMP
277- # --memory64-lowering --signext-lowering
278- $SDKROOT/emsdk/upstream/bin/wasm-emscripten-finalize -mvp $SOTMP -o $SHARED_TARGET
279- [ -f $SHARED_TARGET.map ] && rm $SHARED_TARGET.map
280- rm $SOTMP
281- fi
282- fi
283- """
271+ # if $MVP
272+ # then
273+ # if $WASM_PURE
274+ # then
275+ # SOTMP=$(mktemp).so
276+ # mv $SHARED_TARGET $SOTMP
277+ # # --memory64-lowering --signext-lowering
278+ # $SDKROOT/emsdk/upstream/bin/wasm-emscripten-finalize -mvp $SOTMP -o $SHARED_TARGET
279+ # [ -f $SHARED_TARGET.map ] && rm $SHARED_TARGET.map
280+ # rm $SOTMP
281+ # fi
282+ # fi
283+
284284
285285final = [EXEC ]
286286
287287# a.out test misses fpic
288288if CONFIGURE and len (out ) == 1 :
289289 SKIP = out [0 ] == "conftest.c"
290290 sys .argv .insert (0 , "-fPIC" )
291+ sys .argv .insert (0 , "-sASSERTIONS=0" )
291292 sys .argv .extend (CPU )
292293
293294
@@ -370,7 +371,7 @@ else:
370371 if "-sENVIRONMENT=web" not in out :
371372 final .append ("-sENVIRONMENT=web" )
372373
373- # do not pass WASM opts when -c + -o but always PIC and opt level
374+ # maybe not pass all WASM opts when -c + -o but always PIC and opt level
374375 final .extend (arglist ("-fPIC" , SHARED , COPTS ))
375376
376377 # prevent use of extended instr
0 commit comments