Your IP : 52.14.204.52


Current Path : /lib64/python3.8/distutils/__pycache__/
Upload File :
Current File : //lib64/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.opt-2.pyc

U

e5dRN�@s�ddlZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd�Zd	d
�Zddd
dd�Zdd�Zdd�Zddd�Zddddd�ZGdd�de�ZdS)�N)�DistutilsExecError�DistutilsPlatformError�CompileError�LibError�	LinkError)�	CCompiler�gen_lib_options)�log)�get_platform)�countcCsztjtjdtjtjBd�}Wn tk
r>t�d�YdSXd}d}|��t�D]�}zt�	||�\}}}Wntk
r�Yq�YnX|rT|tj
krTtj�
|�rTztt|��}Wnttfk
r�YqTYnX|dkrT||krT||}}qTW5QRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)�accesszVisual C++ is not registered�NNr�)�winregZ	OpenKeyEx�HKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEY�OSErrorr	�debugrZ	EnumValueZREG_SZ�os�path�isdir�int�float�
ValueError�	TypeError)�key�best_version�best_dir�i�vZvc_dirZvt�version�r �//usr/lib64/python3.8/distutils/_msvccompiler.py�_find_vc2015s2
�



r"c
Cs�ddl}tj�d�ptj�d�}|s(dSz8tjtj�|ddd�dd	d
ddd
ddg	ddd���}Wntj	t
tfk
r~YdSXtj�|ddd�}tj�|�r�d|fSdS)NrzProgramFiles(x86)ZProgramFilesr
zMicrosoft Visual StudioZ	Installerzvswhere.exez-latestz-prereleasez	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z	-propertyZinstallationPathz	-products�*�mbcs�strict)�encoding�errorsZVCZ	AuxiliaryZBuild�)
�jsonr�environ�get�
subprocess�check_outputr�join�strip�CalledProcessErrorr�UnicodeDecodeErrorr)r)�rootrr r r!�_find_vc2017:s2
��r3�x86Zx64ZarmZarm64)r4�	x86_amd64�x86_arm�	x86_arm64cCs\t�\}}|st�\}}|s*t�d�dStj�|d�}tj�|�sTt�d|�dS|dfS)Nz$No suitable Visual C++ version foundr
z
vcvarsall.batz%s cannot be found)r3r"r	rrrr.�isfile)�	plat_spec�_rr�	vcvarsallr r r!�_find_vcvarsallcs


r<c
Cs�t�d�rdd�tj��D�St|�\}}|s6td��z&tjd�||�tj	d�j
ddd	�}Wn@tjk
r�}z t�
|j�td
�|j���W5d}~XYnXdd�dd
�|��D�D�}|S)NZDISTUTILS_USE_SDKcSsi|]\}}|��|�qSr ��lower)�.0r�valuer r r!�
<dictcomp>ws�z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)�stderrzutf-16le�replace)r'zError executing {}cSs$i|]\}}}|r|r|��|�qSr r=)r?rr:r@r r r!rA�s
�css|]}|�d�VqdS)�=N)�	partition)r?�liner r r!�	<genexpr>�sz_get_vc_env.<locals>.<genexpr>)r�getenvr*�itemsr<rr,r-�formatZSTDOUT�decoder0r	�error�output�cmd�
splitlines)r9r;r:�out�exc�envr r r!�_get_vc_envus0
�
��
��rScCsN|st�d��tj�}|D].}tj�tj�|�|�}tj�|�r|Sq|S�Nr)rrH�split�pathseprr.�abspathr8)Zexe�paths�p�fnr r r!�	_find_exe�s	
r[r5r6r7)Zwin32z	win-amd64z	win-arm32z	win-arm64c
s�eZdZdZiZdgZdddgZdgZdgZeeeeZ	dZ
d	Zd
ZdZ
dZZd
Zd'dd�Zd(dd�Zd)dd�Zd*dd�Zd+dd�Zd,dd�Z�fdd�Zdd �Zd!d"�Zd#d$�Zd-d%d&�Z�ZS).�MSVCCompilerZmsvcz.cz.ccz.cppz.cxx�.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t�||||�d|_d|_dS)NF)r�__init__�	plat_name�initialized)�self�verboseZdry_runZforcer r r!r^�szMSVCCompiler.__init__NcCs�|dkrt�}|tkr(td�tt����t|}t|�}|sDtd��|�dd�|_|j�t	j
�}td|�|_td|�|_
td|�|_td|�|_td	|�|_td
|�|_|�dd��t	j
�D]}|r�|�|�t	j��q�|�dd��t	j
�D]}|r�|�|�t	j��q�d|_d
dddddg|_d
dddddg|_d
ddg}d
dddg}|d �|_|d!�|_|d"�|_|d#�|_|�|_|�|_tj df|jtj df|jtj df|jtj!df|jtj!df|jtj!df|jtj"df|jtj"df|jtj"df|ji	|_#d|_$dS)$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.r�zcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZinclude�libz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz/DEBUG:FULL�/MANIFEST:EMBED,ID=1�/DLL�/MANIFEST:EMBED,ID=2�/MANIFESTUAC:NOFT)re)re)rfrgrh)rfrgrh)%r
�PLAT_TO_VCVARSrrJ�tuplerSr+�_pathsrUrrVr[�cc�linkerrd�rc�mcZmtZadd_include_dir�rstrip�sepZadd_library_dirZpreprocess_options�compile_options�compile_options_debugZldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ
EXECUTABLEZ
SHARED_OBJECTZSHARED_LIBRARY�_ldflagsr`)rar_r9Zvc_envrX�dir�ldflagsZ
ldflags_debugr r r!�
initialize�s������



�zMSVCCompiler.initializerccsT�fdd��jD��fdd��j�jD����p4d����fdd�}tt||��S)Ncsi|]}|�j�qSr )�
obj_extension�r?�ext�rar r!rA&sz1MSVCCompiler.object_filenames.<locals>.<dictcomp>csi|]}|�j�qSr )�
res_extensionryr{r r!rA'srccs�tj�|�\}}�r"tj�|�}n2tj�|�\}}|�tjjtjjf�rT|dd�}ztj��|�|�WSt	k
r�t
d�|���YnXdS)N�zDon't know how to compile {})rr�splitext�basename�
splitdrive�
startswithrq�altsepr.�LookupErrorrrJ)rY�baserzr:)�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)raZsource_filenamesr�r�r�r )r�r�rar�r!�object_filenames!s�zMSVCCompiler.object_filenamesc	Cs�|js|��|�||||||�}	|	\}}
}}}|p6g}
|
�d�|rT|
�|j�n|
�|j�d}|
D�]}z||\}}Wntk
r�YqhYnX|r�tj	�
|�}||jkr�d|}�nD||jkr�d|}d}�n*||j
k�r@|}d|}z|�|jg|||g�Wqhtk
�r:}zt|��W5d}~XYqhXqhn�||jk�r�tj	�|�}tj	�|�}z\|�|jd|d||g�tj	�tj	�|��\}}tj	�||d	�}|�|jd||g�Wqhtk
�r�}zt|��W5d}~XYqhXqhntd
�||���|jg|
|}|�r"|�d�|�|�|�d|�|�|�z|�|�Wqhtk
�r~}zt|��W5d}~XYqhXqh|
S)
Nz/cFz/Tcz/TpTz/foz-hz-rr]z"Don't know how to compile {} to {}z/EHscz/Fo)r`rwZ_setup_compile�append�extendrsrr�KeyErrorrrrW�
_c_extensions�_cpp_extensionsr��spawnrnrrr��dirnameror~rr.rJrl)raZsourcesr�ZmacrosZinclude_dirsr�
extra_preargs�extra_postargsZdependsZcompile_info�objectsZpp_optsZbuildZcompile_optsZadd_cpp_opts�obj�srcrzZ	input_optZ
output_opt�msgZh_dirZrc_dirr�r:Zrc_file�argsr r r!�compileBsx
�




�


zMSVCCompiler.compilec	
Cs�|js|��|�||�\}}|j||d�}|�||�r�|d|g}|rJz,t�d|jd�|��|�	|jg|�Wq�t
k
r�}zt|��W5d}~XYq�Xnt�d|�dS)N)r��/OUT:�Executing "%s" %s� �skipping %s (up-to-date))r`rw�_fix_object_args�library_filename�
_need_linkr	rrdr.r�rr)	rar�Zoutput_libnamer�r�target_lang�output_filenameZlib_argsr�r r r!�create_static_lib�s�zMSVCCompiler.create_static_libc
Cs�|js|��|�||�\}}|�|||�}|\}}}|rL|�dt|��t||||�}|dk	rptj�	||�}|�
||��r�|j||	f}dd�|p�gD�}||||d|g}tj�|d�}|dk	�rtj�
tj�|��\}}tj�	||�|��}|�d|�|
�r|
|dd�<|�r.|�|�tj�tj�|��}|�|�z,t�d|jd�	|��|�|jg|�Wn,tk
�r�}zt|��W5d}~XYnXnt�d	|�dS)
Nz5I don't know what to do with 'runtime_library_dirs': cSsg|]}d|�qS)z/EXPORT:r )r?Zsymr r r!�
<listcomp>�sz%MSVCCompiler.link.<locals>.<listcomp>r�rz/IMPLIB:r�r�r�)r`rwr�Z
_fix_lib_args�warn�strrrrr.r�rtr�r~rr�r�r�rWZmkpathr	rrmr�rr)raZtarget_descr�r�r�Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsrr�r�Z
build_tempr�Z
fixed_argsZlib_optsrvZexport_optsZld_argsZdll_nameZdll_extZimplib_filer�r r r!�link�s`�
��
��

��

zMSVCCompiler.linkc	s8t�d�}z|jtjd<t��|�W�S|tjd<XdSrT)rrHr*rk�superr�)rarNZold_path��	__class__r r!r��s

zMSVCCompiler.spawncCsd|S)Nz	/LIBPATH:r �rarur r r!�library_dir_optionszMSVCCompiler.library_dir_optioncCstd��dS)Nz:don't know how to set runtime library search path for MSVC)rr�r r r!�runtime_library_dir_option
s�z'MSVCCompiler.runtime_library_dir_optioncCs
|�|�S)N)r�)rardr r r!�library_optionszMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj�||�|��}tj�|�r$|Sq$qdS)NZ_d)rrr.r�r8)ra�dirsrdrZ	try_namesru�nameZlibfiler r r!�find_library_fileszMSVCCompiler.find_library_file)rrr)N)rrc)NNNrNNN)NrN)
NNNNNrNNNN)r)�__name__�
__module__�__qualname__Z
compiler_typeZexecutablesr�r�r�r�r�r|rxZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ
exe_extensionr^rwr�r�r�r�r�r�r�r�r��
__classcell__r r r�r!r\�sd
��

P�
"�
]�
�
Er\)N)rZshutil�statr,rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ	distutilsr	Zdistutils.utilr
�	itertoolsrr"r3ZPLAT_SPEC_TO_RUNTIMEr<rSr[rir\r r r r!�<module>s2#�
�

?>