@@ -65,7 +65,7 @@ COMMON = arglist(
6565false = False
6666true = True
6767
68- PY_MODULE = IS_SHARED = false
68+ TOGGLED_SHARED = PY_MODULE = IS_SHARED = false
6969SHARED_TARGET = SHARED = ""
7070
7171MVP = env ("MVP" , true )
@@ -267,8 +267,9 @@ else:
267267 continue
268268
269269 if arg .find ("wasm32-emscripten.so" ) > 0 or arg .find ("abi3.so" ) > 0 :
270- PY_MODULE = true
270+ PY_MODULE = True
271271 SHARED_TARGET = arg
272+ IS_SHARED = True
272273
273274 # FIX linking .so when it should have been .a for final exe without MAIN_MODULE set
274275 # should be "LINKING" state
@@ -285,9 +286,9 @@ else:
285286 # TODO check is -shared implies -sSIDE_MODULE=1
286287 elif arg == "-shared" :
287288 IS_SHARED = True
288- SHARED = f"-shared -sASSERTIONS=0 -sSIDE_MODULE=1 -L{ os .environ ['PREFIX' ]} /lib"
289289 continue
290290
291+
291292 # duplicates can happen on cmake/rustc but they are expected to be here for a reason so skip them
292293 if not (CMAKE or NINJA or RUSTC ):
293294 # prevent duplicates objects/archives files on cmdline when linking
@@ -408,14 +409,19 @@ else:
408409 if SIZEOPT and ("-sENVIRONMENT=web" not in out ):
409410 final .append ("-sENVIRONMENT=web" )
410411
412+
413+ if IS_SHARED and not TOGGLED_SHARED :
414+ TOGGLED_SHARED = True
415+ SHARED = f"-shared -sASSERTIONS=0 -sSIDE_MODULE=1 -L{ PREFIX } /lib"
416+
417+
411418 # maybe not pass all WASM opts when -c + -o but always PIC and opt level
412419 final .extend (arglist ("-fPIC" , SHARED , COPTS ))
413420
414421 # prevent use of extended instr
415422 final .extend (CPU )
416423
417424 if IS_SHARED or LINKING :
418- # , "-gsource-map --source-map-base /"))
419425 final .append (f"-L{ PREFIX } /lib" )
420426 final .extend (arglist (WASM_EXTRA , env ("LDFLAGS" , "" )))
421427 else :
0 commit comments