o
    IAfU                     @   s   	 d dl Z d dlZd dlZg dZdZdZdZd-ddZd.d	d
Zdd Z	da
dd Zdadd Zdd Zdd Zdadd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, ZdS )/    N)compiler_fixupcustomize_config_varscustomize_compilerget_platform_osx)CFLAGSZLDFLAGSZCPPFLAGSZ
BASECFLAGS	BLDSHAREDLDSHAREDCCCXXZ	PY_CFLAGSZ
PY_LDFLAGSZPY_CPPFLAGSZPY_CORE_CFLAGSZPY_CORE_LDFLAGS)r   r   r	   r
   Z_OSX_SUPPORT_INITIAL_c                 C   s   	 |d u r
t jd }|t j}t j| \}}tjdkr%|dkr%| d } t j| sC|D ]}t j	|| }t j|r@|  S q-d S | S )NPATHwin32z.exe)
osenvironsplitpathseppathsplitextsysplatformisfilejoin)
executabler   pathsbaseextpf r   #/usr/lib/python3.10/_osx_support.py_find_executable   s   
r   Fc                 C   s   	 dd l }z
dd l}| }W n ty"   tdt f d}Y nw ||)}|r3d| |jf }nd| |jf }t	|sH|
 d nd W  d    S 1 sTw   Y  d S )Nr   z/tmp/_osx_support.%szw+bz%s >'%s' 2>&1z%s 2>/dev/null >'%s'utf-8)
contextlibtempfileNamedTemporaryFileImportErroropenr   getpidclosingnamesystemreaddecodestrip)ZcommandstringZcapture_stderrr!   r"   fpcmdr   r   r   _read_output7   s$   $r/   c                 C   s   	 t | ptd| f pdS )Nz/usr/bin/xcrun -find %s )r   r/   )Ztoolnamer   r   r   _find_build_toolM   s   r1   c                  C   s   	 t d u rAda ztddd} W n
 ty   Y t S w ztd|  }W |   n|   w |d urAd|d	dd d a t S )	Nr0   z0/System/Library/CoreServices/SystemVersion.plistr    )encodingz=<key>ProductUserVisibleVersion</key>\s*<string>(.*?)</string>.      )
_SYSTEM_VERSIONr%   OSErrorresearchr*   closer   groupr   )r   mr   r   r   _get_system_versionV   s"   	r=   c                  C   sP   	 t d u r&t } | r&ztdd | dD a W t S  ty%   da Y t S w t S )Nc                 s       | ]}t |V  qd S Nint.0ir   r   r   	<genexpr>       z,_get_system_version_tuple.<locals>.<genexpr>r3   r   )_SYSTEM_VERSION_TUPLEr=   tupler   
ValueErrorZosx_versionr   r   r   _get_system_version_tupleu   s   rK   c                 C   s$   	 t | D ]
}|tr| |= qd S r?   )list
startswith_INITPRE)_config_varskr   r   r   _remove_original_values   s   
rQ   c                 C   s:   	 |  |d}||krt| | vr|| t| < || |< d S )Nr0   )getrN   )rO   cvZnewvalueZoldvaluer   r   r   _save_modified_value   s
   rT   c                 C   s   	 t d urt S td| f d}d}| D ]*}|drd}q|dr'd}q|r?| }|dkr4da q|dr?|d d	 a qt d u rFda t S )
Nz%s -c -E -v - </dev/nullTFz#include <...>zEnd of search listz/usr/include/z.sdk/usr/includei)_cache_default_sysrootr/   
splitlinesrM   r,   endswith)cccontentsZ
in_incdirsliner   r   r   _default_sysroot   s(   


r\   c                  C   s   	 t  } | rt| dkS dS )N
      F)rK   boolrJ   r   r   r   _supports_universal_builds   s   ra   c                  C   s   	 t  } | r
| dkS dS )N)   r   F)rK   rJ   r   r   r   _supports_arm64_builds   s   rc   c                 C   s   	 dt jv r| S | d  d  }}t|std}nt j|dr9td|	ddf }|r9d|v r9td}|s?t
d	||krltD ]&}|| v rk|t jvrk| |  }|d
kr\|n|d |d< t| |d| qE| S )Nr	   r   ZclangZgccz'%s' --version''"'"'zllvm-gcczCannot locate working compilerr
   z++ )r   r   r   r   r1   r   basenamerM   r/   replaceSystemError_COMPILER_CONFIG_VARSrT   r   )rO   rY   ZoldccdatarS   Zcv_splitr   r   r   _find_appropriate_compiler   s0   

rl   c                 C   sX   	 t D ]&}|| v r)|tjvr)| | }tjdd|tjd}tdd|}t| || q| S )N-arch\s+\w+\srf   )flagsz-isysroot\s*\S+)_UNIVERSAL_CONFIG_VARSr   r   r8   subASCIIrT   )rO   rS   rn   r   r   r   _remove_universal_flags  s   rr   c                 C   s   	 dt jv r| S td| d d urAt d| d ddf }|rAtD ]}|| v r@|t jvr@| | }tdd|}t| || q$| S )	Nr	   z-arch\s+ppcr   zNecho 'int main{};' | '%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/nullrd   re   z-arch\s+ppc\w*\srf   )	r   r   r8   r9   r)   rh   ro   rp   rT   )rO   statusrS   rn   r   r   r   _remove_unsupported_archs  s"   
	rt   c                 C   sf   	 dt jv r1t jd }tD ]#}|| v r0d| | v r0| | }tdd|}|d | }t| || q| S )N	ARCHFLAGS-archrm   rf   )r   r   ro   r8   rp   rT   )rO   ZarchrS   rn   r   r   r   _override_all_archs:  s   

rw   c                 C   sz   	 |  dd}td|}|d ur;|d}tj|s;tD ]}|| v r:|tjvr:| | }t	dd|}t
| || q| S )Nr   r0   z-isysroot\s*(\S+)r4   z-isysroot\s*\S+(?:\s|$)rf   )rR   r8   r9   r;   r   r   existsro   r   rp   rT   )rO   cflagsr<   ZsdkrS   rn   r   r   r   _check_for_unavailable_sdkK  s   
rz   c           	      C   s  	 d }}t | } t sd }}nd|v }tdd |D }|s%dtjv r@	 z| d}| ||d = W n	 ty=   Y nw q&n#t sctt	t
| D ]}| | dkrb| |d  d	krb| ||d = qKdtjv rs|ss| tjd   } |r	 d
d t| D }|sn|d }| | dkr| ||d = n| ||d = qvd }|}dd t|D }|s| }dd t| D }|D ]}|| dkr||d  } n|| t
dd  } |rtj|stjd| d tjd tj  | S )NFTrv   c                 s   s    | ]
}| d r|V  qdS )	-isysrootNrM   )rC   argr   r   r   rE   y  s    z!compiler_fixup.<locals>.<genexpr>ru   r5   r4   arm64c                 S      g | ]\}}| d r|qS r{   r|   rC   rD   xr   r   r   
<listcomp>      z"compiler_fixup.<locals>.<listcomp>r   r{   c                 S   r   r   r|   r   r   r   r   r     r   c                 S   r   r   r|   r   r   r   r   r     r   z2Compiling with an SDK that doesn't seem to exist: 
z%Please check your Xcode installation
)rL   ra   anyr   r   indexrI   rc   reversedrangelenr   	enumerater   isdirr   stderrwriteflush)	Zcompiler_soZcc_argsZ	stripArchZstripSysrootr   idxindicesZsysrootZargvarr   r   r   r   f  sf   


r   c                 C   s$   	 t  st|  t|  t|  | S r?   )ra   rr   rw   rz   rO   r   r   r   r     s   r   c                 C   s   	 t |  t|  t|  | S r?   )rl   rt   rw   r   r   r   r   r     s
   r   c                 C   sr  	 |  dd}t p|}|p|}|r|}d}|  td |  dd}|rBztdd |ddd	 D }W n tyA   d
}Y nw d
}|dkrd| v rd}td|}tt	t
|}t|dkri|d }nK|dkrpd}nD|dkrwd}n=|dkr~d}n6|dkrd}n/|dkrd}n(|dkrd}n!td|f |dkrtjdkrd}n|dv rtjdkrd }nd!}|||fS )"NZMACOSX_DEPLOYMENT_TARGETr0   Zmacosxr   c                 s   r>   r?   r@   rB   r   r   r   rE     rF   z#get_platform_osx.<locals>.<genexpr>r3   r   r5   )r^      r]   rv   Zfatz-arch\s+(\S+)r4   )r~   x86_64Z
universal2)i386ppc)r   r   Zintel)r   r   r   Zfat3)ppc64r   Zfat64)r   r   r   r   	universalz%Don't know machine value for archs=%rr   l        r   )ZPowerPCZPower_Macintoshr   r   )rR   r=   rN   rH   r   rI   r,   r8   findallsortedsetr   r   maxsize)rO   ZosnamereleasemachineZmacverZ
macreleasery   Zarchsr   r   r   r     s^   	


$



r   r?   )F)r   r8   r   __all__ro   rj   rN   r   r/   r1   r6   r=   rG   rK   rQ   rT   rV   r\   ra   rc   rl   rr   rt   rw   rz   r   r   r   r   r   r   r   r   <module>   s<    


	

>(P)