Edit File: msvc9compiler.cpython-36.opt-2.pyc
3 � \�w������������������@���sP��d�dl�Z�d�dlZd�dlZd�dlZd�dlmZmZmZmZm Z �d�dl mZmZm Z �d�dlmZ�d�dlmZ�d�dlZejZejZejZejZejejejejfZej dko�ej!d%kZ"e"r�d Z#d Z$dZ%ndZ#d Z$dZ%dddd�Z&G�dd��d�Z'G�dd��d�Z(dd��Z)dd��Z*dd��Z+dd��Z,d&dd �Z-e)��Z.e.d!k��r<ed"e.���G�d#d$��d$e�Z/dS�)'�����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�x86�amd64Zia64)r���z win-amd64zwin-ia64c���������������@���sL���e�Zd�Zdd��Zee�Zdd��Zee�Zdd��Zee�Zdd��Zee�Zd S�) �Regc�������������C���s:���x,t�D�]$}|�j||�}|r||kr||�S�qW�t|��d�S�)N)�HKEYS�read_values�KeyError)�cls�path�key�base�d��r����//usr/lib64/python3.6/distutils/msvc9compiler.py� get_valueA���s ���� z Reg.get_valuec�������������C���sn���yt�||�}W�n�tk r"���d�S�X�g�}d}x<yt||�}W�n�tk rR���P�Y�nX�|j|��|d7�}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����yt�||�}W�n�tk r"���d�S�X�i�}d}xTyt||�\}}}W�n�tk rX���P�Y�nX�|j��}|�j|�||�j|�<�|d7�}q.W�|S�)Nr���r���)r���r����RegEnumValue�lower�convert_mbcs) r���r���r���r"���r���r$����name�value�typer���r���r���r���[���s����zReg.read_valuesc�������������C���s:���t�|�dd��}|d�k r6y|d�}�W�n�tk r4���Y�nX�|�S�)N�decode�mbcs)�getattr�UnicodeError)�sZdecr���r���r���r)���q���s����zReg.convert_mbcsN) �__name__� __module__�__qualname__r����classmethodr&���r���r)����staticmethodr���r���r���r���r���=���s���r���c���������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) � MacroExpanderc�������������C���s���i�|�_�t|�|�_|�j|��d�S�)N)�macros�VS_BASE�vsbase�load_macros)�self�versionr���r���r����__init__}���s���� zMacroExpander.__init__c�������������C���s���t�j||�|�jd|�<�d�S�)Nz$(%s))r���r���r8���)r<���Zmacror���r���r���r���r���� set_macro����s����zMacroExpander.set_macroc�������������C���s��|�j�d|�jd�d��|�j�d|�jd�d��|�j�dtd��y$|dkrP|�j�d td ��ntd ��W�n�tk rv���td��Y�nX�|dkr�|�j�d |�jd��|�j�dtd��ndd}x^tD�]V}yt||�}W�n�tk r����w�Y�nX�t |d�}t j|d||f��}|d�|�jd<�q�W�d�S�)NZVCInstallDirz \Setup\VC� productdirZVSInstallDirz \Setup\VSZFrameworkDirZinstallrootg������ @ZFrameworkSDKDirzsdkinstallrootv2.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������"@ZFrameworkVersionzclr versionZ WindowsSdkDirZcurrentinstallfolderz.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.���� zMacroExpander.load_macrosc�������������C���s(���x"|�j�j��D�]\}}|j||�}qW�|S�)N)r8����items�replace)r<���r1���r%����vr���r���r����sub����s����zMacroExpander.subN)r2���r3���r4���r>���r?���r;���rH���r���r���r���r���r7���{���s���r7���c��������������C���s����d}�t�jj|��}|d krdS�|t|���}t�j|d���jdd�\}}t|d�d���d�}|dkrf|d7�}t|dd���d�}|dkr�d }|dkr�||�S�d�S�)NzMSC v.r�������� r ���� �������g������$@r���������)�sysr=����find�len�split�int)�prefixr$���r1����restZmajorVersionZminorVersionr���r���r����get_build_version����s����rV���c�������������C���s4���g�}x*|�D�]"}t�jj|�}||kr |j|��q W�|S�)N)�osr����normpathr!���)�pathsZ reduced_pathsrC���Znpr���r���r����normalize_and_reduce_paths����s���� rZ���c�������������C���s@���|�j�tj�}g�}x|D�]}||kr|j|��qW�tjj|�}|S�)N)rR���rW����pathsepr!����join)ZvariableZoldListZnewListr$���ZnewVariabler���r���r����removeDuplicates����s���� r]���c���������� ���C���s��t�|��}ytjd|�d�}W�n"�tk r>���tjd��d�}Y�nX�|�sTtjj|��r�d|��}tj j |d��}|r�tjj|�r�tjj|tjtjd�}tjj |�}tjj|�s�tjd|���d�S�ntjd|���|s�tjd��d�S�tjj|d �}tjj|�r�|S�tjd ��d�S�)Nz%s\Setup\VCr@���z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r9���r���r���r���r ����debugrW���r����isdir�environ�getr\����pardir�abspath�isfile)r=���r:���r@���ZtoolskeyZtoolsdir� vcvarsallr���r���r����find_vcvarsall����s2���� rf���c�������������C���s8��t�|��}td�}i�}|d�kr$td��tjd||���tjd||f�tjtjd�}z�|j��\}}|j ��d krvt|j d ���|j d �}xr|jd�D�]d}tj |�}d|kr�q�|j��}|jdd �\} } | j��} | |kr�| jtj�r�| d�d��} t| �|| <�q�W�W�d�|jj���|jj���X�t|�t|�k�r4ttt|j������|S�)N�include�lib�libpathr���zUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)�stdout�stderrr���r.���� �=r���)rg���rh���ri���r���rM���)rf����setr���r ���r^���� subprocess�Popen�PIPEZcommunicate�waitr-���rR���r���r)����stripr(����endswithrW���r[���r]���rj����closerk���rQ���� ValueError�str�list�keys)r=���Zarchre���Zinteresting�result�popenrj���rk����liner���r+���r���r���r����query_vcvarsall����s<���� r}���g������ @z(VC %0.1f is not supported by this modulec������������ ���@���s����e�Zd�ZdZi�ZdgZdddgZdgZdgZee�e�e�Z dZ d Zd ZdZ d�ZZd Zd-dd�Zd.dd�Zd/dd�Zd0dd�Zd1dd�Zd2dd�Zdd��Zdd ��Zd!d"��Zd#d$��Zd%d&��Zd'd(��Zd3d)d*�Zd+d,��ZdS�)4�MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exer���c�������������C���s8���t�j|�|||��t|�_d|�_g�|�_d�|�_d�|�_d|�_d�S�)NzSoftware\Microsoft\VisualStudioF) r���r>����VERSION�_MSVCCompiler__versionZ_MSVCCompiler__root�_MSVCCompiler__paths� plat_name�_MSVCCompiler__arch�initialized)r<����verboseZdry_runZforcer���r���r���r>���J��s����zMSVCCompiler.__init__Nc�������������C���s��|d�krt���}d$}||kr(td|f���dtjkrfdtjkrf|�jd�rfd|�_d|�_d |�_d |�_d|�_ n�|t���ksx|dkr�t |�}nt t����d�t |��}tt|�}|d �j tj�|�_|d�tjd<�|d�tjd<�t|�j�dkr�td|�j���|�jd�|�_|�jd�|�_|�jd �|�_|�jd �|�_|�jd�|�_ y,x&tjd �j d�D�]}|�jj|���q<W�W�n�tk �rj���Y�nX�t|�j�|�_dj|�j�tjd <�d�|�_|�jdk�r�dddddg|�_ddddddg|�_n&ddddddg|�_dddddddg|�_dddg|�_|�jd k�rddd!d"g|�_dg|�_d#|�_d�S�)%Nr���� win-amd64�win-ia64z--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exe�_r���rh���rg���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���r`����find_exe�cc�linkerrh����rc�mc�PLAT_TO_VCVARSr}���r���rR���r[���r����rQ���Z_MSVCCompiler__productr!���r���rZ���r\���Zpreprocess_optionsr�����compile_options�compile_options_debug�ldflags_sharedr�����ldflags_shared_debugZldflags_staticr����)r<���r����Zok_platsZ plat_specZvc_envrC���r���r���r���� initializeU��sd���� zMSVCCompiler.initialize��c�������������C���s����|d�krd}g�}x�|D�]�}t�jj|�\}}t�jj|�d�}|t�jj|�d���}||�jkrdtd|���|rtt�jj|�}||�jkr�|j t�jj |||�j����q||�jkr�|j t�jj |||�j����q|j t�jj |||�j ����qW�|S�)Nr����r���zDon't know how to compile %s)rW���r����splitext� splitdrive�isabs�src_extensionsr����basename�_rc_extensionsr!���r\���� res_extension�_mc_extensions� obj_extension)r<���Zsource_filenamesZ strip_dir� output_dirZ obj_namesZsrc_namer����extr���r���r����object_filenames���s(����� zMSVCCompiler.object_filenamesc �������������C���st��|�j�s|�j���|�j||||||�} | \}} }}}|p6g�} | jd��|rT| j|�j��n| j|�j���x| D��]}y||�\}}W�n�tk r����whY�nX�|r�tj j |�}||�jkr�d|�}�nT||�jkr�d|�}�n>||�j k�r>|}d|�}y"|�j|�jg|�|g�|g���W�qh�tk �r8�}�zt|��W�Y�d�d�}~X�qhX�qhn�||�jk�r�tj j|�}tj j|�}yl|�j|�jgd|d|g�|g���tj jtj j|��\}}tj j||d��}|�j|�jgd|�g�|g���W�qh�tk �r��}�zt|��W�Y�d�d�}~X�qhX�qhntd||f���d |�}y&|�j|�jg| �|�||g�|���W�qh�tk �rj�}�zt|��W�Y�d�d�}~X�qhX�qhW�| 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���rc���� _c_extensions�_cpp_extensionsr�����spawnr����r���r���r�����dirnamer����r����r����r\���r����)r<���Zsourcesr����r8���Zinclude_dirsr^���� extra_preargs�extra_postargsZdependsZcompile_info�objectsZpp_optsZbuildZcompile_opts�obj�srcr����Z input_optZ output_opt�msgZh_dirZrc_dirr���r����Zrc_filer���r���r����compile���sj���� zMSVCCompiler.compilec������� ������C���s����|�j�s|�j���|�j||�\}}|�j||d�}|�j||�r�|d|�g�}|rJy|�j|�jg|���W�q��tk r��}�zt|��W�Y�d�d�}~X�q�X�nt j d|��d�S�)N)r����z/OUT:zskipping %s (up-to-date))r����r�����_fix_object_args�library_filename� _need_linkr����rh���r���r���r ���r^���) r<���r����Zoutput_libnamer����r^����target_lang�output_filenameZlib_argsr����r���r���r����create_static_lib��s����zMSVCCompiler.create_static_libc�������������C���sX��|�j�s|�j���|�j||�\}}|�j|||�}|\}}}|rL|�jdt|����t|�|||�}|d�k rptjj ||�}|�j ||��rH|tjkr�| r�|�j dd���}q�|�jdd���}n| r�|�j }n|�j}g�}x|p�g�D�]}|jd|���q�W�||�|�|�d|�g�}tjj|d��}|d�k �rPtjjtjj|��\}}tjj ||�j|��}|jd|���|�j|||��| �rp| |d�d�<�|�r�|j|��|�jtjj|���y|�j|�jg|���W�n,�tk �r��}�zt|��W�Y�d�d�}~X�nX�|�j||�}|d�k �rT|\}}d||f�}y|�jdd d ||g��W�n,�tk �rD�}�zt|��W�Y�d�d�}~X�nX�ntjd|��d�S�)Nz5I don't know what to do with 'runtime_library_dirs': r���z/EXPORT:z/OUT:r���z/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))r����r����r����Z _fix_lib_args�warnrw���r ���rW���r���r\���r����r���� EXECUTABLEr����r����r!���r����r����r����r�����manifest_setup_ldargsr����Zmkpathr����r����r���r����manifest_get_embed_infor ���r^���)r<����target_descr����r����r����Z librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr^���r����r����� build_tempr����Z fixed_argsZlib_optsZldflagsZexport_optsZsym�ld_argsZdll_nameZdll_extZimplib_filer����ZmfinfoZ mffilename�mfidZout_argr���r���r����link8��sl���� zMSVCCompiler.linkc�������������C���s,���t�jj|t�jj|�d��}|jd|���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`���x,|D�] }|j�d�r|jdd�d�}P�qW�d�S�|tjkr>d}nd}|�j|�}|d�krXd�S�||fS�)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��}W�d�|j���X�tjdtj�}tj|d|�}d}tj|d|�}tjdtj�}tj||�d�krrd�S�t�|d�}z|j|��|S�|j���X�W�n�t k r����Y�nX�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_fZmanifest_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����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���r����runtime_library_dir_option���s����z'MSVCCompiler.runtime_library_dir_optionc�������������C���s ���|�j�|�S�)N)r����)r<���rh���r���r���r����library_option���s����zMSVCCompiler.library_optionc�������������C���s`���|r|d�|g}n|g}xB|D�]6}x0|D�](}t�jj||�j|��}t�jj|�r(|S�q(W�qW�d�S�d�S�)NZ_d)rW���r���r\���r�����exists)r<����dirsrh���r^���Z try_namesr����r*���Zlibfiler���r���r����find_library_file���s���� zMSVCCompiler.find_library_filec�������������C���sz���x4|�j�D�]*}tjjtjj|�|�}tjj|�r|S�qW�x>tjd�jd�D�]*}tjjtjj|�|�}tjj|�rH|S�qHW�|S�)NZPathr����)r����rW���r���r\���rc���rd���r`���rR���)r<���ZexerC����fnr���r���r���r������s���� zMSVCCompiler.find_exe)r���r���r���)N)r���r����)NNNr���NNN)Nr���N) NNNNNr���NNNN)r���)r2���r3���r4���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����r����r����r����r���r���r���r���r~���,��sP��� X� � V�� ��������� R+ r~���l��������)r���)0rW���ro���rO���r����Zdistutils.errorsr���r���r���r���r���Zdistutils.ccompilerr���r���r ���Z distutilsr ���Zdistutils.utilr����winregZ OpenKeyExr���ZEnumKeyr ���Z EnumValuer'����errorr���Z HKEY_USERS�HKEY_CURRENT_USER�HKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr����platform�maxsizeZNATIVE_WIN64r9���rB���rA���r����r���r7���rV���rZ���r]���rf���r}���r���r~���r���r���r���r����<module>���sL���>.# )