
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \ÂJ  ã               @   sº   d dl Z d dlZd dlZddddgZd0Zd1ZdZd2d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/d„ ZdS )3é    NÚcompiler_fixupÚcustomize_config_varsÚcustomize_compilerÚget_platform_osxÚCFLAGSÚLDFLAGSÚCPPFLAGSÚ
BASECFLAGSÚ	BLDSHAREDÚLDSHAREDÚCCÚCXXÚ	PY_CFLAGSÚ
PY_LDFLAGSÚPY_CPPFLAGSÚPY_CORE_CFLAGSÚPY_CORE_LDFLAGSZ_OSX_SUPPORT_INITIAL_c             C   sŒ   |d krt jd }|jt jƒ}t jj| ƒ\}}tjdkrH|dkrH| d } t jj| ƒs„x*|D ]"}t jj	|| ƒ}t jj|ƒrZ|S qZW d 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.6/_osx_support.pyÚ_find_executable   s    

r%   c             C   sŠ   dd l }ydd l}|jƒ }W n( tk
rD   tdtjƒ f dƒ}Y nX |j|ƒ�0}d| |jf }tj	|ƒs||j
ƒ jdƒjƒ S d S Q R X d S )Nr   z/tmp/_osx_support.%szw+bz%s 2>/dev/null >'%s'zutf-8)Ú
contextlibÚtempfileZNamedTemporaryFileÚImportErrorÚopenr   ÚgetpidÚclosingÚnameÚsystemÚreadÚdecodeÚstrip)Zcommandstringr&   r'   ÚfpÚcmdr#   r#   r$   Ú_read_output7   s    r3   c             C   s   t | ƒptd| f ƒpdS )Nz/usr/bin/xcrun -find %sÚ )r%   r3   )Ztoolnamer#   r#   r$   Ú_find_build_toolJ   s    r5   c              C   sx   t d krtda ytdƒ} W n tk
r,   Y nHX ztjd| jƒ ƒ}W d | jƒ  X |d k	rtdj|jdƒj	dƒd d… ƒa t S )Nr4   z0/System/Library/CoreServices/SystemVersion.plistz=<key>ProductUserVisibleVersion</key>\s*<string>(.*?)</string>Ú.é   é   )
Ú_SYSTEM_VERSIONr)   ÚOSErrorÚreÚsearchr.   Úcloser   Úgroupr   )r"   Úmr#   r#   r$   Ú_get_system_versionS   s    

r@   c             C   s&   x t | ƒD ]}|jtƒr
| |= q
W d S )N)ÚlistÚ
startswithÚ_INITPRE)Ú_config_varsÚkr#   r#   r$   Ú_remove_original_valuesq   s    
rF   c             C   s8   | j |dƒ}||kr,t| | kr,|| t| < || |< d S )Nr4   )ÚgetrC   )rD   ÚcvZnewvalueZoldvaluer#   r#   r$   Ú_save_modified_valuex   s    rI   c              C   sT   t ƒ } | r@ytdd„ | jdƒD ƒƒ} W n tk
r>   d} Y nX | rPt| dkƒS dS )	Nc             s   s   | ]}t |ƒV  qd S )N)Úint)Ú.0Úir#   r#   r$   ú	<genexpr>Š   s    z-_supports_universal_builds.<locals>.<genexpr>r6   r4   é
   é   F)rN   rO   )r@   Útupler   Ú
ValueErrorÚbool)Zosx_versionr#   r#   r$   Ú_supports_universal_builds€   s    
rS   c             C   sÞ   dt jkr| S | d jƒ d  }}t|ƒs4tdƒ}n<t jj|ƒjdƒrptd|j	ddƒf ƒ}|rpd|krptdƒ}|s|t
d	ƒ‚||krÚxTtD ]L}|| krŠ|t jkrŠ| | jƒ }|d
kr¸|n|d |d< t| |dj|ƒƒ qŠW | S )Nr   r   ZclangÚgccz'%s' --versionú'z'"'"'zllvm-gcczCannot locate working compilerr   z++ú )r   r   r   r%   r5   r   ÚbasenamerB   r3   ÚreplaceÚSystemErrorÚ_COMPILER_CONFIG_VARSrI   r   )rD   ZccZoldccÚdatarH   Zcv_splitr#   r#   r$   Ú_find_appropriate_compiler�   s(    


r\   c             C   sZ   xTt D ]L}|| kr|tjkr| | }tjdd|tjd�}tjdd|ƒ}t| ||ƒ qW | S )Nz-arch\s+\w+\srV   )Úflagsz-isysroot [^ 	]*)Ú_UNIVERSAL_CONFIG_VARSr   r   r;   ÚsubÚASCIIrI   )rD   rH   r]   r#   r#   r$   Ú_remove_universal_flagsÎ   s    
ra   c             C   sˆ   dt jkr| S tjd| d ƒd k	r„t jd| d jddƒf ƒ}|r„x@tD ]8}|| krH|t jkrH| | }tjdd|ƒ}t| ||ƒ qHW | S )	Nr   z-arch\s+ppcr   zNecho 'int main{};' | '%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/nullrU   z'"'"'z-arch\s+ppc\w*\srV   )	r   r   r;   r<   r-   rX   r^   r_   rI   )rD   ZstatusrH   r]   r#   r#   r$   Ú_remove_unsupported_archsÜ   s    
	
rb   c             C   sh   dt jkrdt jd }xNtD ]F}|| krd| | kr| | }tjdd|ƒ}|d | }t| ||ƒ qW | S )NÚ	ARCHFLAGSz-archz-arch\s+\w+\srV   )r   r   r^   r;   r_   rI   )rD   ZarchrH   r]   r#   r#   r$   Ú_override_all_archs  s    


rd   c             C   s|   | j ddƒ}tjd|ƒ}|d k	rx|jdƒ}tjj|ƒsxx@tD ]8}|| kr<|tjkr<| | }tj	dd|ƒ}t
| ||ƒ q<W | S )Nr   r4   z-isysroot\s+(\S+)r7   z-isysroot\s+\S+(?:\s|$)rV   )rG   r;   r<   r>   r   r   Úexistsr^   r   r_   rI   )rD   Úcflagsr?   ZsdkrH   r]   r#   r#   r$   Ú_check_for_unavailable_sdk  s    

rg   c             C   sX  d }}t | ƒ} tƒ s d }}nd|k}d|k}|s>dtjkrxx8y| jdƒ}| ||d …= W q@ tk
rr   P Y q@X q@W dtjkrš| rš| tjd jƒ  } |rØx8y| jdƒ}| ||d …= W q  tk
rÒ   P Y q X q W d }d|krü|jdƒ}||d  }n d| k�r| jdƒ}| |d  }|�rTtjj|ƒ �rTdd	l	m
} |jd
|ƒ |jdƒ | S )NFTz-archz	-isysrootrc   r8   r7   r   )Úlogz4Compiling with an SDK that doesn't seem to exist: %sz$Please check your Xcode installation)rA   rS   r   r   ÚindexrQ   r   r   ÚisdirZ	distutilsrh   Úwarn)Zcompiler_soZcc_argsZ	stripArchZstripSysrootri   ZsysrootÚidxrh   r#   r#   r$   r   0  sF    	






c             C   s"   t ƒ st| ƒ t| ƒ t| ƒ | S )N)rS   ra   rd   rg   )rD   r#   r#   r$   r   p  s
    c             C   s   t | ƒ t| ƒ t| ƒ | S )N)r\   rb   rd   )rD   r#   r#   r$   r   ™  s    	c             C   s|  | j ddƒ}tƒ p|}|p|}|�rr|}d}| j td | j ddƒƒ}|rˆy$tdd„ |jdƒdd	… D ƒƒ}W qŒ tk
r„   d}Y qŒX nd}|dkožd|jƒ k�r6d}tjd|ƒ}tt	t
|ƒƒƒ}t|ƒ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�r&d}ntd|f ƒ‚n<|dk�rRtjd$k�rrd}n |d%k�rrtjd&k�rnd}nd}|||fS )'NÚMACOSX_DEPLOYMENT_TARGETr4   Zmacosxr   c             s   s   | ]}t |ƒV  qd S )N)rJ   )rK   rL   r#   r#   r$   rM   Ç  s    z#get_platform_osx.<locals>.<genexpr>r6   r   r8   rN   rO   z-archZfatz-arch\s+(\S+)r7   Úi386ÚppcÚx86_64ZintelZfat3Úppc64Zfat64Z	universalz%Don't know machine value for archs=%ré    ÚPowerPCÚPower_Macintosh)rN   r   )rN   r   )rN   rO   )rn   ro   )rn   rp   )rn   ro   rp   )rq   rp   )rn   ro   rq   rp   l        )rs   rt   l        )rG   r@   rC   rP   r   rQ   r0   r;   ÚfindallÚsortedÚsetÚlenr   Úmaxsize)rD   ÚosnameÚreleaseÚmachineZmacverZ
macreleaserf   Zarchsr#   r#   r$   r   ­  sP    


$






)r   r   r   r	   r
   r   r   r   r   r   r   r   r   )r
   r   r   r   )N)r   r;   r   Ú__all__r^   rZ   rC   r%   r3   r5   r9   r@   rF   rI   rS   r\   ra   rb   rd   rg   r   r   r   r   r#   r#   r#   r$   Ú<module>   s:      
>(@)