???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dU  ã                   @   sÜ   d dl Z d dlZd dlZddddg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 krt jd }| t j¡}t j | ¡\}}tjdkrH|dkrH| d } t j | ¡s„|D ]&}t j 	|| ¡}t j |¡rX|  S qXd S | S d S )NÚPATHZwin32z.exe)
ÚosÚenvironÚsplitÚpathsepÚpathÚsplitextÚsysÚplatformÚisfileÚjoin)Ú
executabler   ÚpathsÚbaseZextÚpÚf© r   ú$/usr/lib64/python3.8/_osx_support.pyÚ_find_executable   s    

r   Fc              
   C   sª   dd l }zdd l}| ¡ }W n( tk
rD   tdt ¡ f dƒ}Y nX | |¡P}|rfd| |jf }nd| |jf }t 	|¡s| 
¡  d¡ ¡ nd W  5 Q R £ S Q R X d S )Nr   z/tmp/_osx_support.%szw+bz%s >'%s' 2>&1z%s 2>/dev/null >'%s'zutf-8)Ú
contextlibÚtempfileZ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
    ÿþr-   c                  C   sx   t d krtda ztdƒ} W n tk
r,   Y nHX zt d|  ¡ ¡}W 5 |  ¡  X |d k	rtd | d¡ 	d¡d d… ¡a t S )Nr,   z0/System/Library/CoreServices/SystemVersion.plistz=<key>ProductUserVisibleVersion</key>\s*<string>(.*?)</string>Ú.é   é   )
Ú_SYSTEM_VERSIONr!   ÚOSErrorÚcloseÚreÚsearchr&   r   Úgroupr   )r   Úmr   r   r   Ú_get_system_versionV   s    
ÿ
r8   c                  C   sL   t d krHtƒ } | rHztdd„ |  d¡D ƒƒa W n tk
rF   da Y nX t S )Nc                 s   s   | ]}t |ƒV  qd S ©N©Úint©Ú.0Úir   r   r   Ú	<genexpr>   s     z,_get_system_version_tuple.<locals>.<genexpr>r.   r   )Ú_SYSTEM_VERSION_TUPLEr8   Útupler   Ú
ValueError©Zosx_versionr   r   r   Ú_get_system_version_tupleu   s    
rD   c                 C   s"   t | ƒD ]}| t¡r| |= qd S r9   )ÚlistÚ
startswithÚ_INITPRE)Ú_config_varsÚkr   r   r   Ú_remove_original_valuesˆ   s    
rJ   c                 C   s8   |   |d¡}||kr,t| | kr,|| t| < || |< d S )Nr,   )ÚgetrG   )rH   ÚcvZnewvalueZoldvaluer   r   r   Ú_save_modified_value   s    rM   c                 C   sŽ   t d k	rt S td| f dƒ}d}| ¡ D ]T}| d¡r<d}q(| d¡rLd}q(|r(| ¡ }|dkrfda q(| d¡r(|d d	… a q(t d krŠd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+   Ú
splitlinesrF   r(   Úendswith)ÚccÚcontentsZ
in_incdirsÚliner   r   r   Ú_default_sysroot™   s$    


rU   c                  C   s   t ƒ } | rt| dkƒS dS )N©é
   é   F)rD   ÚboolrC   r   r   r   Ú_supports_universal_builds²   s    rZ   c                  C   s   t ƒ } | r| dkS dS )N)é   r   F)rD   rC   r   r   r   Ú_supports_arm64_builds¼   s    r\   c                 C   sÚ   dt jkr| S | d  ¡ d  }}t|ƒs4tdƒ}n<t j |¡ d¡rptd| 	dd¡f ƒ}|rpd|krptdƒ}|s|t
d	ƒ‚||krÖtD ]L}|| krˆ|t jkrˆ| |  ¡ }|d
kr¶|n|d |d< t| |d |¡ƒ qˆ| S )Nr	   r   ZclangZgccz'%s' --versionú'ú'"'"'zllvm-gcczCannot locate working compilerr
   z++ú )r   r   r   r   r-   r   ÚbasenamerF   r+   ÚreplaceÚSystemErrorÚ_COMPILER_CONFIG_VARSrM   r   )rH   rR   ZoldccÚdatarL   Zcv_splitr   r   r   Ú_find_appropriate_compilerÆ   s,    

ÿÿre   c                 C   sV   t D ]L}|| kr|tjkr| | }tjdd|tjd}t dd|¡}t| ||ƒ q| S )Nú-arch\s+\w+\sr_   )Úflagsz-isysroot\s*\S+)Ú_UNIVERSAL_CONFIG_VARSr   r   r4   ÚsubÚASCIIrM   )rH   rL   rg   r   r   r   Ú_remove_universal_flags  s    rk   c                 C   s„   dt jkr| S t d| d ¡d k	r€t  d| d  dd¡f ¡}|r€tD ]8}|| krF|t jkrF| | }t dd|¡}t| ||ƒ qF| S )	Nr	   z-arch\s+ppcr   zNecho 'int main{};' | '%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/nullr]   r^   z-arch\s+ppc\w*\sr_   )	r   r   r4   r5   r%   ra   rh   ri   rM   )rH   ZstatusrL   rg   r   r   r   Ú_remove_unsupported_archs  s    
þÿ	rl   c                 C   sd   dt jkr`t jd }tD ]F}|| krd| | kr| | }t dd|¡}|d | }t| ||ƒ q| S )NÚ	ARCHFLAGSú-archrf   r_   )r   r   rh   r4   ri   rM   )rH   ZarchrL   rg   r   r   r   Ú_override_all_archs:  s    

ro   c                 C   sx   |   dd¡}t d|¡}|d k	rt| d¡}tj |¡sttD ]8}|| kr:|tjkr:| | }t 	dd|¡}t
| ||ƒ q:| S )Nr   r,   z-isysroot\s*(\S+)r/   z-isysroot\s*\S+(?:\s|$)r_   )rK   r4   r5   r6   r   r   Úexistsrh   r   ri   rM   )rH   Úcflagsr7   ZsdkrL   rg   r   r   r   Ú_check_for_unavailable_sdkK  s    
rr   c           
      C   sø  d }}t | ƒ} tƒ s d }}nd|k}tdd„ |D ƒƒ}|sHdtjkr‚z|  d¡}| ||d …= W qH tk
r|   Y qÈY qHX qHnFtƒ sÈtt	t
| ƒƒƒD ].}| | dkr˜| |d  d	kr˜| ||d …= q˜dtjkrè|sè| tjd  ¡  } |r@d
d„ t| ƒD ƒ}|s
q@|d }| | dkr0| ||d …= qî| ||d …= qîd }|}dd„ t|ƒD ƒ}|sv| }dd„ t| ƒD ƒ}|D ]B}|| dkr ||d  } q¾n|| t
dƒd … } q¾qz|rôtj |¡sôddlm}	 |	 d|¡ |	 d¡ | S )NFTrn   c                 s   s   | ]}|  d ¡r|V  qdS )ú	-isysrootN©rF   )r=   Úargr   r   r   r?   y  s     
 z!compiler_fixup.<locals>.<genexpr>rm   r0   r/   Úarm64c                 S   s   g | ]\}}|  d ¡r|‘qS ©rs   rt   ©r=   r>   Úxr   r   r   Ú
<listcomp>‘  s     
 z"compiler_fixup.<locals>.<listcomp>r   rs   c                 S   s   g | ]\}}|  d ¡r|‘qS rw   rt   rx   r   r   r   rz   ¡  s     
 c                 S   s   g | ]\}}|  d ¡r|‘qS rw   rt   rx   r   r   r   rz   ¤  s     
 )Úlogz4Compiling with an SDK that doesn't seem to exist: %sz$Please check your Xcode installation)rE   rZ   Úanyr   r   ÚindexrB   r\   ÚreversedÚrangeÚlenr   Ú	enumerater   ÚisdirZ	distutilsr{   Úwarn)
Zcompiler_soZcc_argsZ	stripArchZstripSysrootr}   ÚidxÚindicesZsysrootZargvarr{   r   r   r   r   f  sZ    	


ÿ
c                 C   s"   t ƒ st| ƒ t| ƒ t| ƒ | S r9   )rZ   rk   ro   rr   ©rH   r   r   r   r   ·  s
    c                 C   s   t | ƒ t| ƒ t| ƒ | S r9   )re   rl   ro   r†   r   r   r   r   à  s    	c                 C   sŒ  |   dd¡}tƒ p|}|p|}|r‚|}d}|   td |   dd¡¡}|rˆz$tdd„ | d¡dd	… D ƒƒ}W qŒ tk
r„   d
}Y qŒX nd
}|dkrFd| ¡ krFd}t d|¡}tt	t
|ƒƒƒ}t|ƒdkrÚ|d }nj|dkrèd}n\|dkröd}nN|dkrd}n>|dkrd}n.|dkr&d}n|dkr6d}ntd|f ƒ‚n<|dkrbtjdkr‚d}n |dkr‚tjdkr~d }nd!}|||fS )"NZMACOSX_DEPLOYMENT_TARGETr,   Zmacosxr   c                 s   s   | ]}t |ƒV  qd S r9   r:   r<   r   r   r   r?     s     z#get_platform_osx.<locals>.<genexpr>r.   r   r0   )rW   r   rV   rn   Zfatz-arch\s+(\S+)r/   )rv   Úx86_64Z
universal2)Úi386Úppc)rˆ   r‡   Zintel)rˆ   r‰   r‡   Zfat3)Úppc64r‡   Zfat64)rˆ   r‰   rŠ   r‡   Z	universalz%Don't know machine value for archs=%rrˆ   l        r‡   )ZPowerPCZPower_MacintoshrŠ   r‰   )rK   r8   rG   rA   r   rB   r(   r4   ÚfindallÚsortedÚsetr€   r   Úmaxsize)rH   ZosnameÚreleaseÚmachineZmacverZ
macreleaserq   Zarchsr   r   r   r   ô  sX    



ÿ$




ÿ

)N)F)r   r4   r   Ú__all__rh   rc   rG   r   r+   r-   r1   r8   r@   rD   rJ   rM   rO   rU   rZ   r\   re   rk   rl   ro   rr   r   r   r   r   r   r   r   r   Ú<module>   s@   ü


	

>(Q)