<!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
2aw                 @   sP  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mZ d dlmZ d dlmZ d dlZejZejZejZejZejejejejfZej dkoej!d%kZ"e"rd	Z#d
Z$dZ%ndZ#dZ$dZ%ddddZ&G dd dZ'G dd dZ(dd Z)dd Z*dd Z+dd Z,d&dd Z-e) Z.e.d!k r<ed"e. G d#d$ d$eZ/dS )'    N)DistutilsExecErrorDistutilsPlatformErrorCompileErrorLibError	LinkError)	CCompilergen_preprocess_optionsgen_lib_options)log)get_platformwin32       z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86amd64Zia64)r   z	win-amd64zwin-ia64c               @   sL   e Zd Zdd ZeeZdd ZeeZdd ZeeZdd ZeeZd	S )
Regc             C   s:   x,t D ]$}| j||}|r||kr|| S qW t|d S )N)HKEYSread_valuesKeyError)clspathkeybased r   2/opt/alt/python36/lib64/python3.6/msvc9compiler.py	get_valueA   s
    
zReg.get_valuec             C   sn   yt ||}W n tk
r"   d S X g }d}x<yt||}W n tk
rR   P Y nX |j| |d7 }q.W |S )Nr      )RegOpenKeyExRegError
RegEnumKeyappend)r   r   r   handleLikr   r   r   	read_keysI   s    
zReg.read_keysc       	      C   s   yt ||}W n tk
r"   d S X i }d}xTyt||\}}}W n tk
rX   P Y nX |j }| j||| j|< |d7 }q.W |S )Nr   r   )r   r   RegEnumValuelowerconvert_mbcs)	r   r   r   r"   r   r$   namevaluetyper   r   r   r   [   s    zReg.read_valuesc             C   s:   t | dd }|d k	r6y|d} W n tk
r4   Y nX | S )Ndecodembcs)getattrUnicodeError)sZdecr   r   r   r)   q   s    zReg.convert_mbcsN)	__name__
__module____qualname__r   classmethodr&   r   r)   staticmethodr   r   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 | _ t| | _| j| d S )N)macrosVS_BASEvsbaseload_macros)selfversionr   r   r   __init__}   s    
zMacroExpander.__init__c             C   s   t j||| jd| < d S )Nz$(%s))r   r   r8   )r<   Zmacror   r   r   r   r   	set_macro   s    zMacroExpander.set_macroc             C   s  | j d| jd d | j d| jd d | j dtd y$|dkrP| j d	td
 ntd
W n tk
rv   tdY nX |dkr| j d| jd | j dtd ndd}x^tD ]V}yt||}W n tk
r   wY nX t	|d}t
j|d||f }|d | jd< qW d S )NZVCInstallDirz	\Setup\VC
productdirZVSInstallDirz	\Setup\VSZFrameworkDirZinstallrootg       @ZFrameworkSDKDirzsdkinstallrootv2.0a  Python was built with Visual Studio 2008;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2008 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.g      "@ZFrameworkVersionzclr versionZWindowsSdkDirZcurrentinstallfolderz.Software\Microsoft\NET Framework Setup\Productr   z%s\%sr=   z$(FrameworkVersion))r?   r:   NET_BASEr   r   WINSDK_BASEr   r   r   r    r   r   r8   )r<   r=   pr   hr   r   r   r   r   r;      s.    

zMacroExpander.load_macrosc             C   s(   x"| j j D ]\}}|j||}qW |S )N)r8   itemsreplace)r<   r1   r%   vr   r   r   sub   s    zMacroExpander.subN)r2   r3   r4   r>   r?   r;   rH   r   r   r   r   r7   {   s   r7   c              C   s   d} t jj| }|d
krdS |t|  }t j|d  jdd\}}t|d d d }|dkrf|d7 }t|dd d }|dkrd	}|dkr|| S d S )NzMSC v.r       r         g      $@r   )sysr=   findlensplitint)prefixr$   r1   restZmajorVersionZminorVersionr   r   r   get_build_version   s    rV   c             C   s4   g }x*| D ]"}t jj|}||kr
|j| q
W |S )N)osr   normpathr!   )pathsZreduced_pathsrC   Znpr   r   r   normalize_and_reduce_paths   s    
rZ   c             C   s@   | j tj}g }x|D ]}||kr|j| qW tjj|}|S )N)rR   rW   pathsepr!   join)variableZoldListZnewListr$   ZnewVariabler   r   r   removeDuplicates   s    
r^   c             C   s  t |  }ytjd| d}W n" tk
r>   tjd d }Y nX | sTtjj| rd|  }tj	j
|d }|rtjj|rtjj|tjtjd}tjj|}tjj|stjd|  d S ntjd|  |stjd d S tjj|d	}tjj|r|S tjd
 d S )Nz%s\Setup\VCr@   z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundzvcvarsall.batzUnable to find vcvarsall.bat)r9   r   r   r   r
   debugrW   r   isdirenvirongetr\   pardirabspathisfile)r=   r:   r@   ZtoolskeyZtoolsdir	vcvarsallr   r   r   find_vcvarsall   s2    





rg   c             C   s8  t | }td}i }|d kr$tdtjd||  tjd||f tjtjd}z|j \}}|j	 d	krvt|j
d
|j
d
}xr|jdD ]d}tj|}d|krq|j }|jdd\}	}
|	j }	|	|kr|
jtjr|
d d }
t|
||	< qW W d |jj  |jj  X t|t|kr4ttt|j |S )Nincludeliblibpathr   zUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z"%s" %s & set)stdoutstderrr   r.   
=r   )rh   ri   rj   r   rM   )rg   setr   r
   r_   
subprocessPopenPIPEZcommunicatewaitr-   rR   r   r)   stripr(   endswithrW   r[   r^   rk   closerl   rQ   
ValueErrorstrlistkeys)r=   Zarchrf   Zinterestingresultpopenrk   rl   liner   r+   r   r   r   query_vcvarsall   s<    



r~   g       @z(VC %0.1f is not supported by this modulec            
   @   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d0ddZd1ddZd2ddZdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd3d)d*Zd+d, ZdS )4MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c             C   s8   t j| ||| t| _d| _g | _d | _d | _d| _d S )NzSoftware\Microsoft\VisualStudioF)	r   r>   VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths	plat_name_MSVCCompiler__archinitialized)r<   verboseZdry_runforcer   r   r   r>   J  s    zMSVCCompiler.__init__Nc             C   s  |d krt  }d$}||kr(td|f dtjkrfdtjkrf| jdrfd| _d| _d	| _d
| _d| _	n|t  ksx|dkrt
| }nt
t   d t
|  }tt|}|d jtj| _|d tjd< |d tjd< t| jdkrtd| j | jd| _| jd| _| jd	| _| jd
| _| jd| _	y,x&tjd jdD ]}| jj| q<W W n tk
rj   Y nX t| j| _dj| jtjd< d | _| jdkrdddddg| _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| _dg| _d#| _d S )%Nr   	win-amd64win-ia64z--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exe_r   ri   rh   r   zxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;r   z/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NO   z/INCREMENTAL:noz/DEBUGT)r   r   r   )r   r   rW   ra   find_execclinkerri   rcmcPLAT_TO_VCVARSr~   r   rR   r[   r   rQ   Z_MSVCCompiler__productr!   r   rZ   r\   Zpreprocess_optionsr   compile_optionscompile_options_debugldflags_sharedr   ldflags_shared_debugZldflags_staticr   )r<   r   Zok_platsZ	plat_specZvc_envrC   r   r   r   
initializeU  sd    







zMSVCCompiler.initialize c             C   s   |d krd}g }x|D ]}t jj|\}}t jj|d }|t jj|d  }|| jkrdtd| |rtt jj|}|| jkr|j	t jj
||| j  q|| jkr|j	t jj
||| j  q|j	t jj
||| j  qW |S )Nr   r   zDon't know how to compile %s)rW   r   splitext
splitdriveisabssrc_extensionsr   basename_rc_extensionsr!   r\   res_extension_mc_extensionsobj_extension)r<   Zsource_filenamesZ	strip_dir
output_dirZ	obj_namesZsrc_namer   extr   r   r   object_filenames  s(     



zMSVCCompiler.object_filenamesc	             C   st  | j s| j  | j||||||}	|	\}}
}}}|p6g }|jd |rT|j| j n|j| j x|
D ]}y|| \}}W n tk
r   whY nX |rtj	j
|}|| jkrd| }nT|| jkrd| }n>|| jkr>|}d| }y"| j| jg| |g |g  W qh tk
r8 } zt|W Y d d }~X qhX qhn|| jkr tj	j|}tj	j|}yl| j| jgd|d|g |g  tj	jtj	j|\}}tj	j||d }| j| jgd| g |g  W qh tk
r } zt|W Y d d }~X qhX qhntd||f d	| }y&| j| jg| | ||g |  W qh tk
rj } zt|W Y d d }~X qhX qhW |
S )
Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)r   r   Z_setup_compiler!   extendr   r   r   rW   r   rd   _c_extensions_cpp_extensionsr   spawnr   r   r   r   dirnamer   r   r   r\   r   )r<   Zsourcesr   r8   Zinclude_dirsr_   extra_preargsextra_postargsZdependsZcompile_infoobjectsZpp_optsZbuildZcompile_optsobjsrcr   Z	input_optZ
output_optmsgZh_dirZrc_dirr   r   Zrc_filer   r   r   compile  sj    




zMSVCCompiler.compilec       	      C   s   | j s| j  | j||\}}| j||d}| j||r|d| g }|rJy| 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skipping %s (up-to-date))r   r   _fix_object_argslibrary_filename
_need_linkr   ri   r   r   r
   r_   )	r<   r   Zoutput_libnamer   r_   target_langoutput_filenameZlib_argsr   r   r   r   create_static_lib  s    zMSVCCompiler.create_static_libc             C   sX  | j s| j  | j||\}}| j|||}|\}}}|rL| jdt|  t| |||}|d k	rptjj	||}| j
||rH|tjkr|	r| jdd  }q| jdd  }n|	r| j}n| j}g }x|pg D ]}|jd|  qW || | | d| g }tjj|d }|d k	rPtjjtjj|\}}tjj	|| j|}|jd|  | j||| |
rp|
|d d< |r|j| | jtjj| y| j| jg|  W n, tk
r } zt|W Y d d }~X nX | j||}|d k	rT|\}}d||f }y| jdd	d
||g W n, tk
rD } 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': r   z/EXPORT:z/OUT:r   z/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz	-manifestzskipping %s (up-to-date))r   r   r   Z_fix_lib_argswarnrx   r	   rW   r   r\   r   r   
EXECUTABLEr   r   r!   r   r   r   r   manifest_setup_ldargsr   Zmkpathr   r   r   r   manifest_get_embed_infor
   r_   )r<   target_descr   r   r   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr_   r   r   
build_tempr   Z
fixed_argsZlib_optsZldflagsZexport_optsZsymld_argsZdll_nameZdll_extZimplib_filer   ZmfinfoZ
mffilenamemfidZout_argr   r   r   link8  sl    





zMSVCCompiler.linkc             C   s,   t jj|t jj|d }|jd|  d S )Nz	.manifestz/MANIFESTFILE:)rW   r   r\   r   r!   )r<   r   r   r   temp_manifestr   r   r   r     s    z"MSVCCompiler.manifest_setup_ldargsc             C   s`   x,|D ] }|j dr|jddd }P qW d S |tjkr>d}nd}| j|}|d krXd S ||fS )Nz/MANIFESTFILE::r   r   )
startswithrR   r   r   _remove_visual_c_ref)r<   r   r   argr   r   r   r   r   r     s    



z$MSVCCompiler.manifest_get_embed_infoc             C   s   yt |}z|j }W d |j  X tjdtj}tj|d|}d}tj|d|}tjdtj}tj||d krrd S t |d}z|j| |S |j  X W n t	k
r   Y nX d S )NzU<assemblyIdentity.*?name=("|')Microsoft\.VC\d{2}\.CRT("|').*?(/>|</assemblyIdentity>)r   z*<dependentAssembly>\s*</dependentAssembly>zI<assemblyIdentity.*?name=(?:"|')(.+?)(?:"|').*?(?:/>|</assemblyIdentity>)w)
openreadrv   rer   DOTALLrH   searchwriteOSError)r<   Zmanifest_fileZ
manifest_fZmanifest_bufpatternr   r   r   r     s.    	


z!MSVCCompiler._remove_visual_c_refc             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   r   runtime_library_dir_option  s    z'MSVCCompiler.runtime_library_dir_optionc             C   s
   | j |S )N)r   )r<   ri   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)rW   r   r\   r   exists)r<   dirsri   r_   Z	try_namesr   r*   Zlibfiler   r   r   find_library_file  s    

zMSVCCompiler.find_library_filec             C   sz   x4| j D ]*}tjjtjj||}tjj|r|S qW x>tjd jdD ]*}tjjtjj||}tjj|rH|S qHW |S )NZPathr   )r   rW   r   r\   rd   re   ra   rR   )r<   ZexerC   fnr   r   r   r     s    	zMSVCCompiler.find_exe)r   r   r   )N)r   r   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r2   r3   r4   Zcompiler_typeZexecutablesr   r   r   r   r   r   r   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionr>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ,  sP   


X 
 
V  
         
R+
r   l        )r   )0rW   rp   rO   r   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   r	   Z	distutilsr
   Zdistutils.utilr   winregZ	OpenKeyExr   ZEnumKeyr    Z	EnumValuer'   errorr   Z
HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr   platformmaxsizeZNATIVE_WIN64r9   rB   rA   r   r   r7   rV   rZ   r^   rg   r~   r   r   r   r   r   r   <module>   sL   >.#
)
