
    e                        d dl mZ d dlZd dlZd dlmc mZ ddl	m
Z
 ddlmZ ej                  rddlmZ ddlmZ  G d	 d
e
      Zy)    )annotationsN   )Vs2010Backend   )MesonException)Build)Interpreterc                  0     e Zd ZdZd fdZd Zd Z xZS )Vs2017Backendvs2017c                   t         |   ||       d| _        d| _        d| _        | j
                  | j
                  j                  j                  j                  }|r|r(t        d |j                         D              rd| _        nl|rjt        d |j                         D              rJt        |j                               d   }|j                  j                  d      rd	| _        nt        d
      | j                  d| _        t         j"                  j%                  dd       }|r|j'                  d      | _        y y )N2017z12.0015c              3  :   K   | ]  }|j                   d k(    yw)zclang-clNid.0cs     B/usr/lib/python3/dist-packages/mesonbuild/backend/vs2017backend.py	<genexpr>z)Vs2017Backend.__init__.<locals>.<genexpr>)   s      L!3 L   llvmc              3  :   K   | ]  }|j                   d k(    yw)zintel-clNr   r   s     r   r   z)Vs2017Backend.__init__.<locals>.<genexpr>+   s     "N!144:#5"Nr   r   19zIntel C++ Compiler 19.0zAThere is currently no support for ICL before 19, patches welcome.v141WindowsSDKVersion\)super__init__
vs_versionsln_file_versionsln_version_commentenvironmentcoredata	compilershostallvaluesplatform_toolsetlistversion
startswithr   osenvirongetrstripwindows_target_platform_version)selfbuildinterpretercompsr   sdk_version	__class__s         r   r    zVs2017Backend.__init__    s
   ,  '#' '$$--77<<ES LU\\^ LL,2D)s"Nu||~"NNU\\^,Q/Ayy++D10I- --pqq  ($*D!jjnn%8$?3>3E3Ed3KD0     c                :    dt        j                  |d      _        y )N	DebugFullGenerateDebugInformation)ET
SubElementtext)r3   links     r   generate_debug_informationz(Vs2017Backend.generate_debug_information9   s    ?Jd67<r9   c                |   d|v rT|d   D cg c]  }|j                  d      s| }}|r.|d   j                  dd      t        j                  |d      _        d|v rV|d   D cg c]  }|j                  d      s| }}|r/|d   j                  dd      t        j                  |d	      _        y y y c c}w c c}w )
Ncppz/std:c++r   stdcppLanguageStandardr   z/std:cstdcLanguageStandard_C)r-   replacer=   r>   r?   )r3   	file_argsclconfxoptargss        r   generate_lang_standard_infoz)Vs2017Backend.generate_lang_standard_info=   s    I"+E"2OQall:6NqOGOAHASAST^`hAif&89>)"+C.KQALL4JqKGKCJ1:CUCUV^`fCgf&:;@   P Ls   B4B4$B9;B9)r4   zT.Optional[Build]r5   zT.Optional[Interpreter])__name__
__module____qualname__namer    rA   rM   __classcell__)r8   s   @r   r   r      s    DL2Khr9   r   )
__future__r   r.   typingTxml.etree.ElementTreeetreeElementTreer=   vs2010backendr   mesonlibr   TYPE_CHECKINGr4   r   r5   r	   r    r9   r   <module>r]      s7    # 	  " " ( %??))hM )hr9   