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                      s4   e Zd ZdZdd fd	d
Zdd Zdd Z  ZS )Vs2022BackendZvs2022FbuildT.Optional[Build]interpreterT.Optional[Interpreter]gen_liteboolc                   s   t  j|||d d| _d| _| jd urR| jjjj}|r+tdd |	 D r+d| _
n|rItdd |	 D rIt|	 d }|jd	rId
| _
| j
sOd| _
d| _tjdd }|rc|d| _d S d S )N)r   z12.00z
Version 17c                 s      | ]}|j d kV  qdS )zclang-clNid.0c r   E/usr/lib/python3.10/site-packages/mesonbuild/backend/vs2022backend.py	<genexpr>%       z)Vs2022Backend.__init__.<locals>.<genexpr>ZClangCLc                 s  r   )zintel-clNr   r   r   r   r   r   '   r   r   Z19zIntel C++ Compiler 19.0Zv143Z2022Z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   r   compsr   Zsdk_version	__class__r   r   r      s$   
zVs2022Backend.__init__c                 C  s   dt |d_d S )NZ	DebugFullZGenerateDebugInformation)ET
SubElementtext)r(   linkr   r   r   generate_debug_information4   s   z(Vs2022Backend.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=Vs2022Backend.generate_lang_standard_info.<locals>.<listcomp>r   r3   ZstdcppZLanguageStandardr   c                 S  r2   )/std:cr4   r5   r   r   r   r7   >   r8   r9   ZstdcZLanguageStandard_C)replacer,   r-   r.   )r(   Z	file_argsZclconfZoptargsr   r   r   generate_lang_standard_info8   s   z)Vs2022Backend.generate_lang_standard_info)F)r	   r
   r   r   r   r   )__name__
__module____qualname__namer   r0   r;   __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   