o
    e                     @  sx   d dl mZ d dlZd dlZd dlm  mZ ddl	m
Z
 ddlmZ ejr2ddlmZ ddlmZ G d	d
 d
e
ZdS )    )annotationsN   )Vs2010Backend   )MesonException)Build)Interpreterc                      s2   e Zd ZdZd fddZdd	 Zd
d Z  ZS )Vs2017BackendZvs2017buildT.Optional[Build]interpreterT.Optional[Interpreter]c                   s   t  || d| _d| _d| _| jd urQ| jjjj}|rQ|r.t	dd |
 D r.d| _n#|rQt	dd |
 D rQt|
 d }|jd	rMd
| _ntd| jd u rYd| _tjdd }|rj|d| _d S d S )NZ2017z12.00Z15c                 s      | ]}|j d kV  qdS )zclang-clNid.0c r   E/usr/lib/python3.10/site-packages/mesonbuild/backend/vs2017backend.py	<genexpr>)       z)Vs2017Backend.__init__.<locals>.<genexpr>Zllvmc                 s  r   )zintel-clNr   r   r   r   r   r   +   r   r   Z19zIntel C++ Compiler 19.0zAThere is currently no support for ICL before 19, patches welcome.Zv141ZWindowsSDKVersion\)super__init__Z
vs_versionZsln_file_versionZsln_version_commentenvironmentZcoredata	compilershostallvaluesZplatform_toolsetlistversion
startswithr   osenvirongetrstripZwindows_target_platform_version)selfr
   r   compsr   Zsdk_version	__class__r   r   r       s(   

zVs2017Backend.__init__c                 C  s   dt |d_d S )NZ	DebugFullZGenerateDebugInformation)ET
SubElementtext)r'   linkr   r   r   generate_debug_information9   s   z(Vs2017Backend.generate_debug_informationc                 C  s|   d|v rdd |d D }|r|d  ddt|d_d|v r:d	d |d D }|r<|d  d
dt|d_d S d S d S )Ncppc                 S     g | ]	}| d r|qS )/std:c++r"   r   xr   r   r   
<listcomp>?       z=Vs2017Backend.generate_lang_standard_info.<locals>.<listcomp>r   r2   ZstdcppZLanguageStandardr   c                 S  r1   )/std:cr3   r4   r   r   r   r6   C   r7   r8   ZstdcZLanguageStandard_C)replacer+   r,   r-   )r'   Z	file_argsZclconfZoptargsr   r   r   generate_lang_standard_info=   s   z)Vs2017Backend.generate_lang_standard_info)r
   r   r   r   )__name__
__module____qualname__namer   r/   r:   __classcell__r   r   r)   r   r	      s
    r	   )
__future__r   r#   typingTZxml.etree.ElementTreeetreeZElementTreer+   Zvs2010backendr   Zmesonlibr   TYPE_CHECKINGr
   r   r   r   r	   r   r   r   r   <module>   s   