@@ -300,29 +300,78 @@ def get_build_info():
300
300
301
301
config_args = sysconfig .get_config_var ('CONFIG_ARGS' ) or ''
302
302
cflags = sysconfig .get_config_var ('PY_CFLAGS' ) or ''
303
- cflags_nodist = sysconfig .get_config_var ('PY_CFLAGS_NODIST' ) or ''
303
+ cflags += ' ' + ( sysconfig .get_config_var ('PY_CFLAGS_NODIST' ) or '' )
304
304
ldflags_nodist = sysconfig .get_config_var ('PY_LDFLAGS_NODIST' ) or ''
305
305
306
306
build = []
307
307
308
308
# --disable-gil
309
309
if sysconfig .get_config_var ('Py_GIL_DISABLED' ):
310
- build .append ("free_threading" )
310
+ if not sys .flags .ignore_environment :
311
+ PYTHON_GIL = os .environ .get ('PYTHON_GIL' , None )
312
+ if PYTHON_GIL :
313
+ PYTHON_GIL = (PYTHON_GIL == '1' )
314
+ else :
315
+ PYTHON_GIL = None
316
+
317
+ free_threading = "free_threading"
318
+ if PYTHON_GIL is not None :
319
+ free_threading = f"{ free_threading } GIL={ int (PYTHON_GIL )} "
320
+ build .append (free_threading )
311
321
312
322
if hasattr (sys , 'gettotalrefcount' ):
313
323
# --with-pydebug
314
324
build .append ('debug' )
315
325
316
- if '-DNDEBUG' in ( cflags + cflags_nodist ) :
326
+ if '-DNDEBUG' in cflags :
317
327
build .append ('without_assert' )
318
328
else :
319
329
build .append ('release' )
320
330
321
331
if '--with-assertions' in config_args :
322
332
build .append ('with_assert' )
323
- elif '-DNDEBUG' not in ( cflags + cflags_nodist ) :
333
+ elif '-DNDEBUG' not in cflags :
324
334
build .append ('with_assert' )
325
335
336
+ # --enable-experimental-jit
337
+ tier2 = re .search ('-D_Py_TIER2=([0-9]+)' , cflags )
338
+ if tier2 :
339
+ tier2 = int (tier2 .group (1 ))
340
+
341
+ if not sys .flags .ignore_environment :
342
+ PYTHON_JIT = os .environ .get ('PYTHON_JIT' , None )
343
+ if PYTHON_JIT :
344
+ PYTHON_JIT = (PYTHON_JIT != '0' )
345
+ else :
346
+ PYTHON_JIT = None
347
+
348
+ if tier2 == 1 : # =yes
349
+ if PYTHON_JIT == False :
350
+ jit = 'JIT=off'
351
+ else :
352
+ jit = 'JIT'
353
+ elif tier2 == 3 : # =yes-off
354
+ if PYTHON_JIT :
355
+ jit = 'JIT'
356
+ else :
357
+ jit = 'JIT=off'
358
+ elif tier2 == 4 : # =interpreter
359
+ if PYTHON_JIT == False :
360
+ jit = 'JIT-interpreter=off'
361
+ else :
362
+ jit = 'JIT-interpreter'
363
+ elif tier2 == 6 : # =interpreter-off (Secret option!)
364
+ if PYTHON_JIT :
365
+ jit = 'JIT-interpreter'
366
+ else :
367
+ jit = 'JIT-interpreter=off'
368
+ elif '-D_Py_JIT' in cflags :
369
+ jit = 'JIT'
370
+ else :
371
+ jit = None
372
+ if jit :
373
+ build .append (jit )
374
+
326
375
# --enable-framework=name
327
376
framework = sysconfig .get_config_var ('PYTHONFRAMEWORK' )
328
377
if framework :
0 commit comments