
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a\  ã                   @   s‚  d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlmZ dZz,d dlZdZeZejZejZejZejZW nh ek
rä   z4d dlZd dlZdZeZejZejZejZejZW n ek
rÞ   e d¡ Y nX Y nX erþejejejej fZ!dd	„ Z"d
d„ Z#dd„ Z$G dd„ dƒZ%dd„ Z&dd„ Z'dd„ Z(G dd„ de	ƒZ)e&ƒ dk�r~e *d¡ e)Z+d dl,m)Z) d dl,m%Z% dS )é    N)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚCompileErrorÚLibErrorÚ	LinkError)Ú	CCompilerÚgen_preprocess_optionsÚgen_lib_options)ÚlogFTz�Warning: Can't read registry to find the necessary compiler setting
Make sure that Python modules winreg, win32api or win32con are installed.c                 C   sn   zt | |ƒ}W n tk
r$   Y d S X g }d}zt||ƒ}W n tk
rT   Y qjY nX | |¡ |d7 }q.|S ©Nr   é   )ÚRegOpenKeyExÚRegErrorÚ
RegEnumKeyÚappend)ÚbaseÚkeyÚhandleÚLÚiÚk© r   ú;/opt/alt/python38/lib64/python3.8/distutils/msvccompiler.pyÚ	read_keys7   s    


r   c                 C   s‚   zt | |ƒ}W n tk
r$   Y d S X i }d}zt||ƒ\}}}W n tk
rZ   Y q~Y nX | ¡ }t|ƒ|t|ƒ< |d7 }q.|S r   )r   r   ÚRegEnumValueÚlowerÚconvert_mbcs)r   r   r   Údr   ÚnameÚvalueÚtyper   r   r   Úread_valuesH   s    

r!   c                 C   s:   t | dd ƒ}|d k	r6z|dƒ} W n tk
r4   Y nX | S )NÚdecodeÚmbcs)ÚgetattrÚUnicodeError)ÚsZdecr   r   r   r   ]   s    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMacroExpanderc                 C   s   i | _ |  |¡ d S ©N)ÚmacrosÚload_macros)ÚselfÚversionr   r   r   Ú__init__g   s    zMacroExpander.__init__c                 C   s2   t D ](}t||ƒ}|r|| | jd| <  q.qd S )Nz$(%s))ÚHKEYSr!   r)   )r+   ZmacroÚpathr   r   r   r   r   r   Ú	set_macrok   s
    
zMacroExpander.set_macroc           
   
   C   sø   d| }|   d|d d¡ |   d|d d¡ d}|   d|d	¡ z*|d
krX|   d|d¡ n|   d|d¡ W n* tk
r’ } ztdƒ‚W 5 d }~X Y nX d}tD ]V}zt||ƒ}W n tk
rÆ   Y qœY nX t|dƒ}t|d||f ƒ}	|	d | jd< qœd S )Nz%Software\Microsoft\VisualStudio\%0.1fZVCInstallDirz	\Setup\VCZ
productdirZVSInstallDirz	\Setup\VSz Software\Microsoft\.NETFrameworkZFrameworkDirZinstallrootg      @ZFrameworkSDKDirzsdkinstallrootv1.1Zsdkinstallroota  Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.z.Software\Microsoft\NET Framework Setup\Productr   z%s\%sr,   z$(FrameworkVersion))	r0   ÚKeyErrorr   r.   r   r   r   r!   r)   )
r+   r,   ZvsbaseZnetÚexcÚpr   Úhr   r   r   r   r   r*   r   s,    ÿ

zMacroExpander.load_macrosc                 C   s$   | j  ¡ D ]\}}| ||¡}q
|S r(   )r)   ÚitemsÚreplace)r+   r&   r   Úvr   r   r   ÚsubŽ   s    zMacroExpander.subN)Ú__name__Ú
__module__Ú__qualname__r-   r0   r*   r8   r   r   r   r   r'   f   s   r'   c                  C   sš   d} t j | ¡}|dkrdS |t| ƒ }t j|d …  dd¡\}}t|d d… ƒd }|dkrf|d7 }t|dd	… ƒd
 }|dkr†d}|dkr–|| S d S )NzMSC v.éÿÿÿÿé   ú r   éþÿÿÿé   é   é   g      $@r   )Úsysr,   ÚfindÚlenÚsplitÚint)Úprefixr   r&   ÚrestZmajorVersionZminorVersionr   r   r   Úget_build_version“   s    rJ   c                  C   s@   d} t j | ¡}|dkrdS t j d|¡}t j|t| ƒ |… S )Nz bit (r<   ÚIntelú))rC   r,   rD   rE   )rH   r   Újr   r   r   Úget_build_architecture¬   s    rN   c                 C   s0   g }| D ]"}t j |¡}||kr| |¡ q|S r(   )Úosr/   Únormpathr   )ÚpathsZreduced_pathsr3   Znpr   r   r   Únormalize_and_reduce_paths¹   s    rR   c                
   @   sÒ   e Zd ZdZi ZdgZdddgZdgZdgZee e e Z	dZ
d	Zd
ZdZd ZZdZd,dd„Zdd„ Zd-dd„Zd.dd„Zd/dd„Zd0dd„Zdd„ Zdd „ Zd!d"„ Zd1d#d$„Zd%d&„ Zd2d(d)„Zd*d+„ ZdS )3ÚMSVCCompilerZmsvcz.cz.ccz.cppz.cxxú.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c                 C   sv   t  | |||¡ tƒ | _tƒ | _| jdkr\| jdkrHd| _t| jƒ| _nd| _d| j | _	nd| jd  | _	d| _
d S )	NrK   é   zSoftware\Microsoft\VisualStudiozSoftware\Microsoft\DevstudiozVisual Studio version %szMicrosoft SDK compiler %sr=   F)r   r-   rJ   Ú_MSVCCompiler__versionrN   Ú_MSVCCompiler__archÚ_MSVCCompiler__rootr'   Ú_MSVCCompiler__macrosÚ_MSVCCompiler__productÚinitialized)r+   ÚverboseZdry_runZforcer   r   r   r-   æ   s    

zMSVCCompiler.__init__c                 C   sÀ  g | _ dtjkrDdtjkrD|  d¡rDd| _d| _d| _d| _d| _nx|  	d¡| _ t
| j ƒd	krltd
| j ƒ‚|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡ |  d¡ z&tjd  d¡D ]}| j  |¡ qÎW n tk
rö   Y nX t| j ƒ| _ d | j ¡tjd< d | _| jdk�rPddddddg| _dddddddg| _n&ddddddg| _dddddddg| _dddg| _| jdk�ržddddg| _ndddddg| _dg| _d | _d S )!NZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer/   r   zxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.ÚlibZincludeú;rK   z/nologoz/Oxz/MDz/W3z/GXz/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOrU   z/INCREMENTAL:noz/DEBUGz	/pdb:NoneT)Ú_MSVCCompiler__pathsrO   ÚenvironÚfind_exeÚccÚlinkerr]   ÚrcÚmcÚget_msvc_pathsrE   r   rZ   Úset_path_env_varrF   r   r1   rR   ÚjoinZpreprocess_optionsrW   Úcompile_optionsÚcompile_options_debugÚldflags_sharedrV   Úldflags_shared_debugZldflags_staticr[   )r+   r3   r   r   r   Ú
initializeø   sr    ý


ÿ
 ÿ
ÿ
 ÿ   ÿ    ÿzMSVCCompiler.initializeÚ c                 C   sÞ   |d krd}g }|D ]Ä}t j |¡\}}t j |¡d }|t j |¡d … }|| jkrbtd| ƒ‚|rrt j |¡}|| jkr˜| 	t j 
||| j ¡¡ q|| jkr¾| 	t j 
||| j ¡¡ q| 	t j 
||| j ¡¡ q|S )Nrn   r   zDon't know how to compile %s)rO   r/   ÚsplitextÚ
splitdriveÚisabsÚsrc_extensionsr   ÚbasenameÚ_rc_extensionsr   rh   Úres_extensionÚ_mc_extensionsÚobj_extension)r+   Zsource_filenamesZ	strip_dirÚ
output_dirZ	obj_namesZsrc_namer   Úextr   r   r   Úobject_filenames8  s.     

ÿ
ÿÿzMSVCCompiler.object_filenamesNc	                 C   sp  | j s|  ¡  |  ||||||¡}	|	\}}
}}}|p6g }| d¡ |rT| | j¡ n| | j¡ |
D �]}z|| \}}W n tk
r’   Y qdY nX |r¤tj	 
|¡}|| jkrºd| }�nT|| jkrÐd| }�n>|| jk�r<|}d| }z"|  | jg| |g |g ¡ W qd tk
�r6 } zt|ƒ‚W 5 d }~X Y qdX qdnÒ|| jk�rþtj	 |¡}tj	 |¡}zl|  | jgd|d|g |g ¡ tj	 tj	 |¡¡\}}tj	 ||d ¡}|  | jgd| g |g ¡ W qd tk
�rø } zt|ƒ‚W 5 d }~X Y qdX qdntd||f ƒ‚d	| }z&|  | jg| | ||g | ¡ W qd tk
�rh } zt|ƒ‚W 5 d }~X Y qdX qd|
S )
Nz/cz/Tcz/Tpz/foz-hz-rrT   z"Don't know how to compile %s to %sz/Fo)r[   rm   Z_setup_compiler   Úextendrj   ri   r1   rO   r/   ÚabspathÚ_c_extensionsÚ_cpp_extensionsrt   Úspawnrd   r   r   rv   Údirnamere   ro   rs   rh   rb   )r+   Zsourcesrx   r)   Zinclude_dirsÚdebugÚextra_preargsÚextra_postargsZdependsZcompile_infoÚobjectsZpp_optsZbuildZcompile_optsÚobjÚsrcry   Z	input_optZ
output_optÚmsgZh_dirZrc_dirr   Ú_Zrc_filer   r   r   ÚcompileW  sˆ    
  ÿ




ÿÿ


ÿÿ
ÿÿ
ÿÿþ
zMSVCCompiler.compilec           	   
   C   sž   | j s|  ¡  |  ||¡\}}| j||d�}|  ||¡rŽ|d| g }|rJz|  | jg| ¡ W qš tk
rŠ } zt|ƒ‚W 5 d }~X Y qšX nt	 
d|¡ d S )N)rx   ú/OUT:úskipping %s (up-to-date))r[   rm   Ú_fix_object_argsÚlibrary_filenameÚ
_need_linkr   r]   r   r   r
   r�   )	r+   r„   Zoutput_libnamerx   r�   Útarget_langÚoutput_filenameZlib_argsr‡   r   r   r   Úcreate_static_lib¬  s    ÿzMSVCCompiler.create_static_libc              
   C   sÒ  | j s|  ¡  |  ||¡\}}|  |||¡}|\}}}|rL|  dt|ƒ ¡ t| |||ƒ}|d k	rptj 	||¡}|  
||¡�rÂ|tjkr¬|	rœ| jdd … }q¾| jdd … }n|	r¸| j}n| j}g }|pÈg D ]}| d| ¡ qÊ|| | | d| g }|d k	�rHtj tj |¡¡\}}tj 	tj |d ¡|  |¡¡}| d| ¡ |
�rZ|
|d d…< |�rj| |¡ |  tj |¡¡ z|  | jg| ¡ W n, tk
�r¾ } zt|ƒ‚W 5 d }~X Y nX nt d|¡ d S )Nz5I don't know what to do with 'runtime_library_dirs': r   z/EXPORT:rŠ   r   z/IMPLIB:r‹   )r[   rm   rŒ   Z_fix_lib_argsÚwarnÚstrr	   rO   r/   rh   rŽ   r   Z
EXECUTABLErl   rk   r   ro   rs   r€   r�   r{   Zmkpathr   rc   r   r   r
   r�   )r+   Ztarget_descr„   r�   rx   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr�   r‚   rƒ   Z
build_tempr�   Z
fixed_argsZlib_optsZldflagsZexport_optsZsymZld_argsZdll_nameZdll_extZimplib_filer‡   r   r   r   ÚlinkÅ  sj    ÿ
ÿ þ

ÿÿ

ÿþ
zMSVCCompiler.linkc                 C   s   d| S )Nz	/LIBPATH:r   ©r+   Údirr   r   r   Úlibrary_dir_option  s    zMSVCCompiler.library_dir_optionc                 C   s   t dƒ‚d S )Nz<don't know how to set runtime library search path for MSVC++)r   r•   r   r   r   Úruntime_library_dir_option  s    ÿz'MSVCCompiler.runtime_library_dir_optionc                 C   s
   |   |¡S r(   )r�   )r+   r]   r   r   r   Úlibrary_option  s    zMSVCCompiler.library_optionc                 C   s\   |r|d |g}n|g}|D ]:}|D ]0}t j ||  |¡¡}t j |¡r$|    S q$qd S )NZ_d)rO   r/   rh   r�   Úexists)r+   Údirsr]   r�   Z	try_namesr–   r   Zlibfiler   r   r   Úfind_library_file#  s    zMSVCCompiler.find_library_filec                 C   sz   | j D ].}tj tj |¡|¡}tj |¡r|  S qtjd  d¡D ].}tj tj |¡|¡}tj |¡rF|  S qF|S )NÚPathr^   )r_   rO   r/   rh   r|   Úisfiler`   rF   )r+   Zexer3   Úfnr   r   r   ra   5  s    	


zMSVCCompiler.find_exeÚx86c                 C   sÂ   t sg S |d }| jdkr,d| j| jf }nd| j|f }tD ]H}t||ƒ}|r>| jdkrt| j || ¡ d¡  S ||  d¡  S q>| jdkr¾tD ]&}t|d| j ƒd k	r–|  d¡  q¾q–g S )	Nz dirsrU   z6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr^   r=   z%s\6.0z´It seems you have Visual Studio 6 installed, but the expected registry settings are not present.
You must at least run the Visual Studio GUI once so that these entries are created.)	Ú_can_read_regrV   rX   r.   r!   rY   r8   rF   r’   )r+   r/   Úplatformr   r   r   r   r   r   rf   K  s,    

ÿÿ



zMSVCCompiler.get_msvc_pathsc                 C   s6   |dkr|   d¡}n
|   |¡}|r2d |¡tj|< d S )Nr]   Zlibraryr^   )rf   rh   rO   r`   )r+   r   r3   r   r   r   rg   o  s
    
zMSVCCompiler.set_path_env_var)r   r   r   )r   rn   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r    )r9   r:   r;   Zcompiler_typeZexecutablesr}   r~   rt   rv   rr   ru   rw   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionr-   rm   rz   r‰   r‘   r”   r—   r˜   r™   rœ   ra   rf   rg   r   r   r   r   rS   È   sh   
ÿÿ
B  ý
             þ
X   û
          ó
S

$rS   g       @z3Importing new compiler from distutils.msvc9compiler)rS   )r'   )-rC   rO   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   r	   Z	distutilsr
   r¡   ÚwinregZhkey_modZ	OpenKeyExr   ZEnumKeyr   Z	EnumValuer   Úerrorr   ÚImportErrorZwin32apiZwin32conÚinfoZ
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr.   r   r!   r   r'   rJ   rN   rR   rS   r�   ZOldMSVCCompilerZdistutils.msvc9compilerr   r   r   r   Ú<module>   s^   


ý	-   9
