<!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>
3
2aKT                 @   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edg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jd dS X d}d }|  xt D ]}yt j	| |\}}}W n tk
r   P Y nX |rT|t j
krTtj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 registeredr      )NN)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vvc_dirZvtversion r    2/opt/alt/python36/lib64/python3.6/_msvccompiler.py_find_vc2015   s0    
r"   c                 s   dd l  dd l} d}d }g  fdd}| j|d}|j  |j  xD ]~\}}}}d|krLtjj|ddd}	tjj|	sqLytd	d
 |j	dD }
W n t
tfk
r   wLY nX |
|krL|
|	 }}qLW y|d }W n tk
r   d }Y nX ||fS )Nr   c                  s   j  j  d S )N)extendfindallr    )_distutils_findvsall_packagesr    r!   _getallD   s    z_find_vc2017.<locals>._getall)targetz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64ZVCZ	AuxiliaryZBuildc             s   s   | ]}t |V  qd S )N)r   ).0r   r    r    r!   	<genexpr>P   s    z_find_vc2017.<locals>.<genexpr>.)r   )r%   	threadingZThreadstartjoinr   r   r   tuplesplitr   r   
IndexError)r,   r   r   r'   tnameZversion_strr   Zpackagesr   r   r    )r%   r&   r!   _find_vc2017:   s2    
r4   c             C   s
  t  \}}d }d| krdnd}|rztjj|ddddddd	}yd
d l}|j|ddd }W n tttfk
rx   d }Y nX |st \}}|rtjj|d|dd	}|st	j
d dS tjj|d}tjj|st	j
d| dS | ptjj| rt	j
d| d }||fS )Namd64Zx64x86z..ZredistZMSVCz**zMicrosoft.VC141.CRTzvcruntime140.dllr   T)	recursive   zMicrosoft.VC140.CRTz$No suitable Visual C++ version foundzvcvarsall.batz%s cannot be found)NN)NN)r4   r   r   r.   globImportErrorr   LookupErrorr"   r	   r   isfile)	plat_specr   r   	vcruntimeZvcruntime_platZvcredistr:   	vcvarsallr    r    r!   _find_vcvarsall[   s6    



rA   c             C   s   t jdrdd t jj D S t| \}}|s6tdy&tjdj|| tj	dj
ddd	}W n@ tjk
r } z"tj|j td
j|jW Y d d }~X nX dd dd |j D D }|r||d< |S )NZDISTUTILS_USE_SDKc             S   s   i | ]\}}||j  qS r    )lower)r)   r   valuer    r    r!   
<dictcomp>   s   z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)errorszError executing {}c             S   s$   i | ]\}}}|r|r||j  qS r    )rB   )r)   r   _rC   r    r    r!   rD      s   c             s   s   | ]}|j d V  qdS )=N)	partition)r)   liner    r    r!   r*      s    z_get_vc_env.<locals>.<genexpr>py_vcruntime_redist)r   getenvenvironitemsrA   r   
subprocessZcheck_outputformatZSTDOUTdecodeZCalledProcessErrorr	   erroroutputcmd
splitlines)r>   r@   r?   outexcenvr    r    r!   _get_vc_env}   s(    


rZ   c             C   sN   |st jdjt j}x2|D ]*}t jjt jj|| }t jj|r|S qW | S )Nr   )r   rM   r0   pathsepr   r.   abspathr=   )Zexepathspfnr    r    r!   	_find_exe   s    	
r`   r6   Z	x86_amd64)win32z	win-amd64zvcruntime140.dllc            
       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dd Z fdd Zd!d" Zd#d$ Zd%d& Zd/d'd(Z  ZS )0MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c             C   s    t j| ||| d | _d| _d S )NF)r   __init__	plat_nameinitialized)selfverboseZdry_runforcer    r    r!   rc      s    zMSVCCompiler.__init__Nc             C   s>  |d krt  }|tkr(tdjttt| }t|}|sDtd|jdd| _| jjt	j
}td|| _td|| _td|| _td|| _td	|| _td
|| _|jdd| _x2|jddjt	j
D ]}|r| j|jt	j qW x6|jddjt	j
D ]}|r | j|jt	j q W d | _dddddg| _| jj| jrJdnd ddddddg| _dddg}| js~|jd$ 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.exerL   includelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz/DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rl   rm   )rn   )rn   )ro   rp   rq   )ro   rp   rq   )(r
   PLAT_TO_VCVARSr   rQ   r/   rZ   get_pathsr0   r   r[   r`   cclinkerrk   rcmcmt_vcruntime_redistZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugr#   Zldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugr   Z
EXECUTABLEZSHARED_OBJECTZSHARED_LIBRARY_ldflagsre   )rf   rd   r>   Zvc_envr]   dirldflagsZldflags_debugr    r    r!   
initialize   s`    





zMSVCCompiler.initializeri   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)r)   ext)rf   r    r!   rD   8  s    z1MSVCCompiler.object_filenames.<locals>.<dictcomp>c                s   i | ]} j |qS r    )res_extension)r)   r   )rf   r    r!   rD   9  s    ri   c                s   t jj| \}}r"t jj|}n2t jj|\}}|jt jjt jjfrT|dd  }yt jj| |  S  t	k
r   t
dj| Y nX d S )Nr8   zDon't know how to compile {})r   r   splitextbasename
splitdrive
startswithr|   altsepr.   r<   r   rQ   )r^   baser   rH   )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)rf   Zsource_filenamesr   r   r   r    )r   r   rf   r   r!   object_filenames3  s
    zMSVCCompiler.object_filenamesc	             C   s  | j s| j  | j||||||}	|	\}}
}}}|p6g }|jd |rT|j| j n|j| j d}x|
D ]}y|| \}}W n tk
r   wlY nX |rtj	j
|}|| jkrd| }nD|| jkrd| }d}n*|| jkrB|}d| }y| j| jg| ||g  W ql tk
r< } zt|W Y d d }~X qlX qln|| jkrtj	j|}tj	j|}y\| j| jd|d||g tj	jtj	j|\}}tj	j||d	 }| j| jd| |g W ql tk
r } zt|W Y d d }~X qlX qlntd
j||| jg| | }|r$|jd |j| |jd|  |j| y| j| W ql tk
r } zt|W Y d d }~X qlX qlW |
S )Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)re   r   Z_setup_compiler~   r#   r   r}   KeyErrorr   r   r\   _c_extensions_cpp_extensionsr   spawnrw   r   r   r   dirnamerx   r   r   r.   rQ   ru   )rf   Zsourcesr   ZmacrosZinclude_dirsr   extra_preargsextra_postargsZdependsZcompile_infoobjectsZpp_optsZbuildZcompile_optsZadd_cpp_optsobjsrcr   Z	input_optZ
output_optmsgZh_dirZrc_dirr   rH   Zrc_fileargsr    r    r!   compileT  sn    








zMSVCCompiler.compilec       	      C   s   | j s| j  | j||\}}| j||d}| j||r|d| g }|rJy,tjd| jdj| | j	| jg|  W q t
k
r } zt|W Y d d }~X qX ntjd| d S )N)r   z/OUT:zExecuting "%s" %s zskipping %s (up-to-date))re   r   _fix_object_argslibrary_filename
_need_linkr	   r   rk   r.   r   r   r   )	rf   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| j  | j||\}}| j|||}|\}}}|rL| jdt|  t| |||}|d k	rptjj	||}| j
||r| j||	f }dd |pg D }|| | | d| g }tjj|d }|d k	rtjjtjj|\}}tjj	|| j|}|jd|  |
r|
|d d< |r.|j| tjjtjj|}| j| y6tjd| jdj	| | j| jg|  | j| W n, tk
r } zt|W Y d d }~X nX ntjd	| d S )
Nz5I don't know what to do with 'runtime_library_dirs': c             S   s   g | ]}d | qS )z/EXPORT:r    )r)   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))re   r   r   Z_fix_lib_argswarnstrr   r   r   r.   r   r   r   r   r   r   r~   r#   r\   Zmkpathr	   r   rv   r   _copy_vcruntimer   r   )rf   Ztarget_descr   r   r   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr   r   r   Z
build_tempr   Z
fixed_argsZlib_optsr   Zexport_optsZld_argsZdll_nameZdll_extZimplib_filer   r    r    r!   link  sN    



zMSVCCompiler.linkc             C   s`   | j }| stjj| rd S tjj|j tkr6d S tjd| t	j
||}tj|tj d S )NzCopying "%s")rz   r   r   r=   r   rB   _BUNDLED_DLLSr	   r   shutilcopychmodstatS_IWRITE)rf   r   r?   r    r    r!   r     s    zMSVCCompiler._copy_vcruntimec                s4   t jd}z| jt jd< t j|S |t jd< X d S )Nr   )r   rM   rt   rN   superr   )rf   rU   Zold_path)	__class__r    r!   r     s
    
zMSVCCompiler.spawnc             C   s   d| S )Nz	/LIBPATH:r    )rf   r   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   )rf   r   r    r    r!   runtime_library_dir_option)  s    z'MSVCCompiler.runtime_library_dir_optionc             C   s
   | j |S )N)r   )rf   rk   r    r    r!   library_option-  s    zMSVCCompiler.library_optionc             C   s`   |r|d |g}n|g}xB|D ]6}x0|D ](}t jj|| j|}t jj|r(|S q(W qW d S d S )NZ_d)r   r   r.   r   r=   )rf   dirsrk   r   Z	try_namesr   r3   Zlibfiler    r    r!   find_library_file0  s    

zMSVCCompiler.find_library_file)r   r   r   )N)r   ri   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )__name__
__module____qualname__Zcompiler_typeZexecutablesr   r   r   r   r   r   r   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionrc   r   r   r   r   r   r   r   r   r   r   r   __classcell__r    r    )r   r!   rb      sL   


T 
 
[  
         
9rb   )N)r   r   r   rP   r   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   Z	distutilsr	   Zdistutils.utilr
   	itertoolsr   r"   r4   rA   rZ   r`   rr   	frozensetr   rb   r    r    r    r!   <module>   s$   !" 

