o
    e
                     @  sl   d dl mZ d dlZd dlZd dlm  mZ ddl	m
Z
 ejr,ddlmZ ddlmZ G dd	 d	e
ZdS )
    )annotationsN   )Vs2010Backend   )Build)Interpreterc                      s2   e Zd ZdZd fddZdd	 Zd
d Z  ZS )Vs2019BackendZvs2019buildT.Optional[Build]interpreterT.Optional[Interpreter]c                   s   t  || d| _d| _| jd urP| jjjj}|r)tdd |	 D r)d| _
n|rGtdd |	 D rGt|	 d }|jdrGd	| _
| j
sMd
| _
d| _tjdd }|ra|d| _d S d S )Nz12.00z
Version 16c                 s      | ]}|j d kV  qdS )zclang-clNid.0c r   E/usr/lib/python3.10/site-packages/mesonbuild/backend/vs2019backend.py	<genexpr>%       z)Vs2019Backend.__init__.<locals>.<genexpr>ZClangCLc                 s  r   )zintel-clNr   r   r   r   r   r   '   r   r   Z19zIntel C++ Compiler 19.0Zv142Z2019ZWindowsSDKVersion\)super__init__Zsln_file_versionZsln_version_commentenvironmentZcoredata	compilershostallvaluesZplatform_toolsetlistversion
startswithZ
vs_versionosenvirongetrstripZwindows_target_platform_version)selfr	   r   compsr   Zsdk_version	__class__r   r   r      s$   
zVs2019Backend.__init__c                 C  s   dt |d_d S )NZ	DebugFullZGenerateDebugInformation)ET
SubElementtext)r&   linkr   r   r   generate_debug_information4   s   z(Vs2019Backend.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=Vs2019Backend.generate_lang_standard_info.<locals>.<listcomp>r   r1   ZstdcppZLanguageStandardr   c                 S  r0   )/std:cr2   r3   r   r   r   r5   >   r6   r7   ZstdcZLanguageStandard_C)replacer*   r+   r,   )r&   Z	file_argsZclconfZoptargsr   r   r   generate_lang_standard_info8   s   z)Vs2019Backend.generate_lang_standard_info)r	   r
   r   r   )__name__
__module____qualname__namer   r.   r9   __classcell__r   r   r(   r   r      s
    r   )
__future__r   r"   typingTZxml.etree.ElementTreeetreeZElementTreer*   Zvs2010backendr   TYPE_CHECKINGr	   r   r   r   r   r   r   r   r   <module>   s   