U
�AT^�U c @ s� d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm Z m
Z
d dlmZm
Z
d dlmZ d dlmZ d dlmZ dd� Zd d
� Zddd
dd�Zdd� Zdd� Zddd�Zddddd�Zedg�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 tk
r> t�d� Y dS X d}d }| �� t� D ]�}zt � | |�\}}}W n tk
r� Y q�Y nX |rT|t j
krTtj�
|�rTztt|��}W n ttfk
r� Y qTY nX |dkrT||krT|| }}qTW 5 Q R X ||fS )Nz'Software\Microsoft\VisualStudio\SxS\VC7)ZaccesszVisual C++ is not registered�NNr i )�winregZ OpenKeyExZHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEY�OSErrorr �debugr
Z EnumValueZREG_SZ�os�path�isdirZintZfloatZ
ValueErrorZ TypeError)�key�best_version�best_dirZiZvZvc_dirZvtZversion� r �//usr/lib64/python3.8/distutils/_msvccompiler.py�_find_vc2015 s2
�
r c
C s� dd l } tj�d�ptj�d�}|s(dS z8tjtj�|ddd�dd d
ddd
ddg ddd��� }W n tj t
tfk
r~ Y dS X tj�|ddd�}tj�|�r�d|fS dS )Nr zProgramFiles(x86)ZProgramFilesr zMicrosoft Visual StudioZ Installerzvswhere.exez-latestz-prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -productsZ*ZmbcsZstrict)Zencoding�errorsZVCZ AuxiliaryZBuildi )
�jsonr �environ�get�
subprocess�check_outputr �joinZstrip�CalledProcessErrorr
ZUnicodeDecodeErrorr )r Zrootr r r r �_find_vc2017: s2
� �r �x86�x64ZarmZarm64)r! � x86_amd64�x86_arm� x86_arm64c C s t � \}}d }| tkr t| }nd| kr,dnd}|r�tj�|ddddd|dd � }zd
d l}|j|dd�d
}W n tttfk
r� d }Y nX |s�t � \}}|r�tj�|d|dd �}|s�t
�d� dS tj�|d�}tj�|�s�t
�d|� dS |�rtj�|��st
�d|� d }||fS )NZamd64r"