<!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>
a
    XC?hõv  ã                   @   sJ  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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oªej dkZ!e!r¾dZ"d	Z#d
Z$ndZ"dZ#dZ$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 r6ed e- ƒ‚G d!d"„ d"eƒZ.dS )$é    N)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚCompileErrorÚLibErrorÚ	LinkError)Ú	CCompilerÚgen_lib_options)Úlog)Úget_platformÚwin32l        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Úx86Zamd64©r   z	win-amd64c                   @   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:   t D ](}|  ||¡}|r||v r||   S qt|ƒ‚d S ©N)ÚHKEYSÚread_valuesÚKeyError)ÚclsÚpathÚkeyÚbaseÚd© r   ú</opt/alt/python39/lib64/python3.9/distutils/msvc9compiler.pyÚ	get_value?   s
    zReg.get_valuec                 C   sj   zt ||ƒ}W n ty"   Y d S 0 g }d}zt||ƒ}W n tyP   Y qfY n0 | |¡ |d7 }q,|S ©Nr   é   )ÚRegOpenKeyExÚRegErrorÚ
RegEnumKeyÚappend)r   r   r   ÚhandleÚLÚiÚkr   r   r   Ú	read_keysG   s    


zReg.read_keysc           	      C   s‚   zt ||ƒ}W n ty"   Y d S 0 i }d}zt||ƒ\}}}W n tyV   Y q~Y n0 | ¡ }|  |¡||  |¡< |d7 }q,|S r   )r   r   ÚRegEnumValueÚlowerÚconvert_mbcs)	r   r   r   r!   r   r#   ÚnameÚvalueÚtyper   r   r   r   Y   s    

zReg.read_valuesc                 C   s8   t | dd ƒ}|d ur4z|dƒ} W n ty2   Y n0 | S )NÚdecodeÚmbcs)ÚgetattrÚUnicodeError)ÚsZdecr   r   r   r(   o   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| | _|  |¡ d S r   )ÚmacrosÚVS_BASEÚvsbaseÚload_macros)ÚselfÚversionr   r   r   Ú__init__{   s    
zMacroExpander.__init__c                 C   s   t  ||¡| jd| < d S )Nz$(%s))r   r   r7   )r;   Zmacror   r   r   r   r   Ú	set_macro€   s    zMacroExpander.set_macroc              	   C   s  |   d| jd d¡ |   d| jd d¡ |   dtd¡ z$|dkrP|   d	td
¡ ntd
ƒ‚W n tyt   tdƒ‚Y n0 |dkrž|   d| jd¡ |   dtd¡ n`d}tD ]V}zt||ƒ}W n tyÎ   Y q¦Y n0 t	|dƒ}t
 |d||f ¡}|d | jd< q¦d S )NZVCInstallDirz	\Setup\VCÚ
productdirZVSInstallDirz	\Setup\VSZFrameworkDirZinstallrootç       @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>   r9   ÚNET_BASEr   r   ÚWINSDK_BASEr   r   r   r   r   r   r7   )r;   r<   Úpr   Úhr   r   r   r   r   r:   ƒ   s2    ÿÿ


zMacroExpander.load_macrosc                 C   s$   | j  ¡ D ]\}}| ||¡}q
|S r   )r7   ÚitemsÚreplace)r;   r0   r$   Úvr   r   r   Úsub¢   s    zMacroExpander.subN)r1   r2   r3   r=   r>   r:   rH   r   r   r   r   r6   y   s   r6   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#   r0   ÚrestZmajorVersionZminorVersionr   r   r   Úget_build_version§   s    rW   c                 C   s0   g }| D ]"}t j |¡}||vr| |¡ q|S r   )Úosr   Únormpathr    )ÚpathsZreduced_pathsrC   Znpr   r   r   Únormalize_and_reduce_pathsÀ   s    r[   c                 C   s<   |   tj¡}g }|D ]}||vr| |¡ qtj |¡}|S r   )rS   rX   Úpathsepr    Újoin)ZvariableZoldListZnewListr#   ZnewVariabler   r   r   ÚremoveDuplicatesÎ   s    r^   c                 C   s  t |  }zt d| d¡}W n  ty<   t d¡ d }Y n0 |rNtj |¡sÄd|  }tj	 
|d ¡}|r¶tj |¡r¶tj |tjtjd¡}tj |¡}tj |¡sÄt d| ¡ d S nt d| ¡ |sÖt d¡ d S tj |d	¡}tj |¡rô|S t 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.batúUnable to find vcvarsall.bat)r8   r   r   r   r	   ÚdebugrX   r   ÚisdirÚenvironÚgetr]   ÚpardirÚabspathÚisfile)r<   r9   r?   ZtoolskeyZtoolsdirÚ	vcvarsallr   r   r   Úfind_vcvarsallÙ   s4    
ÿ



rh   c                 C   sH  t | ƒ}h d£}i }|d u r$tdƒ‚t d|| ¡ tjd||f tjtjd}z¸| ¡ \}}| ¡ dkrvt| 	d¡ƒ‚| 	d¡}| 
d¡D ]d}t |¡}d	|vr¢qŠ| ¡ }| 
d	d
¡\}	}
|	 ¡ }	|	|v rŠ|
 tj¡râ|
d d… }
t|
ƒ||	< qŠW |j ¡  |j ¡  n|j ¡  |j ¡  0 t|ƒt|ƒkrDttt| ¡ ƒƒƒ‚|S )N>   r   ÚlibZlibpathÚincluder_   z'Calling 'vcvarsall.bat %s' (version=%s)z"%s" %s & set)ÚstdoutÚstderrr   r-   Ú
ú=r   rI   )rh   r   r	   r`   Ú
subprocessÚPopenÚPIPEZcommunicateÚwaitr,   rS   r   r(   Ústripr'   ÚendswithrX   r\   r^   rk   Úcloserl   rR   Ú
ValueErrorÚstrÚlistÚkeys)r<   Zarchrg   ZinterestingÚresultÚpopenrk   rl   Úliner   r*   r   r   r   Úquery_vcvarsallü   sB    þ


ÿ
r}   r@   z(VC %0.1f is not supported by this modulec                
   @   sØ   e Zd ZdZi ZdgZg d¢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d0dd„Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd1d'd(„Zd)d*„ ZdS )2ÚMSVCCompilerZmsvcz.c)z.ccz.cppz.cxxú.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c                 C   s8   t  | |||¡ 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_runZforcer   r   r   r=   H  s    zMSVCCompiler.__init__Nc                 C   sò  |d u rt ƒ }d}||vr(td|f ƒ‚dtjv rfdtjv rf|  d¡rfd| _d| _d| _d| _d	| _	nÂ|t ƒ ksx|d
kr‚t
| }nt
t ƒ  d t
|  }tt|ƒ}|d  tj¡| _|d tjd< |d tjd< t| jƒdkrìtd| j ƒ‚|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d	¡| _	z(tjd  d¡D ]}| j |¡ q:W n tyd   Y n0 t| jƒ| _d | j¡tjd< d | _| jdkr¬g d¢| _g d¢| _ng d¢| _g d¢| _g d¢| _| jdkràg d¢| _dg| _d| _d S )Nr   z--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer   Ú_r   ri   rj   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   )ú/nologoú/Oxú/MDú/W3ú/DNDEBUG)r‰   ú/Odú/MDdrŒ   ú/Z7ú/D_DEBUG)r‰   rŠ   r‹   rŒ   ú/GS-r   )r‰   rŽ   r   rŒ   r’   r   r‘   )ú/DLLr‰   z/INCREMENTAL:NOé   )r“   r‰   z/INCREMENTAL:noz/DEBUGr‰   T)r
   r   rX   rb   Úfind_exeÚccÚlinkerri   ÚrcÚmcÚPLAT_TO_VCVARSr}   r€   rS   r\   r‚   rR   Z_MSVCCompiler__productr    r   r[   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   Ú
initializeS  sb    ÿ
ÿ
ý




zMSVCCompiler.initializeÚ c                 C   sÞ   |d u rd}g }|D ]Ä}t j |¡\}}t j |¡d }|t j |¡d … }|| jvrbtd| ƒ‚|rrt j |¡}|| jv r˜| 	t j 
||| j ¡¡ q|| jv r¾| 	t j 
||| j ¡¡ q| 	t j 
||| j ¡¡ q|S )Nr    r   zDon't know how to compile %s)rX   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|  ¡  |  ||||||¡}	|	\}}
}}}|p6g }| d¡ |rT| | j¡ n| | j¡ |
D ]}z|| \}}W n ty   Y qdY n0 |r¢tj	 
|¡}|| jv r¸d| }nX|| jv rÎd| }nB|| jv r<|}d| }z"|  | jg| |g |g ¡ W qd ty6 } zt|ƒ‚W Y d }~qdd }~0 0 qdnÔ|| jv 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yú } zt|ƒ‚W Y d }~qdd }~0 0 qdntd||f ƒ‚d	| }z&|  | jg| | ||g | ¡ W qd tyl } zt|ƒ‚W Y d }~qdd }~0 0 qd|
S )
Nz/cz/Tcz/Tpz/foz-hz-rr   z"Don't know how to compile %s to %sz/Fo)r…   rŸ   Z_setup_compiler    Úextendrœ   r›   r   rX   r   re   Ú_c_extensionsÚ_cpp_extensionsr¦   Úspawnr˜   r   r   r¨   Údirnamer™   r¡   r¥   r]   r–   )r;   Zsourcesrª   r7   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Ç  s„    
ÿ




ÿÿ


ÿÿ
ÿÿ
ÿÿþ
 zMSVCCompiler.compilec           	   
   C   s    | j s|  ¡  |  ||¡\}}| j||d}|  ||¡r|d| g }|rJz|  | jg| ¡ W qœ tyŒ } zt|ƒ‚W Y d }~qœd }~0 0 nt	 
d|¡ d S )N)rª   ú/OUT:ú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|  ¡  |  ||¡\}}|  |||¡}|\}}}|rL|  dt|ƒ ¡ t| |||ƒ}|d urptj 	||¡}|  
||¡rH|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 }tj |d ¡}|d urLtj tj |¡¡\}}tj 	||  |¡¡}| d| ¡ |  |||¡ |
rl|
|d d…< |r|| |¡ |  tj |¡¡ z|  | jg| ¡ W n. tyÒ } zt|ƒ‚W Y d }~n
d }~0 0 |  ||¡}|d urT|\}}d||f }z|  dd	d
||g¡ W n. tyD } zt|ƒ‚W Y d }~n
d }~0 0 nt d|¡ d S )Nz5I don't know what to do with 'runtime_library_dirs': r   z/EXPORT:r¹   r   z/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz	-manifestrº   )r…   rŸ   r»   Z_fix_lib_argsÚwarnrw   r   rX   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   Úlink5  s€    ÿ
ÿþ

ÿÿ

ÿþ


ÿ
 zMSVCCompiler.linkc                 C   s,   t j |t j |¡d ¡}| d| ¡ d S )Nz	.manifestú/MANIFESTFILE:)rX   r   r]   r¥   r    )r;   r¿   rÆ   rÇ   Útemp_manifestr   r   r   rÃ   ”  s
    þz"MSVCCompiler.manifest_setup_ldargsc                 C   s^   |D ]"}|  d¡r| dd¡d } q,qd S |tjkr<d}nd}|  |¡}|d u rVd S ||fS )NrÊ   ú:r   rN   )Ú
startswithrS   r   rÂ   Ú_remove_visual_c_ref)r;   rÅ   rÇ   ÚargrË   rÈ   r   r   r   rÄ      s    


z$MSVCCompiler.manifest_get_embed_infoc                 C   sÆ   z®t |ƒ}z| ¡ }W | ¡  n
| ¡  0 t dtj¡}t |d|¡}d}t |d|¡}t dtj¡}t ||¡d u r|W d S t |dƒ}z| |¡ |W | ¡  W S | ¡  0 W n t	yÀ   Y n0 d S )NzU<assemblyIdentity.*?name=("|')Microsoft\.VC\d{2}\.CRT("|').*?(/>|</assemblyIdentity>)r    z*<dependentAssembly>\s*</dependentAssembly>zI<assemblyIdentity.*?name=(?:"|')(.+?)(?:"|').*?(?:/>|</assemblyIdentity>)Úw)
ÚopenÚreadru   Úrer¸   ÚDOTALLrH   ÚsearchÚwriteÚOSError)r;   Zmanifest_fileZ
manifest_fZmanifest_bufÚpatternr   r   r   rÎ   ¸  s6    	
ýþ

þ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   Úruntime_library_dir_optionæ  s    ÿz'MSVCCompiler.runtime_library_dir_optionc                 C   s
   |   |¡S r   )r¼   )r;   ri   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)rX   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   | 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‚   rX   r   r]   re   rf   rb   rS   )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   )r1   r2   r3   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~   *  s`   ÿÿ

W  ý
   þ
X   û
          ó
_+
r~   )r   )/rX   ro   rP   rÓ   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   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_WIN64r8   rB   rA   rš   r   r6   rW   r[   r^   rh   r}   r€   r~   r   r   r   r   Ú<module>   sN   ýþ>.#
)
