@@ -121,8 +121,8 @@ else:
121121 CPU = arglist ("-D_FILE_OFFSET_BITS=64 -mcpu=bleeding-edge -m64" )
122122
123123
124- # try to keep 32 but maybe with 64 iface (bigint)
125- WASM_EXTRA = env ("WASM_EXTRA" , "" ) + " " + env ( " WASM_OPTS" , "" )
124+ # try to keep 32 but with 64 iface (bigint)
125+ WASM_OPTS = env ("WASM_OPTS" , "-sWASM_BIGINT -sMIN_SAFARI_VERSION=150000 " )
126126
127127
128128# the only sane default for now
@@ -264,8 +264,6 @@ else:
264264
265265 elif not STATIC :
266266 if arg .endswith (".so" ):
267- if not IS_SHARED :
268- LINKING = True
269267
270268 if arg .startswith ("/usr/lib" ):
271269 arg = f"-l{ arg .rsplit ('/' ,1 )[- 1 ][3 :- 3 ]} "
@@ -274,6 +272,7 @@ else:
274272
275273 if arg .find ("wasm32-emscripten.so" ) > 0 or arg .find ("abi3.so" ) > 0 :
276274 PY_MODULE = True
275+ LINKING = True
277276 SHARED_TARGET = arg
278277
279278 # FIX linking .so when it should have been .a for final exe without MAIN_MODULE set
@@ -291,6 +290,7 @@ else:
291290 # TODO check is -shared implies -sSIDE_MODULE=1
292291 elif arg == "-shared" :
293292 IS_SHARED = True
293+ MAIN_MODULE = False
294294 continue
295295
296296 # duplicates can happen on cmake/rustc but they are expected to be here for a reason so skip them
@@ -397,8 +397,9 @@ else:
397397 except Exception as e :
398398 dbg ("ERROR: 312" , e )
399399
400- if SIZEOPT :
401- final .append ("-sENVIRONMENT=node" )
400+ # TODO: opt for size should only use 1 platform
401+ # if SIZEOPT:
402+ # final.append("-sENVIRONMENT=node")
402403
403404 # error: explicitly setting EXIT_RUNTIME not compatible with STANDALONE_WASM.
404405 # EXIT_RUNTIME will always be True for programs (with a main function) and False for reactors (not main function).
@@ -410,30 +411,34 @@ else:
410411
411412 __import__ ("atexit" ).register (make_exe )
412413 elif HTML :
413- if SIZEOPT and ("-sENVIRONMENT=web" not in out ):
414- final .append ("-sENVIRONMENT=web" )
414+ # TODO: opt for size should only use 1 platform
415+ # if SIZEOPT and ("-sENVIRONMENT=web" not in out):
416+ # final.append("-sENVIRONMENT=web")
417+ pass
418+
419+ final .extend (arglist ("-fPIC" , WASM_OPTS , "-D__PYDK__=1" ))
415420
421+ if LINKING :
422+ if MAIN_MODULE :
423+ # TODO: module level
424+ # -gsource-map --source-map-base /
425+ pass
426+ elif IS_SHARED or PY_MODULE :
427+ SHARED = f"-shared -sASSERTIONS=0 -sSIDE_MODULE=1"
428+
429+ final .extend (arglist (SHARED , LOPTS ))
430+ final .append (f"-L{ PREFIX } /lib" )
431+ final .extend (arglist (env ("LDFLAGS" , "" )))
416432
417- if IS_SHARED or LINKING or PY_MODULE :
418- SHARED = f"-shared -sASSERTIONS=0 -sSIDE_MODULE=1"
419- final .extend (arglist ("-fPIC" , SHARED , LOPTS ))
420433 else :
421434 # maybe not pass all WASM opts when -c + -o but always PIC and opt level
422- final .extend (arglist ("-fPIC" , SHARED , COPTS ))
435+ final .append (f"-I{ PREFIX } /include" )
436+ final .extend (arglist (COPTS ))
437+
423438
424439 # prevent use of extended instr
425440 final .extend (CPU )
426441
427- if IS_SHARED or LINKING :
428- final .append (f"-L{ PREFIX } /lib" )
429- final .extend (arglist (WASM_EXTRA , env ("LDFLAGS" , "" )))
430- else :
431- final .append (f"-I{ PREFIX } /include" )
432- if MAIN_MODULE :
433- # TODO: module level
434- # -gsource-map --source-map-base /
435- pass
436- final .extend (arglist (WASM_EXTRA , "-D__PYDK__=1" ))
437442
438443 final .extend (out )
439444 final .extend (COMMON )
0 commit comments