@@ -10,6 +10,10 @@ def dbg(*argv, **kw):
10
10
return print (* argv , ** kw )
11
11
12
12
13
+ SDKROOT = Path (os .environ .get ("SDKROOT" ,"/opt/python-wasm-sdk" ))
14
+ EMSDK = Path (os .environ .get ("EMSDK" ,"/opt/python-wasm-sdk/emsdk" ))
15
+ PREFIX = Path (os .environ .get ("PREFIX" ,"/opt/python-wasm-sdk/devices/emsdk/usr" ))
16
+
13
17
sys .argv .pop (0 )
14
18
15
19
EXEC = sys .argv .pop (0 )
@@ -174,7 +178,6 @@ for argc, arg in enumerate(sys.argv):
174
178
EXE = sys .argv [EXE_POS ]
175
179
176
180
elif arg .endswith (".so" ) or arg == "-shared" or arg .find ("SIDE_MODULE" ) > 0 :
177
- LINKING = True
178
181
IS_SHARED = True
179
182
if arg == "-shared" :
180
183
pass
@@ -187,6 +190,9 @@ for argc, arg in enumerate(sys.argv):
187
190
SHARED = f"-shared -sSIDE_MODULE=1 -L{ os .environ ['PREFIX' ]} /lib"
188
191
continue
189
192
193
+ if arg .startswith ("-l" ):
194
+ LINKING = True
195
+
190
196
# prevent duplicates objects/archives files on cmdline when linking
191
197
if LINKING or MODE == "-o" :
192
198
if arg .endswith (".a" ) or arg .endswith (".o" ) or arg .startswith ("-l" ):
@@ -264,8 +270,10 @@ else:
264
270
265
271
if IS_SHARED or LINKING :
266
272
# , "-gsource-map --source-map-base /"))
273
+ final .append (f"-L{ PREFIX } /lib" )
267
274
final .extend (arglist (WASM_EXTRA , env ("LDFLAGS" , "" )))
268
275
else :
276
+ final .append (f"-I{ PREFIX } /include" )
269
277
if MAIN_MODULE :
270
278
# TODO: module level
271
279
# -gsource-map --source-map-base /
@@ -276,12 +284,15 @@ else:
276
284
final .extend (COMMON )
277
285
278
286
279
- if env ("EMCC_TRACE" , false ):
280
287
281
- def dump ():
282
- dbg (
283
- f"""
288
+ sys .path .insert (0 , str (Path (EXEC ).parent ))
289
+ sys .argv .clear ()
284
290
291
+ EMCC_TRACE = env ("EMCC_TRACE" , false )
292
+ if EMCC_TRACE :
293
+ DEBUG_PATTERN = env ("DEBUG_PATTERN" , "main" )
294
+ def dump ():
295
+ dbg (f"""
285
296
{ COMMON = }
286
297
287
298
{ CPU = }
@@ -296,20 +307,25 @@ if env("EMCC_TRACE", false):
296
307
297
308
{ final = }
298
309
310
+ { ' ' .join (sys .argv )}
299
311
"""
300
- )
312
+ )
301
313
302
- dump ()
303
- if os . path . isfile ( "conftest.c" ):
304
- __import__ ( "shutil" ). copy ( "conftest.c" , os . environ [ "SDKROOT" ] + "/emcc.c" )
314
+ while len ( final ):
315
+ arg = final . pop ( 0 )
316
+ # add debug filters here.
305
317
318
+ sys .argv .append (arg )
306
319
307
- sys .path .insert (0 , str (Path (EXEC ).parent ))
308
- sys .argv .clear ()
309
- while len (final ):
310
- arg = final .pop (0 )
311
- # add debug filters here.
312
320
313
- sys .argv .append (arg )
321
+ if os .path .isfile ("conftest.c" ):
322
+ __import__ ("shutil" ).copy ("conftest.c" , SDKROOT / "emcc.c" )
323
+ if DEBUG_PATTERN not in (False ,True ):
324
+ with open ("conftest.c" ,"r" ) as file :
325
+ if file .read ().find (DEBUG_PATTERN )> 0 :
326
+ dump ()
327
+
328
+ else :
329
+ sys .argv .extend (final )
314
330
315
331
exec (open (EXEC , "r" ).read (), globals (), globals ())
0 commit comments