관리-도구
편집 파일: _msvccompiler.cpython-39.opt-2.pyc
a �����DOg'N����������������������@���s����d�dl�Z�d�dlZd�dlZd�dlmZmZmZmZmZ�d�dl m Z mZ�d�dlm Z �d�dlmZ�d�dlmZ�dd��Zd d ��Zddd dd�Zdd��Zdd��Zddd�Zddddd�ZG�dd��de �ZdS�)�����N)�DistutilsExecError�DistutilsPlatformError�CompileError�LibError� LinkError)� CCompiler�gen_lib_options)�log)�get_platform)�countc������������������C���s��zt�jt�jdt�jt�jB�d�}�W�n�ty<���t�d��Y�dS�0�d}d�}|����t��D�]�}zt�� |�|�\}}}W�n�ty����Y��q�Y�n0�|rR|t�j krRtj� |�rRztt|��}W�n�ttfy����Y�qRY�n0�|dkrR||krR||�}}qRW�d�����n1���s�0����Y��||fS�)Nz'Software\Microsoft\VisualStudio\SxS\VC7)�accesszVisual C++ is not registered�NNr�������)�winregZ OpenKeyEx�HKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEY�OSErrorr ����debugr���Z EnumValueZREG_SZ�os�path�isdir�int�float� ValueError� TypeError)�key�best_version�best_dir�i�vZvc_dirZvt�version��r ����//usr/lib64/python3.9/distutils/_msvccompiler.py�_find_vc2015���s2���� � ,r"���c��������������� ���C���s����t�j�d�pt�j�d�}�|�s dS�z8tjt�j�|�ddd�ddd d ddd dg ddd����}W�n�tjt t fyt���Y�dS�0�t�j�|ddd�}t�j�|�r�d|fS�dS�)NzProgramFiles(x86)ZProgramFilesr ���zMicrosoft Visual StudioZ Installerzvswhere.exez-latestz-prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -products�*�mbcs�strict)�encoding�errorsZVCZ AuxiliaryZBuild����)r����environ�get� subprocess�check_outputr����join�strip�CalledProcessErrorr����UnicodeDecodeErrorr���)�rootr���r ���r ���r!����_find_vc20178���s(���� ��r2����x86Zx64ZarmZarm64)r3���� x86_amd64�x86_arm� x86_arm64c�����������������C���s\���t���\}}|st��\}}|s*t�d��dS�tj�|d�}tj�|�sTt�d|��dS�|d�fS�)Nz$No suitable Visual C++ version foundr ���z vcvarsall.batz%s cannot be found)r2���r"���r ���r���r���r���r-����isfile)� plat_spec�_r���r���� vcvarsallr ���r ���r!����_find_vcvarsall_���s���� r;���c�������������� ���C���s����t��d�rdd��t�j���D��S�t|��\}}|s6td��z&tjd�||��tj d�j ddd �}W�nB�tjy��}�z(t� |j��td �|j���W�Y�d�}~n d�}~0�0�dd��dd ��|���D��D��}|S�)NZDISTUTILS_USE_SDKc�����������������S���s���i�|�]\}}|����|�qS�r �����lower)�.0r����valuer ���r ���r!���� <dictcomp>s���s����z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)�stderrzutf-16le�replace)r'���zError executing {}c�����������������S���s$���i�|�]\}}}|r|r|����|�qS�r ���r<���)r>���r���r9���r?���r ���r ���r!���r@�������s����c�����������������s���s���|�]}|��d��V��qdS�)�=N)� partition)r>����liner ���r ���r!���� <genexpr>���������z_get_vc_env.<locals>.<genexpr>)r����getenvr)����itemsr;���r���r+���r,����format�STDOUT�decoder/���r ����error�output�cmd� splitlines)r8���r:���r9����out�exc�envr ���r ���r!����_get_vc_envq���s.���� � �� ��rT���c�����������������C���sN���|st��d��t�j�}|D�].}t�j�t�j�|�|��}t�j�|�r|��S�q|�S��Nr���)r���rH����split�pathsepr���r-����abspathr7���)Zexe�paths�p�fnr ���r ���r!���� _find_exe����s���� r\���r4���r5���r6���)�win32z win-amd64z win-arm32z win-arm64c���������������� �������s����e�Zd�ZdZi�ZdgZg�d�ZdgZdgZee�e�e�Z dZ dZdZd Z d �ZZdZd%d d�Zd&dd�Zd'dd�Zd(dd�Zd)dd�Zd*dd�Z��fdd�Zdd��Zdd ��Zd!d"��Zd+d#d$�Z���ZS�),�MSVCCompilerZmsvcz.c)z.ccz.cppz.cxx�.rcz.mcz.resz.objz.libz.dllz%s%sz.exer���c�����������������C���s ���t��|�|||��d�|�_d|�_d�S�)NF)r����__init__� plat_name�initialized)�self�verbose�dry_run�forcer ���r ���r!���r`�������s����zMSVCCompiler.__init__Nc�����������������C���s ��|d�u�rt���}|tvr(td�tt����t|�}t|�}|sDtd��|�dd�|�_|�j�t j �}td|�|�_td|�|�_ td|�|�_td|�|�_td |�|�_td |�|�_|�dd��t j �D�]}|r�|��|�t j���q�|�dd��t j �D�]}|r�|��|�t j���q�d�|�_g�d �|�_g�d�|�_g�d�}g�d�}g�|�d�|�_g�|�d�|�_g�|�d�d�d�|�_g�|�d�d�d�|�_g�|�|�_g�|�|�_tj d�f|�jtj df|�jtj df|�jtj!d�f|�jtj!df|�jtj!df|�jtj"d�f|�jtj"df|�jtj"df|�ji |�_#d|�_$d�S�)Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.r�����zcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZinclude�lib)�/nologoz/Ox�/W3z/GLz/DNDEBUGz/MD)ri���z/Odz/MDdz/Zirj���z/D_DEBUG)ri����/INCREMENTAL:NO�/LTCG)ri���rk���rl���z/DEBUG:FULLz/MANIFEST:EMBED,ID=1z/DLLz/MANIFEST:EMBED,ID=2z/MANIFESTUAC:NOFT)%r ����PLAT_TO_VCVARSr���rJ����tuplerT���r*����_pathsrV���r���rW���r\����cc�linkerrh����rc�mc�mtZadd_include_dir�rstrip�sepZadd_library_dirZpreprocess_options�compile_options�compile_options_debugZldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugr���Z EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY�_ldflagsrb���)rc���ra���r8���Zvc_envrY����dir�ldflagsZ ldflags_debugr ���r ���r!���� initialize����s\����� �zMSVCCompiler.initializerg���c��������������������sX���i��fdd��j�D����fdd��j�j�D������p8d�����fdd�}tt||��S�)Nc��������������������s���i�|�]}|��j��qS�r ���)� obj_extension�r>����ext�rc���r ���r!���r@���"��rG���z1MSVCCompiler.object_filenames.<locals>.<dictcomp>c��������������������s���i�|�]}|��j��qS�r ���)� res_extensionr~���r����r ���r!���r@���#��rG���rg���c��������������������s����t�j�|��\}}�r"t�j�|�}n2t�j�|�\}}|�t�jjt�jjf�rT|dd���}zt�j��|��|���W�S��t y����t d�|����Y�n0�d�S�)N����zDon't know how to compile {})r���r����splitext�basename� splitdrive� startswithrv����altsepr-����LookupErrorr���rJ���)rZ����baser���r9���)�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)rc���Zsource_filenamesr����r����r����r ���)r����r����rc���r����r!����object_filenames��s������zMSVCCompiler.object_filenamesc �����������������C���s���|�j�s|�����|��||||||�} | \}} }}}|p6g�} | �d��|rT| �|�j��n| �|�j��d}| D��]}z||�\}}W�n�ty����Y�qhY�n0�|r�tj � |�}||�jv�r�d|�}�nH||�jv�r�d|�}d}�n.||�j v��r@|}d|�}z|��|�jg|�||g���W�qh�t�y:�}�zt|��W�Y�d�}~qhd�}~0�0�qhn�||�jv��r�tj �|�}tj �|�}z\|��|�jd|d||g��tj �tj �|��\}}tj �||d ��}|��|�jd|�|g��W�qh�t�y��}�zt|��W�Y�d�}~qhd�}~0�0�qhntd �||���|�jg| �|�}|�r$|�d��|�|��|�d|���|�|��z|��|��W�qh�t�y��}�zt|��W�Y�d�}~qhd�}~0�0�qh| S�) Nz/cFz/Tcz/TpTz/foz-hz-rr_���z"Don't know how to compile {} to {}z/EHscz/Fo)rb���r|���Z_setup_compile�append�extendrx���rw����KeyErrorr���r���rX���� _c_extensions�_cpp_extensionsr�����spawnrr���r���r���r�����dirnamers���r����r����r-���rJ���rp���)rc���Zsourcesr����ZmacrosZinclude_dirsr���� extra_preargs�extra_postargsZdependsZcompile_info�objectsZpp_optsZbuildZcompile_optsZadd_cpp_opts�obj�srcr���Z input_optZ output_opt�msgZh_dirZrc_dirr����r9���Zrc_file�argsr ���r ���r!����compile>��sr���� � � zMSVCCompiler.compilec����������� ��� ���C���s����|�j�s|�����|��||�\}}|�j||d�}|��||�r�|d|�g�}|rJz,t�d|�jd�|���|�� |�jg|���W�q��t y��}�zt|��W�Y�d�}~q�d�}~0�0�nt�d|��d�S�)N)r�����/OUT:�Executing "%s" %s� �skipping %s (up-to-date))rb���r|����_fix_object_args�library_filename� _need_linkr ���r���rh���r-���r����r���r���) rc���r����Zoutput_libnamer����r����target_lang�output_filenameZlib_argsr����r ���r ���r!����create_static_lib���s����� zMSVCCompiler.create_static_libc�������������� ���C���s���|�j�s|�����|��||�\}}|��|||�}|\}}}|rL|��dt|����t|�|||�}|d�urptj� ||�}|�� ||��r�|�j|| f�}dd��|p�g�D��}||�|�|�d|�g�}tj�|d��}|d�u�rtj� tj�|��\}}tj� ||��|��}|�d|���| �r| |d�d�<�|�r.|�|��tj�tj�|��}|��|��z,t�d|�jd� |���|��|�jg|���W�n.�t�y��}�zt|��W�Y�d�}~n d�}~0�0�nt�d |��d�S�) Nz5I don't know what to do with 'runtime_library_dirs': c�����������������S���s���g�|�]}d�|��qS�)z/EXPORT:r ���)r>���Zsymr ���r ���r!���� <listcomp>���rG���z%MSVCCompiler.link.<locals>.<listcomp>r����r���z/IMPLIB:r����r����r����)rb���r|���r����Z _fix_lib_args�warn�strr���r���r���r-���r����ry���r����r����r����r����r����r����rX���Zmkpathr ���r���rq���r����r���r���)rc���Ztarget_descr����r����r����Z librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr���r����r����Z build_tempr����Z fixed_argsZlib_optsr{���Zexport_optsZld_argsZdll_nameZdll_extZimplib_filer����r ���r ���r!����link���s^����� �� �� �� zMSVCCompiler.linkc�������������� ������s@���t��d�}z$|�jt�jd<�t���|�W�|t�jd<�S�|t�jd<�0�d�S�rU���)r���rH���ro���r)����superr����)rc���rO���Zold_path�� __class__r ���r!���r�������s���� �zMSVCCompiler.spawnc�����������������C���s���d|�S�)Nz /LIBPATH:r ����rc���rz���r ���r ���r!����library_dir_option��s����zMSVCCompiler.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�)N)r����)rc���rh���r ���r ���r!����library_option ��s����zMSVCCompiler.library_optionc�����������������C���s\���|r|d�|g}n|g}|D�]:}|D�]0}t�j�||��|��}t�j�|�r$|����S�q$qd�S�)NZ_d)r���r���r-���r����r7���)rc����dirsrh���r���Z try_namesrz����nameZlibfiler ���r ���r!����find_library_file ��s����zMSVCCompiler.find_library_file)r���r���r���)N)r���rg���)NNNr���NNN)Nr���N) NNNNNr���NNNN)r���)�__name__� __module__�__qualname__Z compiler_typeZexecutablesr����r����r����r����r����r����r}���Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr`���r|���r����r����r����r����r����r����r����r����r����� __classcell__r ���r ���r����r!���r^�������sZ����� P��� "��� ]���� ����������� Er^���)N)r���r+���r���Zdistutils.errorsr���r���r���r���r���Zdistutils.ccompilerr���r���Z distutilsr ���Zdistutils.utilr ���� itertoolsr���r"���r2���ZPLAT_SPEC_TO_RUNTIMEr;���rT���r\���rm���r^���r ���r ���r ���r!����<module>���s.���!� �