<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    YI~džM  ã               @   sÀ   d dl Z d dlZd dlZ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 d dlmZ d dlmZ d dlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zddd„ZdddœZG dd„ deƒZdS )é    N)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚCompileErrorÚLibErrorÚ	LinkError)Ú	CCompilerÚgen_lib_options)Úlog)Úget_platform)Úcountc              C   sü   yt jt jdt jt jB d} W n tk
r<   t d¡ dS X d}d }| ¤ xœtƒ D ]’}yt  	| |¡\}}}W n tk
r„   P Y nX |rT|t j
krTtj |¡rTytt|ƒƒ}W n ttfk
rÊ   wTY nX |dkrT||krT|| }}qTW W d Q R X ||fS )Nz'Software\Microsoft\VisualStudio\SxS\VC7)ÚaccesszVisual C++ is not registered)NNr   é   )ÚwinregZ	OpenKeyExÚHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYÚOSErrorr	   Údebugr   Z	EnumValueZREG_SZÚosÚpathÚisdirÚintÚfloatÚ
ValueErrorÚ	TypeError)ÚkeyÚbest_versionÚbest_dirÚiÚvZvc_dirZvtÚversion© r   ú</opt/alt/python37/lib64/python3.7/distutils/_msvccompiler.pyÚ_find_vc2015   s0    
r!   c           
   C   s¨   dd l } tj d¡ptj d¡}|s(dS y8tjtj |ddd¡dd	d
dddddg	ddd ¡ }W n tj	t
tfk
r|   dS X tj |ddd¡}tj |¡r¤d|fS dS )Nr   zProgramFiles(x86)ZProgramFiles)NNzMicrosoft Visual StudioZ	Installerzvswhere.exez-latestz-prereleasez	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z	-propertyZinstallationPathz	-productsÚ*ÚmbcsÚstrict)ÚencodingÚerrorsZVCZ	AuxiliaryZBuildé   )Újsonr   ÚenvironÚgetÚ
subprocessÚcheck_outputr   ÚjoinÚstripÚCalledProcessErrorr   ÚUnicodeDecodeErrorr   )r(   Úrootr   r   r   r    Ú_find_vc2017:   s&    
r2   c             C   s\   t ƒ \}}|stƒ \}}|s*t d¡ dS tj |d¡}tj |¡sTt d|¡ dS |d fS )Nz$No suitable Visual C++ version found)NNzvcvarsall.batz%s cannot be found)r2   r!   r	   r   r   r   r-   Úisfile)Ú	plat_specÚ_r   r   Ú	vcvarsallr   r   r    Ú_find_vcvarsall\   s    


r7   c          
   C   s¾   t  d¡rdd„ t j ¡ D ƒS t| ƒ\}}|s6tdƒ‚y&tjd || ¡tj	dj
ddd	}W n@ tjk
rœ } z t |j¡ td
 |j¡ƒ‚W d d }~X Y nX dd„ dd„ | ¡ D ƒD ƒ}|S )NZDISTUTILS_USE_SDKc             S   s   i | ]\}}||  ¡ “qS r   )Úlower)Ú.0r   Úvaluer   r   r    ú
<dictcomp>p   s   z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)Ústderrzutf-16leÚreplace)r&   zError executing {}c             S   s$   i | ]\}}}|r|r||  ¡ “qS r   )r8   )r9   r   r5   r:   r   r   r    r;   ƒ   s   c             s   s   | ]}|  d ¡V  qdS )ú=N)Ú	partition)r9   Úliner   r   r    ú	<genexpr>†   s    z_get_vc_env.<locals>.<genexpr>)r   Úgetenvr)   Úitemsr7   r   r+   r,   ÚformatZSTDOUTÚdecoder/   r	   ÚerrorÚoutputÚcmdÚ
splitlines)r4   r6   r5   ÚoutÚexcÚenvr   r   r    Ú_get_vc_envn   s$    


rM   c             C   sN   |st  d¡ t j¡}x2|D ]*}t j t j |¡| ¡}t j |¡r|S qW | S )Nr   )r   rB   ÚsplitÚpathsepr   r-   Úabspathr3   )ZexeÚpathsÚpÚfnr   r   r    Ú	_find_exeŒ   s    	
rT   Zx86Z	x86_amd64)Úwin32z	win-amd64c            
       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d„Zd)dd„Zd*dd„Zd+dd„Zd,dd„Z‡ fdd„Zdd „ Zd!d"„ Zd#d$„ Zd-d%d&„Z‡  ZS ).ÚMSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c             C   s    t  | |||¡ d | _d| _d S )NF)r   Ú__init__Ú	plat_nameÚinitialized)ÚselfÚverboseZdry_runÚforcer   r   r    rW   Ä   s    zMSVCCompiler.__init__Nc             C   s  |d krt ƒ }|tkr(td ttƒ¡ƒ‚t| }t|ƒ}|sDtdƒ‚| dd¡| _| j t	j
¡}td|ƒ| _td|ƒ| _td|ƒ| _td|ƒ| _td	|ƒ| _td
|ƒ| _x2| dd¡ t	j
¡D ]}|r¾|  | t	j¡¡ q¾W x2| dd¡ t	j
¡D ]}|rò|  | t	j¡¡ qòW d | _ddddddg| _ddddddg| _dddg}ddddg}|d •| _|d!•| _|d"•| _|d#•| _|•| _|•| _tj d f| jtj df| jtj df| jtj!d f| jtj!df| jtj!df| jtj"d f| jtj"df| jtj"df| ji	| _#d| _$d S )$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.r   Ú zcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludeÚlibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz/DEBUG:FULLú/MANIFEST:EMBED,ID=1ú/DLLú/MANIFEST:EMBED,ID=2ú/MANIFESTUAC:NOFT)r_   )r_   )r`   ra   rb   )r`   ra   rb   )%r
   ÚPLAT_TO_VCVARSr   rD   ÚtuplerM   r*   Ú_pathsrN   r   rO   rT   ÚccÚlinkerr^   ÚrcÚmcÚmtZadd_include_dirÚrstripÚsepZadd_library_dirZpreprocess_optionsÚcompile_optionsÚcompile_options_debugZldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugr   Z
EXECUTABLEZSHARED_OBJECTZSHARED_LIBRARYÚ_ldflagsrY   )rZ   rX   r4   Zvc_envrQ   ÚdirÚldflagsZldflags_debugr   r   r    Ú
initializeÊ   sX    




zMSVCCompiler.initializer]   c                sT   ‡fdd„ˆj D ƒ‡fdd„ˆjˆj D ƒ–‰ ˆp4d‰‡ ‡‡fdd„}tt||ƒƒS )Nc                s   i | ]}ˆ j |“qS r   )Úobj_extension)r9   Úext)rZ   r   r    r;     s    z1MSVCCompiler.object_filenames.<locals>.<dictcomp>c                s   i | ]}ˆ j |“qS r   )Úres_extension)r9   rt   )rZ   r   r    r;     s    r]   c                s’   t j | ¡\}}ˆr"t j |¡}n2t j |¡\}}| t jjt jjf¡rT|dd … }yt j ˆ|ˆ |  ¡S  t	k
rŒ   t
d | ¡ƒ‚Y nX d S )Né   zDon't know how to compile {})r   r   ÚsplitextÚbasenameÚ
splitdriveÚ
startswithrl   Úaltsepr-   ÚLookupErrorr   rD   )rR   Úbasert   r5   )Úext_mapÚ
output_dirÚ	strip_dirr   r    Úmake_out_path#  s    z4MSVCCompiler.object_filenames.<locals>.make_out_path)Úsrc_extensionsÚ_rc_extensionsÚ_mc_extensionsÚlistÚmap)rZ   Zsource_filenamesr€   r   r   r   )r~   r   rZ   r€   r    Úobject_filenames  s
    zMSVCCompiler.object_filenamesc	             C   sŠ  | j s|  ¡  |  ||||||¡}	|	\}}
}}}|p6g }| d¡ |rT| | j¡ n| | j¡ d}x|
D ]}y|| \}}W n tk
r˜   wlY nX |rªtj	 
|¡}|| jkrÀd| }nD|| jkrÚd| }d}n*|| jkrB|}d| }y|  | jg| ||g ¡ W ql tk
r< } zt|ƒ‚W d d }~X Y qlX qlnÂ|| jkrôtj	 |¡}tj	 |¡}y\|  | jd|d||g¡ tj	 tj	 |¡¡\}}tj	 ||d	 ¡}|  | jd| |g¡ W ql tk
rî } zt|ƒ‚W d d }~X Y qlX qlntd
 ||¡ƒ‚| jg| | }|r$| d¡ | |¡ | d| ¡ | |¡ y|  |¡ W ql tk
r€ } zt|ƒ‚W d d }~X Y qlX qlW |
S )Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rY   rr   Z_setup_compileÚappendÚextendrn   rm   ÚKeyErrorr   r   rP   Ú_c_extensionsÚ_cpp_extensionsrƒ   Úspawnrh   r   r   r„   Údirnameri   rw   rx   r-   rD   rf   )rZ   Zsourcesr   ZmacrosZinclude_dirsr   Úextra_preargsÚextra_postargsZdependsZcompile_infoÚobjectsZpp_optsZbuildZcompile_optsZadd_cpp_optsÚobjÚsrcrt   Z	input_optZ
output_optÚmsgZh_dirZrc_dirr}   r5   Zrc_fileÚargsr   r   r    Úcompile9  sn    








zMSVCCompiler.compilec       	   
   C   s´   | j s|  ¡  |  ||¡\}}| j||d}|  ||¡r¤|d| g }|rJy,t d| jd |¡¡ |  	| jg| ¡ W q° t
k
r  } zt|ƒ‚W d d }~X Y q°X nt d|¡ d S )N)r   z/OUT:zExecuting "%s" %sú zskipping %s (up-to-date))rY   rr   Ú_fix_object_argsÚlibrary_filenameÚ
_need_linkr	   r   r^   r-   r   r   r   )	rZ   r‘   Zoutput_libnamer   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¨| j||	f }dd„ |p˜g D ƒ}|| | | d| g }tj |d ¡}|d k	rtj tj |¡¡\}}tj 	||  |¡¡}| d| ¡ |
r|
|d d…< |r.| |¡ tj tj |¡¡}|  |¡ y,t d| jd 	|¡¡ |  | jg| ¡ W n, tk
r¤ } zt|ƒ‚W d d }~X Y nX nt d	|¡ d S )
Nz5I don't know what to do with 'runtime_library_dirs': c             S   s   g | ]}d | ‘qS )z/EXPORT:r   )r9   Zsymr   r   r    ú
<listcomp>Ð  s    z%MSVCCompiler.link.<locals>.<listcomp>z/OUT:r   z/IMPLIB:zExecuting "%s" %sr—   zskipping %s (up-to-date))rY   rr   r˜   Z_fix_lib_argsÚwarnÚstrr   r   r   r-   rš   ro   rŽ   rw   rx   r™   rˆ   r‰   rP   Zmkpathr	   r   rg   r   r   r   )rZ   Ztarget_descr‘   rœ   r   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr   r   r   Z
build_tempr›   Z
fixed_argsZlib_optsrq   Zexport_optsZld_argsZdll_nameZdll_extZimplib_filer”   r   r   r    Úlink­  sL    



zMSVCCompiler.linkc          	      s4   t  d¡}z| jt jd< tƒ  |¡S |t jd< X d S )Nr   )r   rB   re   r)   Úsuperr   )rZ   rH   Zold_path)Ú	__class__r   r    r   ò  s
    
zMSVCCompiler.spawnc             C   s   d| S )Nz	/LIBPATH:r   )rZ   rp   r   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   )rZ   rp   r   r   r    Úruntime_library_dir_option  s    z'MSVCCompiler.runtime_library_dir_optionc             C   s
   |   |¡S )N)r™   )rZ   r^   r   r   r    Úlibrary_option  s    zMSVCCompiler.library_optionc             C   s`   |r|d |g}n|g}xB|D ]6}x0|D ](}t j ||  |¡¡}t j |¡r(|S q(W qW d S d S )NZ_d)r   r   r-   r™   r3   )rZ   Údirsr^   r   Z	try_namesrp   ÚnameZlibfiler   r   r    Úfind_library_file  s    

zMSVCCompiler.find_library_file)r   r   r   )N)r   r]   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )Ú__name__Ú
__module__Ú__qualname__Zcompiler_typeZexecutablesr‹   rŒ   rƒ   r„   r‚   ru   rs   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionrW   rr   r‡   r–   r   r¡   r   r¤   r¥   r¦   r©   Ú__classcell__r   r   )r£   r    rV   ¥   sJ   


P 
 
[  
         
8rV   )N)r   ZshutilÚstatr+   r   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   Z	distutilsr	   Zdistutils.utilr
   Ú	itertoolsr   r!   r2   r7   rM   rT   rc   rV   r   r   r   r    Ú<module>   s"   "
