<!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>

]O                 @   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 d  d l m Z d  d l m Z d  d l Z d  d l m Z d d   Z d	 d
   Z d d d  Z d d d d i Z d d d d d d i Z e d g  Z Gd 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 d t  j t  j B} Wn# t k
 rN t j d  d	 SYn X| d } d  } x t   D] } y t  j	 | |  \ } } } Wn t k
 r PYn X| rl | t  j
 k rl t j j |  rl y t t |   } Wn t t f k
 rwl Yn X| d k rl | | k rl | | } } ql W| sBt j d  d
 St j j | d  }	 t j j |	  s}t j d |	  d Sd  }
 t j |   } | rt j j | | j |   }
 t j j |
  st j d |
  d  }
 |	 |
 f SWd  QRXd  S)Nz'Software\Microsoft\VisualStudio\SxS\VC7accesszVisual C++ is not registeredr      z$No suitable Visual C++ version foundzvcvarsall.batz%s cannot be found)NN)NN)NN)winregZ	OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr	   debugr   Z	EnumValueZREG_SZospathisdirintfloat
ValueError	TypeErrorjoinisfile _VCVARS_PLAT_TO_VCRUNTIME_REDISTgetformat)	plat_speckeyZbest_versionZbest_dirivZvc_dirZvtversion	vcvarsall	vcruntimeZvcruntime_spec r%   2/opt/alt/python35/lib64/python3.5/_msvccompiler.py_find_vcvarsall   sN    	'r'   c             C   s  t  j d  r) d d   t  j j   D St |   \ } } | sM t d   y7 t j d j | |   d t j	 j
 d d d	 } WnP t j k
 r } z- t j | j  t d
 j | j    WYd  d  } ~ Xn Xd d   d d   | j   D D } | r| | d <| S)NZDISTUTILS_USE_SDKc             S   s%   i  |  ] \ } } | | j     q Sr%   )lower).0r   valuer%   r%   r&   
<dictcomp>N   s   	z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && setstderrzutf-16leerrorsreplacezError executing {}c             S   s4   i  |  ]* \ } } } | r | r | | j     q Sr%   )r(   )r)   r   _r*   r%   r%   r&   r+   a   s   	c             s   s   |  ] } | j  d   Vq d S)=N)	partition)r)   liner%   r%   r&   	<genexpr>d   s    z_get_vc_env.<locals>.<genexpr>py_vcruntime_redist)r   getenvenvironitemsr'   r   
subprocesscheck_outputr   STDOUTdecodeCalledProcessErrorr	   erroroutputcmd
splitlines)r   r#   r$   outexcenvr%   r%   r&   _get_vc_envL   s(    		"	
rD   c             C   sm   | s! t  j d  j t  j  } xE | D]= } t  j j t  j j |  |   } t  j j |  r( | Sq( W|  S)Nr   )r   r5   splitpathsepr   r   abspathr   )Zexepathspfnr%   r%   r&   	_find_exel   s    	!rK   win32Zx86z	win-amd64Z	x86_amd64z1redist\x86\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllamd64z1redist\x64\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllzvcruntime140.dllc                   sg  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   f d d    Z d! d"   Z d# d$   Z d% d&   Z d d' d(  Z   S))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verbosedry_runforcer%   r%   r&   rO      s    	zMSVCCompiler.__init__Nc             C   s%  | d  k r t    } | t k r< t d j t t     t | } t |  } | sd t d   | j d d  |  _ |  j j t	 j
  } t d |  |  _ t d |  |  _ t d |  |  _ t d |  |  _ t d	 |  |  _ t d
 |  |  _ | j d d  |  _ x9 | j d d  j t	 j
  D] } | r.|  j |  q.Wx9 | j d d  j t	 j
  D] } | rj|  j |  qjWd  |  _ d d d d d g |  _ |  j j |  j rd 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.exer4   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)rY   rZ   )r[   )r[   )r\   r]   r^   )r\   r]   r^   )&r
   PLAT_TO_VCVARSr   r   tuplerD   r   _pathsrE   r   rF   rK   cclinkerrX   rcmcmt_vcruntime_redistZadd_include_dirZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugextendZldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugr   Z
EXECUTABLEZSHARED_OBJECTZSHARED_LIBRARY_ldflagsrQ   )rR   rP   r   Zvc_envrH   dirldflagsZldflags_debugr%   r%   r&   
initialize   s`    		
%%		zMSVCCompiler.initializerV   c                sv    f d d    j  D  f d d    j  j D     pH d      f d d   } t t | |   S)Nc                s   i  |  ] }   j  |  q Sr%   )obj_extension)r)   ext)rR   r%   r&   r+     s   	 z1MSVCCompiler.object_filenames.<locals>.<dictcomp>c                s   i  |  ] }   j  |  q Sr%   )res_extension)r)   rq   )rR   r%   r&   r+     s   	 rV   c                s   t  j j |   \ } }  r3 t  j j |  } nI t  j j |  \ } } | j t  j j t  j j f  r| | d d   } y t  j j  |   |  SWn' t	 k
 r t
 d j |     Yn Xd  S)N   zDon't know how to compile {})r   r   splitextbasename
splitdrive
startswithsepaltsepr   LookupErrorr   r   )rI   baserq   r/   )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)rR   Zsource_filenamesr~   r}   r   r%   )r|   r}   rR   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  d } x|
 D]} y | | \ } } Wn t k
 r w Yn X| r t j	 j
 |  } | |  j k r d | } n| |  j k rd | } d } n| |  j k r| } d | } y% |  j |  j 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 d | d | | g  t j	 j t j	 j |   \ } } t j	 j | | d	  } |  j |  j d | | g  Wq t k
 r} z t |   WYd  d  } ~ Xq Xq n t d
 j | |    |  j g | | } | r| j d  | j |  | j d |  | j |  y |  j |  Wq t k
 r6} z t |   WYd  d  } ~ Xq Xq W|
 S)Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rQ   ro   Z_setup_compileri   rk   rj   rh   KeyErrorr   r   rG   _c_extensions_cpp_extensionsr   spawnrd   r   r   r   dirnamere   rt   ru   r   r   rb   )rR   Zsourcesr}   ZmacrosZinclude_dirsr   extra_preargsextra_postargsZdependsZcompile_infoobjectsZpp_optsZbuildZcompile_optsZadd_cpp_optsobjsrcrq   Z	input_optZ
output_optmsgZh_dirZrc_dirr{   r/   Zrc_fileargsr%   r%   r&   compile+  sn    	

	
%"$!	#zMSVCCompiler.compilec       	      C   s   |  j  s |  j   |  j | |  \ } } |  j | d | } |  j | |  r | d | g } | ri y: t j d |  j d j |   |  j	 |  j g |  Wq t
 k
 r } z t |   WYd  d  } ~ Xq Xn t j d |  d  S)Nr}   z/OUT:zExecuting "%s" %s zskipping %s (up-to-date))rQ   ro   _fix_object_argslibrary_filename
_need_linkr	   r   rX   r   r   r   r   )	rR   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	 r t j j	 | |  } |  j
 | |  rD|  j | |	 f } d d   | p g  D } | | | | d | g } t j j | d  } | d  k	 rrt j j t j j |   \ } } t j j	 | |  j |   } | j d |  |
 r|
 | d  d  <| r| j |  t j j t j j |   } |  j |  yG t j d |  j d j	 |   |  j |  j g |  |  j |  WqTt k
 r@} z t |   WYd  d  } ~ XqTXn 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))rQ   ro   r   Z_fix_lib_argswarnstrr   r   r   r   r   rl   r   rt   ru   r   ri   rk   rG   Zmkpathr	   r   rc   r   _copy_vcruntimer   r   )rR   Ztarget_descr   r   r}   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr   r   r   Z
build_tempr   Z
fixed_argsZlib_optsrn   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  St j j |  j   t k rI d  St j d |  t	 j
 | |  } t j | t j  d  S)NzCopying "%s")rg   r   r   r   ru   r(   _BUNDLED_DLLSr	   r   shutilcopychmodstatS_IWRITE)rR   r}   r$   r%   r%   r&   r     s    	zMSVCCompiler._copy_vcruntimec                sH   t  j d  } z$ |  j t  j d <t   j |  SWd  | t  j d <Xd  S)Nr   )r   r5   ra   r6   superr   )rR   r?   Zold_path)	__class__r%   r&   r     s
    zMSVCCompiler.spawnc             C   s   d | S)Nz	/LIBPATH:r%   )rR   rm   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   )rR   rm   r%   r%   r&   runtime_library_dir_option   s    z'MSVCCompiler.runtime_library_dir_optionc             C   s   |  j  |  S)N)r   )rR   rX   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)r   r   r   r   r   )rR   dirsrX   r   Z	try_namesrm   nameZlibfiler%   r%   r&   find_library_file  s    	zMSVCCompiler.find_library_file)__name__
__module____qualname__Zcompiler_typeZexecutablesr   r   r   r   r   rr   rp   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionrO   ro   r   r   r   r   r   r   r   r   r   r   r%   r%   )r   r&   rN      sL   			
T[9rN   )r   r   r   r8   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   Z	distutilsr	   Zdistutils.utilr
   r   	itertoolsr   r'   rD   rK   r_   r   	frozensetr   rN   r%   r%   r%   r&   <module>   s&   (. 