§
    ƒnóckJ  ã                  ól  — d dl mZ 	 d dlZd dlZd dlZddl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 d	d
lmZ neZdgdgdgdgdgdgdgdgddœ	Zdgdgdgdgdgdgdgdgdgddœ
Zg dgg dgdgddgddgdœZg dgdœZ G d„ deej        ¬¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )ÚannotationsNé   )Úarglist)Úmesonlib)Úmlog)ÚEnvironment)Ú
Dependencyé   )ÚCLikeCompilerz	/arch:SSEz
/arch:SSE2z	/arch:AVXz
/arch:AVX2)	ÚmmxÚsseÚsse2Ússe3Ússe41Ússe42ÚavxÚavx2Úneon)
r   r   r   r   Ússse3r   r   r   r   r   ú/Odz/O1ú/O2ú/Gw)ÚplainÚ0ÚgÚ1Ú2Ú3Úsz/Zi)FTc                  ó¾  — e Zd ZdZdgZdgZej        dgz   Zg Z	g dgdgdgdgd	œZ
g d
¢Zg dgdgdgdgdœZdZdXd„ZdYd„ZdZd„Zd[d„Zd[d„Zd\d„ZdYd„ZdYd„ZdYd„ZdYd„Zd]d!„Zd^d"„Zd_d$„Zd`d'„Zdad)„Zdbd+„ZdYd,„Zdcd.„Zddd2„Z dYd3„Z!dYd4„Z"ded7„Z#e$dbd8„¦   «         Z%e$dbd9„¦   «         Z&dYd:„Z'dfd=„Z(dgd@„Z)dhdD„Z*didjdG„Z+dkdJ„Z,dldN„Z-dmdO„Z.dYdP„Z/dndR„Z0dodT„Z1dZdU„Z2dpdV„Z3dWS )qÚVisualStudioLikeCompilera&  A common interface for all compilers implementing an MSVC-style
    interface.

    A number of compilers attempt to mimic MSVC, with varying levels of
    success, such as Clang-CL and ICL (the Intel C/C++ Compiler for Windows).
    This class implements as much common logic as possible.
    z/W3r   Úexecinfoz/MDz/MDdz/MTz/MTd)ÚnoneÚmdÚmddÚmtÚmtd)z/nologoz/showIncludesú/utf-8z/W2z/W4z/Wall)r   r   r   r   Ú
everythingFÚtargetÚstrc                ó~  — d„ dD ¦   «         | _         || _        d|v pd|v | _        d|v rd| _        n+d|v rd| _        nd|v rd| _        nd	|v rd	| _        n|| _        t	          j        | j        d
¦  «        r,| j                              t	          j        d¦  «        ¦  «         | j	        €J ‚| j        | j	        _        d S )Nc                ó6   — h | ]}t          j        |¦  «        ’ŒS © )r   Ú	OptionKey)Ú.0Úos     úJ/usr/lib/python3/dist-packages/mesonbuild/compilers/mixins/visualstudio.pyú	<setcomp>z4VisualStudioLikeCompiler.__init__.<locals>.<setcomp>z   s#   € Ð]Ð]Ð]°q�XÔ/°Ñ2Ô2Ð]Ð]Ð]ó    )Úb_pchÚb_ndebugÚb_vscrtÚx64Úx86_64Ú86Úx86Úaarch64Úarm64Úarmz>=19.28.29910Ú
b_sanitize)
Úbase_optionsr*   Úis_64Úmachiner   Úversion_compareÚversionÚaddr/   Úlinker©Úselfr*   s     r2   Ú__init__z!VisualStudioLikeCompiler.__init__y   sâ   € Ø]Ð]Ð<\Ð]Ñ]Ô]ˆÔØˆŒØ˜v�oÐ>¨8°vÐ+=ˆŒ
à�vÐÐØ ˆDŒLˆLØ�Vˆ^ˆ^Ø ˆDŒLˆLØ˜&Ð Ð Ø"ˆDŒLˆLØ�fˆ_ˆ_Ø ˆDŒLˆLà!ˆDŒLÝÔ# D¤L°/ÑBÔBð 	DØÔ×!Ò!¥(Ô"4°\Ñ"BÔ"BÑCÔCÐCØŒ{Ð&Ð&Ð&Ø"œlˆŒÔÐÐr4   ÚreturnúT.List[str]c                ó4   — | j                              ¦   «         S ©N)Úalways_argsÚcopy©rH   s    r2   Úget_always_argsz(VisualStudioLikeCompiler.get_always_argsŽ   s   € àÔ×$Ò$Ñ&Ô&Ð&r4   c                ó   — dS )NÚpchr.   rP   s    r2   Úget_pch_suffixz'VisualStudioLikeCompiler.get_pch_suffix’   s   € Øˆur4   Úheaderc                óò   — t           j                             |¦  «                             d¦  «        d d…         }|                     |                      ¦   «         ¦  «         d                     |¦  «        }|S )Nú.éÿÿÿÿ)ÚosÚpathÚbasenameÚsplitÚappendrT   Újoin)rH   rU   ÚchoppedÚpchnames       r2   Úget_pch_namez%VisualStudioLikeCompiler.get_pch_name•   sb   € Ý”'×"Ò" 6Ñ*Ô*×0Ò0°Ñ5Ô5°c°r°cÔ:ˆØ�Š�t×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ø—(’(˜7Ñ#Ô#ˆØˆr4   c                ó   — t           ‚rM   )ÚNotImplementedError©rH   rU   s     r2   Úget_pch_base_namez*VisualStudioLikeCompiler.get_pch_base_name›   s   € å!Ð!r4   Úpch_dirc                ó®   — |                       |¦  «        }|                      |¦  «        }d|z   d|z   dt          j                             ||¦  «        z   gS )Nz/FIz/Yuú/Fp)re   ra   rY   rZ   r^   )rH   rf   rU   Úbaser`   s        r2   Úget_pch_use_argsz)VisualStudioLikeCompiler.get_pch_use_argsŸ   sR   € Ø×%Ò% fÑ-Ô-ˆØ×#Ò# FÑ+Ô+ˆØ˜‘˜e d™l¨EµB´G·L²LÀÈ'Ñ4RÔ4RÑ,RÐSÐSr4   c                ó   — dgS )Nú/EPr.   rP   s    r2   Úget_preprocess_only_argsz1VisualStudioLikeCompiler.get_preprocess_only_args¤   ó	   € Øˆwˆr4   c                ó
   — ddgS )Nrl   z/Pr.   rP   s    r2   Úget_preprocess_to_file_argsz4VisualStudioLikeCompiler.get_preprocess_to_file_args§   s   € Ø�tˆ}Ðr4   c                ó   — dgS )Nz/cr.   rP   s    r2   Úget_compile_only_argsz.VisualStudioLikeCompiler.get_compile_only_argsª   s	   € Øˆvˆr4   c                ó
   — ddgS )Nr   z/Oi-r.   rP   s    r2   Úget_no_optimization_argsz1VisualStudioLikeCompiler.get_no_optimization_args­   s   € Ø�vˆÐr4   Úvaluec                óL   — |dk    rg S |dk    rt          j        d¦  «        ‚dgS )Nr#   Úaddressz1VS only supports address sanitizer at the moment.z/fsanitize=address)r   ÚMesonException)rH   ru   s     r2   Úsanitizer_compile_argsz/VisualStudioLikeCompiler.sanitizer_compile_args°   s6   € Ø�FŠ?ˆ?ØˆIØ�IÒÐÝÔ)Ð*]Ñ^Ô^Ð^Ø$Ð%Ð%r4   c                óf   — | j         dk    rd|z   gS |                     d¦  «        rd|z   gS d|z   gS )NÚPREPROCESSORz/Fiz.exez/Feú/Fo)ÚmodeÚendswithrG   s     r2   Úget_output_argsz(VisualStudioLikeCompiler.get_output_args·   sJ   € ØŒ9˜Ò&Ð&Ø˜F‘NÐ#Ð#Ø�?Š?˜6Ñ"Ô"ð 	$Ø˜F‘NÐ#Ð#Ø˜‘ÐÐr4   Ú	buildtypec                ó   — g S rM   r.   )rH   r€   s     r2   Úget_buildtype_argsz+VisualStudioLikeCompiler.get_buildtype_args¾   ó   € Øˆ	r4   Úis_debugÚboolc                ó   — t           |         S rM   )Úmsvc_debug_args)rH   r„   s     r2   Úget_debug_argsz'VisualStudioLikeCompiler.get_debug_argsÁ   s   € Ý˜xÔ(Ð(r4   Úoptimization_levelc                ól   — t           |         }t          j        | j        d¦  «        rd„ |D ¦   «         }|S )Nz<18.0c                ó   — g | ]
}|d k    ¯|‘ŒS )r   r.   )r0   Úargs     r2   ú
<listcomp>zBVisualStudioLikeCompiler.get_optimization_args.<locals>.<listcomp>Ç   s   € Ð8Ð8Ð8˜C¨3°%ª<¨<�C¨<¨<¨<r4   )Úmsvc_optimization_argsr   rC   rD   )rH   r‰   Úargss      r2   Úget_optimization_argsz.VisualStudioLikeCompiler.get_optimization_argsÄ   s<   € Ý%Ð&8Ô9ˆÝÔ# D¤L°'Ñ:Ô:ð 	9Ø8Ð8 4Ð8Ñ8Ô8ˆDØˆr4   r�   c                ó   — dg|z   S )Nz/linkr.   )rH   r�   s     r2   Úlinker_to_compiler_argsz0VisualStudioLikeCompiler.linker_to_compiler_argsÊ   s   € Øˆy˜4ÑÐr4   c                ó   — g S rM   r.   rP   s    r2   Úget_pic_argsz%VisualStudioLikeCompiler.get_pic_argsÍ   rƒ   r4   Údefsfilec                óV   — t          |t          ¦  «        st          d¦  «        ‚d|z   gS )Nz%Module definitions file should be strz/DEF:)Ú
isinstancer+   ÚRuntimeError)rH   r•   s     r2   Úgen_vs_module_defs_argsz0VisualStudioLikeCompiler.gen_vs_module_defs_argsÐ   s4   € Ý˜(¥CÑ(Ô(ð 	HÝÐFÑGÔGÐGð ˜(Ñ"Ð#Ð#r4   Úsourcer`   úT.Tuple[str, T.List[str]]c                ór   — t           j                             |¦  «        d         dz   }|d|z   d|z   d|z   gfS )Nr   z.objz/Ycrh   r|   )rY   rZ   Úsplitext)rH   rU   rš   r`   Úobjnames        r2   Úgen_pch_argsz%VisualStudioLikeCompiler.gen_pch_args×   s?   € Ý”'×"Ò" 7Ñ+Ô+¨AÔ.°Ñ7ˆØ˜ ™¨°©¸%À'¹/ÐJÐJÐJr4   c                ó   — dgS )Nz/openmpr.   rP   s    r2   Úopenmp_flagsz%VisualStudioLikeCompiler.openmp_flagsÛ   s
   € Øˆ{Ðr4   c                ó   — g S rM   r.   rP   s    r2   Úopenmp_link_flagsz*VisualStudioLikeCompiler.openmp_link_flagsÞ   rƒ   r4   Úenvú'Environment'c                ó   — g S rM   r.   )rH   r¤   s     r2   Úthread_flagsz%VisualStudioLikeCompiler.thread_flagsâ   rƒ   r4   c                ó  — g }|D �]}|dv rŒ|                      d¦  «        rd|dd …         z   }�n>|                      d¦  «        rd|dd …         z   }�n|                      d¦  «        r|dd …         }|| j        v rŒy|dz   }në|                      d	¦  «        r1|                      d
¦  «        rd|dd …         z   }n³d|dd …         z   }n¥|                      d¦  «        r1|                      d¦  «        rd|dd …         z   }nmd|dd …         z   }n_|dk    r�Œ|                      d¦  «        s|                      d¦  «        s|dk    r'	 |                     d¦  «         n# t          $ r Y nw xY w|                     |¦  «         �Œ�|S )N>   ú-mms-bitfieldsú-pthreadú	-LIBPATH:ú	/LIBPATH:é	   ú-Lé   ú-lú.libú-isystemz	-isystem=ú/Ié   z
-idirafterz-idirafter=é   é
   rª   z/source-charset:z/execution-charset:z/validate-charset-r(   )Ú
startswithÚignore_libsÚremoveÚ
ValueErrorr]   )Úclsr�   ÚresultÚiÚnames        r2   Úunix_args_to_nativez,VisualStudioLikeCompiler.unix_args_to_nativeå   sé  € à ˆØð *	ñ *	ˆAð Ð2Ð2Ð2ØØ�|Š|˜KÑ(Ô(ð $Ø ! A B B¤%Ñ'�‘Ø—’˜dÑ#Ô#ð "Ø ! A B B¤%Ñ'�‘à—’˜dÑ#Ô#ð Ø˜˜˜”u�Ø˜3œ?Ð*Ð*ð à˜v™�A�AØ—’˜jÑ)Ô)ð à—<’< Ñ,Ô,ð %Ø˜q   œu™�A�Aà˜q   œu™�A�AØ—’˜lÑ+Ô+ð à—<’< Ñ.Ô.ð &Ø˜q   œv™�A�Aà˜q   œv™�A�Aà�j’�Ùð —,’,Ð1Ñ2Ô2ð Ø—|’|Ð$9Ñ:Ô:ðàÐ0Ò0Ð0ðØ—M’M (Ñ+Ô+Ð+Ð+øÝ!ð ð ð Ø�Dðøøøà�MŠM˜!ÑÔÐÑØˆs   Å	EÅ
E,Å+E,c                óD  — g }|D ]š}|                      d¦  «        r!|                     d|dd …         z   ¦  «         Œ8|                     d¦  «        r8t          j                             |¦  «        s|                     d|z   ¦  «         Œ…|                     |¦  «         Œ›|S )N)r¬   r«   r®   r­   )z.ar±   r°   )r·   r]   r~   rY   rZ   Úisabs)r»   r�   r¼   rŒ   s       r2   Únative_args_to_unixz,VisualStudioLikeCompiler.native_args_to_unix  s¨   € àˆØð 	#ð 	#ˆCØ�~Š~Ð8Ñ9Ô9ð #Ø—’˜d S¨¨¨¤W™nÑ-Ô-Ð-Ð-Ø—’˜nÑ-Ô-ð #µb´g·m²mÀCÑ6HÔ6Hð #Ø—’˜d S™jÑ)Ô)Ð)Ð)à—’˜cÑ"Ô"Ð"Ð"Øˆr4   c                ó   — dgS )Nz/WXr.   rP   s    r2   Úget_werror_argsz(VisualStudioLikeCompiler.get_werror_args!  rn   r4   rZ   Ú	is_systemc                ó   — |dk    rd}d|z   gS )NÚ rW   ú-Ir.   ©rH   rZ   rÅ   s      r2   Úget_include_argsz)VisualStudioLikeCompiler.get_include_args$  s   € Ø�2Š:ˆ:ØˆDà�t‘ˆ}Ðr4   Úparameter_listÚ	build_dirc           
     óÒ  — t          |¦  «        D ]Ö\  }}|d d…         dk    s|d d…         dk    rT|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   Œu|d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   Œ×|S )Nr¯   rÈ   r³   r­   r¬   )Ú	enumeraterY   rZ   Únormpathr^   )rH   rË   rÌ   Úidxr½   s        r2   Ú&compute_parameters_with_absolute_pathsz?VisualStudioLikeCompiler.compute_parameters_with_absolute_paths*  så   € Ý Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}  " 1 "¤¨¢ Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#Ð#Ø�2�A�2”˜+Ò%Ð%Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øàÐr4   Úcoder}   úT.Tuple[bool, bool]c                óð   — |dk    rdnd}|                       ||||¬¦  «        5 }|j        dk    rd|j        fcd d d ¦  «         S ||j        v p||j        v  |j        fcd d d ¦  «         S # 1 swxY w Y   d S )NÚlinkÚ4044Ú9002)Ú
extra_argsr}   r   F)Ú_build_wrapperÚ
returncodeÚcachedÚstderrÚstdout)rH   r�   r¤   rÒ   r}   Úwarning_textÚps          r2   Úhas_argumentsz&VisualStudioLikeCompiler.has_arguments6  s  € Ø!%¨¢ �v�v°VˆØ× Ò   s°tÀ$Ð ÑGÔGð 	XÈ1ØŒ|˜qÒ Ð Ø˜aœh�ð	Xð 	Xð 	Xð 	Xñ 	Xô 	Xð 	Xð 	Xð %¨¬Ð0ÐL°LÀAÄHÐ4LÐMÈqÌxÐWð	Xð 	Xð 	Xð 	Xñ 	Xô 	Xð 	Xð 	Xð 	Xð 	Xð 	Xð 	Xøøøð 	Xð 	Xð 	Xð 	Xð 	Xð 	Xs   ¤A+ÁA+Á+A/Á2A/Úrel_objrS   c                ó~   — |                      d¦  «        d d…         }|dgz  }dd                     |¦  «        z   g}|S )NrW   rX   Úpdbz/Fd)r\   r^   )rH   rá   rS   Úpdbarrr�   s        r2   Úget_compile_debugfile_argsz3VisualStudioLikeCompiler.get_compile_debugfile_args=  sF   € Ø—’˜sÑ#Ô# C R CÔ(ˆØ�5�'ÑˆØ˜Ÿš Ñ(Ô(Ñ(Ð)ˆØˆr4   Úinstruction_setúT.Optional[T.List[str]]c                ó|   — | j         rt                               |d ¦  «        S t                               |d ¦  «        S rM   )rA   Úvs64_instruction_set_argsÚgetÚvs32_instruction_set_args)rH   ræ   s     r2   Úget_instruction_set_argsz1VisualStudioLikeCompiler.get_instruction_set_argsC  s9   € ØŒ:ð 	HÝ,×0Ò0°À$ÑGÔGÐGÝ(×,Ò,¨_¸dÑCÔCÐCr4   rD   ÚintúT.Optional[str]c                óî   — |dk     rdS |dk     rdS |dk     rdS |dk     rdS |d	k     rd
S |dk     rdS |dk     rdS |dk     rdS |dk     rdS |dk     rdS |dk     rdS t          j        d| j        ›�¦  «         d S )Ni  z7.0ix  z7.1iÜ  z8.0i@  z9.0i¤  z10.0i  z11.0il  z12.0iv  z14.0i€  ú14.1iŠ  z14.2i”  z14.3z#Could not find toolset for version )r   ÚwarningrD   ©rH   rD   s     r2   Ú_calculate_toolset_versionz3VisualStudioLikeCompiler._calculate_toolset_versionH  s¼   € Ø�TŠ>ˆ>Ø�5Ø�tŠ^ˆ^Ø�5Ø�tŠ^ˆ^Ø�5Ø�tŠ^ˆ^Ø�5Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6Ø�tŠ^ˆ^Ø�6ÝŒÐK¸4¼<ÐKÐKÑLÔLÐLØˆtr4   c                óÖ   — 	 t          d                     | j                             d¦  «        dd…         ¦  «        ¦  «        }n# t          $ r Y d S w xY w|                      |¦  «        S )NrÇ   rW   r   r¯   )rí   r^   rD   r\   rº   ró   rò   s     r2   Úget_toolset_versionz,VisualStudioLikeCompiler.get_toolset_versionb  sq   € ð	Ý˜"Ÿ'š' $¤,×"4Ò"4°SÑ"9Ô"9¸!¸A¸#Ô">Ñ?Ô?Ñ@Ô@ˆGˆGøÝð 	ð 	ð 	Ø�4�4ð	øøøà×.Ò.¨wÑ7Ô7Ð7s   ‚AA Á
AÁAc                ó€   — dt           j        vrg S t           j        d                              t           j        ¦  «        S )NÚINCLUDE)rY   Úenvironr\   ÚpathseprP   s    r2   Úget_default_include_dirsz1VisualStudioLikeCompiler.get_default_include_dirsj  s1   € Ø�BœJÐ&Ð&ØˆIÝŒz˜)Ô$×*Ò*­2¬:Ñ6Ô6Ð6r4   Úcrt_valc                ó6  — || j         v r| j         |         S |dv sJ ‚d}d}|dk    rd}d}|dk    rg S |dk    r| j         |         S |d	k    r| j         |         S |d
k    r| j         |         S |dk    r| j         |         S |dk    sJ ‚t          j        d¦  «        ‚)N>   Úfrom_buildtypeÚstatic_from_buildtyper%   r$   rþ   r'   r&   r   ÚdebugÚdebugoptimizedÚreleaseÚminsizeÚcustomzBRequested C runtime based on buildtype, but buildtype is "custom".)Úcrt_argsr   ÚEnvironmentException)rH   rû   r€   ÚdbgÚrels        r2   Úget_crt_compile_argsz-VisualStudioLikeCompiler.get_crt_compile_argso  sâ   € Ø�d”mÐ#Ð#Ø”= Ô)Ð)ØÐEÐEÐEÐEÐEØˆØˆØÐ-Ò-Ð-ØˆCØˆCà˜ÒÐØˆIØ˜'Ò!Ð!Ø”= Ô%Ð%ØÐ*Ò*Ð*Ø”= Ô%Ð%Ø˜)Ò#Ð#Ø”= Ô%Ð%Ø˜)Ò#Ð#Ø”= Ô%Ð%à Ò(Ð(Ð(Ð(ÝÔ/Ð0tÑuÔuÐur4   r¾   c                ó   — |dv dfS )N>   Ú	dllexportÚ	dllimportFr.   )rH   r¾   r¤   s      r2   Úhas_func_attributez+VisualStudioLikeCompiler.has_func_attribute‡  s   € ð Ð1Ð1°5Ð8Ð8r4   c                ó   — dS )NÚmsvcr.   rP   s    r2   Úget_argument_syntaxz,VisualStudioLikeCompiler.get_argument_syntaxŒ  s   € Øˆvr4   c                ó^   — |                       |¦  «        }|�|S |                      |¦  «        S )zö
        Check if the compiler prefixes an underscore to global C symbols.

        This overrides the Clike method, as for MSVC checking the
        underscore prefix based on the compiler define never works,
        so do not even try.
        )Ú$_symbols_have_underscore_prefix_listÚ)_symbols_have_underscore_prefix_searchbin)rH   r¤   r¼   s      r2   Úsymbols_have_underscore_prefixz7VisualStudioLikeCompiler.symbols_have_underscore_prefix�  s8   € ð ×:Ò:¸3Ñ?Ô?ˆØÐØˆMð ×=Ò=¸cÑBÔBÐBr4   N©r*   r+   ©rJ   rK   )rJ   r+   ©rU   r+   rJ   r+   )rf   r+   rU   r+   rJ   rK   )ru   r+   rJ   rK   )r*   r+   rJ   rK   )r€   r+   rJ   rK   )r„   r…   rJ   rK   )r‰   r+   rJ   rK   )r�   rK   rJ   rK   )r•   r+   rJ   rK   )rU   r+   rš   r+   r`   r+   rJ   r›   )r¤   r¥   rJ   rK   ©rZ   r+   rÅ   r…   rJ   rK   )rË   rK   rÌ   r+   rJ   rK   ©
r�   rK   r¤   r¥   rÒ   r+   r}   r+   rJ   rÓ   ©F©rá   r+   rS   r…   rJ   rK   ©ræ   r+   rJ   rç   )rD   rí   rJ   rî   ©rJ   rî   )rû   r+   r€   r+   rJ   rK   )r¾   r+   r¤   r¥   rJ   rÓ   )r¤   r¥   rJ   r…   )4Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústd_warn_argsÚstd_opt_argsr   ÚUNIXY_COMPILER_INTERNAL_LIBSr¸   Úinternal_libsr  rN   Ú	warn_argsÚINVOKES_LINKERrI   rQ   rT   ra   re   rj   rm   rp   rr   rt   ry   r   r‚   rˆ   r�   r’   r”   r™   rŸ   r¡   r£   r§   Úclassmethodr¿   rÂ   rÄ   rÊ   rÑ   rà   rå   rì   ró   rõ   rú   r  r  r  r  r.   r4   r2   r!   r!   Q   sº  € € € € € ðð ð �G€MØ�7€LØÔ6¸*¸ÑE€KØ€Mð ØˆgØˆxØˆgØˆxðð €Hð 9Ð8Ð8€KàØˆWØˆWØˆWØ�iðð €Ið €Nð+ð +ð +ð +ð*'ð 'ð 'ð 'ðð ð ð ðð ð ð ð"ð "ð "ð "ðTð Tð Tð Tð
ð ð ð ðð ð ð ðð ð ð ðð ð ð ð&ð &ð &ð &ð ð  ð  ð  ðð ð ð ð)ð )ð )ð )ðð ð ð ð ð  ð  ð  ðð ð ð ð$ð $ð $ð $ðKð Kð Kð Kðð ð ð ðð ð ð ðð ð ð ð ð-ð -ð -ñ „[ð-ð^ ð	ð 	ð 	ñ „[ð	ðð ð ð ðð ð ð ðð ð ð ðXð Xð Xð Xðð ð ð ð ðDð Dð Dð Dð
ð ð ð ð48ð 8ð 8ð 8ð7ð 7ð 7ð 7ð
vð vð vð vð09ð 9ð 9ð 9ð
ð ð ð ðCð Cð Cð Cð Cð Cr4   r!   )Ú	metaclassc                  óR   ‡ — e Zd ZdZdZdˆ fd„Zddˆ fd„Zdd„Zdˆ fd„Zdd„Z	ˆ xZ
S )ÚMSVCCompilerz$Specific to the Microsoft Compilers.r  r*   r+   c                óÄ   •— t          ¦   «                              |¦  «         t          j        | j        d¦  «        r!d| j        v rd„ | j        D ¦   «         | _        d S d S d S )Nz<19.00r(   c                ó   — g | ]
}|d k    ¯|‘ŒS )r(   r.   )r0   Úrs     r2   r�   z)MSVCCompiler.__init__.<locals>.<listcomp>®  s   € ÐMÐMÐM a¸qÀHº}¸} ¸}¸}¸}r4   )ÚsuperrI   r   rC   rD   rN   ©rH   r*   Ú	__class__s     €r2   rI   zMSVCCompiler.__init__§  ss   ø€ Ý‰Œ×Ò˜Ñ Ô Ð õ
 Ô# D¤L°(Ñ;Ô;ð 	NÀÈDÔL\Ð@\Ð@\ØMÐM¨4Ô+;ÐMÑMÔMˆDÔÐÐð	Nð 	NÐ@\Ð@\r4   Frá   rS   r…   rJ   rK   c                ó�   •— t          ¦   «                              ||¦  «        }|r t          j        | j        d¦  «        rdg|z   }|S )Nz>=18.0z/FS)r.  rå   r   rC   rD   )rH   rá   rS   r�   r0  s       €r2   rå   z'MSVCCompiler.get_compile_debugfile_args°  sL   ø€ Ý‰wŒw×1Ò1°'¸3Ñ?Ô?ˆð ð 	"•8Ô+¨D¬L¸(ÑCÔCð 	"Ø�7˜T‘>ˆDØˆr4   c                ó   — | j         S rM   )rN   rP   s    r2   rQ   zMSVCCompiler.get_always_args¾  s   € ØÔÐr4   ræ   rç   c                óž   •— | j                              d¦  «        d         dk    r|dk    rd S t          ¦   «                              |¦  «        S )NrW   r   Ú16r   )rD   r\   r.  rì   )rH   ræ   r0  s     €r2   rì   z%MSVCCompiler.get_instruction_set_argsÁ  sL   ø€ ØŒ<×Ò˜cÑ"Ô" 1Ô%¨Ò-Ð-°/ÀUÒ2JÐ2Jð �4Ý‰wŒw×/Ò/°Ñ@Ô@Ð@r4   rU   c                ó@   — t           j                             |¦  «        S rM   )rY   rZ   r[   rd   s     r2   re   zMSVCCompiler.get_pch_base_nameÉ  s   € ÝŒw×Ò Ñ'Ô'Ð'r4   r  r  r  r  r  r  )r  r  r  r   ÚidrI   rå   rQ   rì   re   Ú__classcell__©r0  s   @r2   r*  r*  ¡  s½   ø€ € € € € à.Ð.à	€BðNð Nð Nð Nð Nð Nð
ð 
ð 
ð 
ð 
ð 
ð 
ð ð  ð  ð  ðAð Að Að Að Að Að(ð (ð (ð (ð (ð (ð (ð (r4   r*  c                  óT   ‡ — e Zd ZdZdZdˆ fd„Zdˆ fd„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS ) ÚClangClCompilerzSpecific to Clang-CL.zclang-clr*   r+   c                ó~   •— t          ¦   «                              |¦  «         | j                             d¦  «         d S )Nr   )r.  rI   Úcan_compile_suffixesrE   r/  s     €r2   rI   zClangClCompiler.__init__Ó  s:   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ð 	Ô!×%Ò% cÑ*Ô*Ð*Ð*Ð*r4   r�   rK   r¤   r¥   rÒ   r}   rJ   rÓ   c                óf   •— |dk    r|ddgz   }t          ¦   «                              ||||¦  «        S )NrÕ   z-Werror=unknown-argumentz-Werror=unknown-warning-option)r.  rà   )rH   r�   r¤   rÒ   r}   r0  s        €r2   rà   zClangClCompiler.has_argumentsÙ  s;   ø€ Ø�6Š>ˆ>ØÐ5Ð7WÐXÑXˆDÝ‰wŒw×$Ò$ T¨3°°dÑ;Ô;Ð;r4   rî   c                ó   — dS )Nrð   r.   rP   s    r2   rõ   z#ClangClCompiler.get_toolset_versionÞ  s   € àˆvr4   rU   c                ó   — |S rM   r.   rd   s     r2   re   z!ClangClCompiler.get_pch_base_nameâ  s   € Øˆr4   rZ   rÅ   r…   c                ó.   — |dk    rd}|rd|z   gnd|z   gS )NrÇ   rW   z/clang:-isystemrÈ   r.   rÉ   s      r2   rÊ   z ClangClCompiler.get_include_argså  s/   € Ø�2Š:ˆ:ØˆDØ-6ÐIÐ! DÑ(Ð)Ð)¸TÀD¹[¸MÐIr4   Údepú'Dependency'c                óÚ   — |                      ¦   «         dk    r@g }|                     ¦   «         D ]'}|                     d¦  «        r
|d|z   gz  }Œ!||gz  }Œ(|S |                     ¦   «         S )NÚsystemr²   z/clang:)Úget_include_typeÚget_compile_argsr·   )rH   rA  Ú	convertedr½   s       r2   Úget_dependency_compile_argsz+ClangClCompiler.get_dependency_compile_argsê  s…   € Ø×ÒÑ!Ô! XÒ-Ð-ØˆIØ×)Ò)Ñ+Ô+ð %ð %�Ø—<’< 
Ñ+Ô+ð %Ø )¨a¡- Ñ0�I�Ià ! Ñ$�I�IØÐà×'Ò'Ñ)Ô)Ð)r4   r  r  r  r  r  )rA  rB  rJ   rK   )r  r  r  r   r6  rI   rà   rõ   re   rÊ   rH  r7  r8  s   @r2   r:  r:  Í  sº   ø€ € € € € àÐà	€Bð+ð +ð +ð +ð +ð +ð<ð <ð <ð <ð <ð <ð
ð ð ð ðð ð ð ðJð Jð Jð Jð

*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*r4   r:  )Ú
__future__r   ÚabcrY   ÚtypingÚTrÇ   r   r   r   ÚTYPE_CHECKINGÚenvironmentr   Údependenciesr	   Úcliker   ÚCompilerÚobjectrë   ré   rŽ   r‡   ÚABCMetar!   r*  r:  r.   r4   r2   ú<module>rT     s&  ðð #Ð "Ð "Ð "Ð "Ð "ðð €
€
€
Ø 	€	€	€	Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à„?ð 	Ø*Ð*Ð*Ð*Ð*Ð*Ø*Ð*Ð*Ð*Ð*Ð*Ø0Ð0Ð0Ð0Ð0Ð0Ð0ð €Hð ˆ=Øˆ=ØˆNØˆMØˆ]Øˆ]Øˆ=ØˆNØð
ð 
Ð ð ˆ=Øˆ=ØˆMØˆMØˆ]Øˆ]Øˆ]Øˆ=ØˆNØðð Ð ð Ø
ˆØ	Ø
ˆØ
ˆØ
�ˆØ
�ˆðð Ð ð Øˆ'ðð €ðMCð MCð MCð MCð MC˜x°3´;ð MCñ MCô MCð MCð`
)(ð )(ð )(ð )(ð )(Ð+ñ )(ô )(ð )(ðX'*ð '*ð '*ð '*ð '*Ð.ñ '*ô '*ð '*ð '*ð '*r4   