@@ -12,12 +12,24 @@ def _normalize_path(path: Path | str) -> str:
1212 return str (path ).replace ('\\ ' , '/' )
1313
1414
15+ def _default_dll_name () -> str :
16+ vernum = sysconfig .get_config_var ('py_version_nodot' )
17+ if not vernum :
18+ vernum = f"{ sys .version_info .major } { sys .version_info .minor } "
19+ is_freethreaded = bool (sysconfig .get_config_var ('Py_GIL_DISABLED' ))
20+ if not is_freethreaded :
21+ abiflags = sysconfig .get_config_var ('ABIFLAGS' ) or getattr (sys , 'abiflags' , '' ) or ''
22+ is_freethreaded = 't' in abiflags
23+ suffix = 't' if is_freethreaded else ''
24+ return f'python{ vernum } { suffix } .dll'
25+
26+
1527def _normalize_dll_name (name : str ) -> str :
1628 if name .endswith ('.dll' ):
1729 return name
1830 if name .startswith ('lib' ) and name .endswith ('.dll.a' ):
19- return name [ 3 : - 2 ]
20- raise SystemExit ( f'Unexpected Python library name: { name } ' )
31+ return _default_dll_name ()
32+ return _default_dll_name ( )
2133
2234
2335def _find_dll (dll_name : str ) -> Path :
@@ -47,9 +59,7 @@ def main() -> None:
4759 lib_dir .mkdir (parents = True , exist_ok = True )
4860 pkgconfig_dir .mkdir (parents = True , exist_ok = True )
4961
50- raw_name = sysconfig .get_config_var ('DLLLIBRARY' ) or sysconfig .get_config_var ('LDLIBRARY' )
51- if not raw_name :
52- raise SystemExit ('Could not determine Python DLL name' )
62+ raw_name = sysconfig .get_config_var ('DLLLIBRARY' ) or sysconfig .get_config_var ('LDLIBRARY' ) or ''
5363 dll_name = _normalize_dll_name (raw_name )
5464 include_dir = sysconfig .get_config_var ('INCLUDEPY' )
5565 if not include_dir :
0 commit comments