<!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>

]w                 @   s  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 o e j! d& k Z" e" rd	 Z# d
 Z$ d Z% n d Z# d Z$ d Z% d d d d d d i Z& Gd d   d  Z' Gd 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.   Gd$ 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x86z	win-amd64amd64zwin-ia64Zia64c               @   sp   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   sM   x: t  D]2 } |  j | |  } | r | | k r | | Sq Wt |   d  S)N)HKEYSread_valuesKeyError)clspathkeybased r   2/opt/alt/python35/lib64/python3.5/msvc9compiler.py	get_valueA   s
    zReg.get_valuec             C   s   y t  | |  } Wn t k
 r+ d  SYn Xg  } d } xD y t | |  } Wn t k
 rc PYn 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  | |  } Wn t k
 r+ d  SYn Xi  } d } xh y t | |  \ } } } Wn t k
 rl PYn 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   sG   t  |  d d   } | d  k	 rC y | d  }  Wn t k
 rB Yn 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   sT  |  j  d |  j d d  |  j  d |  j d d  |  j  d t d  y2 | d k rl |  j  d	 t d
  n t d
   Wn t k
 r t d   Yn X| d k r |  j  d |  j d  |  j  d t d  n~ d } xu t D]m } y t | |  } Wn t k
 rw Yn Xt	 | d  } t
 j | d | | f  } | d |  j d <q Wd  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   s6   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 r | d 7} t | d d   d } | d k r d	 } | d k r | | Sd  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   sF   g  } x9 |  D]1 } 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   sX   |  j  t j  } g  } x' | D] } | | k r | j |  q Wt 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  } Wn% t k
 rK t j d  d  } Yn X| sf t j j |  rd |  } t j	 j
 | d   } | r t j j |  r t j j | t j t j d  } t j j |  } t j j |  st j d |  d  Sn t j d |  | s"t j d  d  St j j | d	  } t j j |  rM| St 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   s  t  |   } t d  } i  } | d  k r6 t d   t j d | |   t j d | | f d t j d	 t j } z | j   \ } } | j	   d
 k r t | j
 d    | j
 d  } x | j d  D] } t j |  } d | k r q | j   } | j d d  \ }	 }
 |	 j   }	 |	 | k r |
 j t j  rQ|
 d  d  }
 t |
  | |	 <q WWd  | j j   | j j   Xt |  t |  k rt 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PIPE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               @   sy  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 d d  Z d d d  Z d d d d  Z d d d d d d d d d  Z d d d d d  Z d d d d d d d d d d d d 
 Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z d d) d*  Z d+ d,   Z d S)-MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exer   c             C   sP   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<   verbose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 r d t j k r |  j d  r d |  _ d |  _ d	 |  _ d
 |  _ d |  _	 n| t    k s | d k r t
 | } n t
 t    d t
 | } t t |  } | d j t j  |  _ | d t j d <| d t j d <t |  j  d k rJt d |  j   |  j d  |  _ |  j d  |  _ |  j d	  |  _ |  j d
  |  _ |  j d  |  _	 y5 x. t j d j d  D] } |  j j |  qWWn t k
 rYn Xt |  j  |  _ d j |  j  t j d <d  |  _ |  j d k rgd d d d d g |  _ d d d d d d g |  _ n9 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 r t d |   | r t  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   s  |  j  s |  j   |  j | | | | | |  }	 |	 \ } }
 } } } | pO g  } | j d  | rx | j |  j  n | j |  j  x|
 D]} y | | \ } } Wn t k
 r w Yn X| r t j	 j
 |  } | |  j k r d | } n| |  j k rd | } n| |  j k r| } d | } y) |  j |  j g | | g | g  Wq t k
 r} z t |   WYd  d  } ~ Xq Xq n| |  j k rt j	 j |  } t j	 j |  } y |  j |  j g d | d | g | g  t j	 j t j	 j |   \ } } t j	 j | | d  } |  j |  j g d | g | g  Wq t k
 r} z t |   WYd  d  } ~ Xq Xq n t d | | f   d	 | } y- |  j |  j g | | | | g |  Wq t k
 r} z t |   WYd  d  } ~ Xq Xq W|
 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 } | ri y |  j |  j g |  Wq t k
 r } z t |   WYd  d  } ~ Xq Xn t	 j
 d |  d  S)Nr   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   s  |  j  s |  j   |  j | |  \ } } |  j | | |  } | \ } } } | rl |  j d t |   t |  | | |  } | d  k	 r t j j	 | |  } |  j
 | |  r| t j k r |	 r |  j d d   } q|  j d d   } n |	 r|  j } n	 |  j } g  } x% | p"g  D] } | j d |  q#W| | | | d | g } t j j | d  } | d  k	 rt j j t j j |   \ } } t j j	 | |  j |   } | j d |  |  j | | |  |
 r|
 | d  d  <| r| j |  |  j t j j |   y |  j |  j g |  Wn1 t k
 rs} z t |   WYd  d  } ~ Xn X|  j | |  } | d  k	 r| \ } } d | | f } y  |  j d d	 d
 | | g  Wqt k
 r} z t |   WYd  d  } ~ XqXn 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warnry   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   x8 | D], } | j  d  r | j d d  d } Pq Wd  S| t j k rS d } n d } |  j |  } | d  k rx d  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   y t  |  } z | j   } Wd  | j   Xt j d t j  } t j | d |  } d } t j | d |  } t j d t j  } t j | |  d  k r d  St  | d  } z | j |  | SWd  | j   XWn t	 k
 r Yn Xd  S)NzU<assemblyIdentity.*?name=("|')Microsoft\.VC\d{2}\.CRT("|').*?(/>|</assemblyIdentity>)r   z*<dependentAssembly>\s*</dependentAssembly>zI<assemblyIdentity.*?name=(?:"|')(.+?)(?:"|').*?(?:/>|</assemblyIdentity>)w)
openreadrw   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 } xW | D]K } xB | D]: } t  j j | |  j |   } t  j j |  r6 | Sq6 Wq) Wd  Sd  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   s   xH |  j  D]= } t j j t j j |  |  } t j j |  r
 | Sq
 WxU t j d j d  D]= } t j j t j j |  |  } t j j |  rb | Sqb W| S)NZPathr   )r   rW   r   r\   rd   re   ra   rR   )r<   ZexerC   fnr   r   r   r     s    	!!zMSVCCompiler.find_exe)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        )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   (					>.#)	