§
    ûµ”c®¦  ã                  ó6  — d dl mZ d dl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 ddlmZ ddl	mZmZmZmZ d	d
lmZ d	dlmZmZmZmZmZ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# ddl$m%Z% ddlm&Z& ddl	m'Z' eZ(ne)Z(dddddœdddddœdddddœdœZ*g g g dgd gd!gd"gd#œZ+g g g d$gd$gd$gd$gd#œZ, G d%„ d&e(¦  «        Z- G d'„ d(e¦  «        Z. G d)„ d*e¦  «        Z/ G d+„ d,ee/¦  «        Z0d5d0„Z1 G d1„ d2e-e/¦  «        Z2 G d3„ d4e-e/¦  «        Z3dS )6é    )ÚannotationsNé   )Úmesonlib)Úmlog)ÚCompilerArgs)ÚRSPFileSyntax)ÚEnvironmentExceptionÚversion_compareÚ	OptionKeyÚ
is_windowsé   )Ú	compilers)Úd_dmd_buildtype_argsÚd_gdc_buildtype_argsÚd_ldc_buildtype_argsÚclike_debug_argsÚCompilerÚCompileCheckMode)ÚGnuCompiler)Úgnu_common_warning_args)Ú
Dependency)ÚExternalProgram)ÚMachineInfo)ÚEnvironment)ÚDynamicLinker)ÚMachineChoicez
-funittestz-fdebugz	-fversionz-J)ÚunittestÚdebugÚversionÚ
import_dirz	-unittestz-d-debugz
-d-versionz-debugz-version)ÚgccÚllvmÚdmdz-O1z-O2z-O3z-Oz)ÚplainÚ0ÚgÚ1Ú2Ú3Úsz-Oc                  óP  ‡ — e Zd ZdZdGd„Zej        ri ZdHd„ZdZ	dId„Z
dId„ZdJd„ZdKd„ZdLd„ZdHd„ZdHd„ZdHd„ZdHd„ZdHd„ZdMd„ZdNd„ZdHd„ZdOd#„ZdPd%„ZdQd'„ZdRˆ fd0„ZedSd5„¦   «         ZedTd7„¦   «         ZedTd8„¦   «         ZedUdSd:„¦   «         ZdVd<„Z dWd>„Z!dXˆ fdE„Z"dHdF„Z#ˆ xZ$S )YÚDmdLikeCompilerMixinz–Mixin class for DMD and LDC.

    LDC has a number of DMD like arguments, and this class allows for code
    sharing between them as makes sense.
    Údmd_frontend_versionúT.Optional[str]c                óF   — |€	d| _         d S t          |d¦  «        | _         d S )NFz	>=2.095.0)Ú_dmd_has_depfiler
   )Úselfr-   s     ú8/usr/lib/python3/dist-packages/mesonbuild/compilers/d.pyÚ__init__zDmdLikeCompilerMixin.__init__a   s1   € ØÐ'Ø$)ˆDÔ!Ð!Ð!õ %4Ð4HÈ+Ñ$VÔ$VˆDÔ!Ð!Ð!ó    ÚreturnúT.List[str]c                ó   — d S ©N© ©r1   s    r2   Ú_get_target_arch_argsz*DmdLikeCompilerMixin._get_target_arch_argsk   s   € € € r4   ú-L=Ú
outputnameÚstrc                ó   — d|z   gS ©Nz-of=r9   ©r1   r=   s     r2   Úget_output_argsz$DmdLikeCompilerMixin.get_output_argso   ó   € Ø˜Ñ#Ð$Ð$r4   c                ó   — d|z   gS r@   r9   rA   s     r2   Úget_linker_output_argsz+DmdLikeCompilerMixin.get_linker_output_argsr   rC   r4   ÚpathÚ	is_systemÚboolc                ó   — |dk    rd}d|z   gS )NÚ ú.ú-I=r9   )r1   rF   rG   s      r2   Úget_include_argsz%DmdLikeCompilerMixin.get_include_argsu   s   € Ø�2Š:ˆ:ØˆDØ˜‘ˆ~Ðr4   Úparameter_listÚ	build_dirc           
     ó<  — t          |¦  «        D �]Š\  }}|d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   |d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   |d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   |d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   �ŒŒ|S )	Né   rL   é   z-L-Lé   z-L=-Lé   z-Wl,-L©Ú	enumerateÚosrF   ÚnormpathÚjoin©r1   rN   rO   ÚidxÚis        r2   Ú&compute_parameters_with_absolute_pathsz;DmdLikeCompilerMixin.compute_parameters_with_absolute_pathsz   s~  € å Ñ/Ô/ð 	_ñ 	_‰FˆC�Ø��!�Œu˜Š~ˆ~Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#Ø��!�Œu˜ŠˆØ&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#Ø��!�Œu˜ÒÐØ&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#Ø��!�Œu˜Ò Ð Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#ùàÐr4   Úlevelc                ó   — dgS )Nú-wir9   ©r1   r^   s     r2   Úget_warn_argsz"DmdLikeCompilerMixin.get_warn_argsˆ   s	   € Øˆwˆr4   c                ó   — dgS )Nz-wr9   r:   s    r2   Úget_werror_argsz$DmdLikeCompilerMixin.get_werror_args‹   ó	   € Øˆvˆr4   c                ó   — dgS )Nz-covr9   r:   s    r2   Úget_coverage_argsz&DmdLikeCompilerMixin.get_coverage_argsŽ   s	   € Øˆxˆr4   c                ó   — g S r8   r9   r:   s    r2   Úget_coverage_link_argsz+DmdLikeCompilerMixin.get_coverage_link_args‘   ó   € Øˆ	r4   c                ó   — dgS )Nz-Er9   r:   s    r2   Úget_preprocess_only_argsz-DmdLikeCompilerMixin.get_preprocess_only_args”   re   r4   c                ó   — dgS )Nz-cr9   r:   s    r2   Úget_compile_only_argsz*DmdLikeCompilerMixin.get_compile_only_args—   re   r4   c                ó   — dS ©NÚdepsr9   r:   s    r2   Úget_depfile_suffixz'DmdLikeCompilerMixin.get_depfile_suffixš   ó   € Øˆvr4   Ú	outtargetÚoutfilec                ó    — | j         rd|› �gS g S )Nz
-makedeps=)r0   )r1   rt   ru   s      r2   Úget_dependency_gen_argsz,DmdLikeCompilerMixin.get_dependency_gen_args�   s#   € ØÔ ð 	,Ø* Ð*Ð*Ð+Ð+Øˆ	r4   c                ó>   — | j                              ¦   «         rg S dgS ©Nz-fPIC©Úinfor   r:   s    r2   Úget_pic_argsz!DmdLikeCompilerMixin.get_pic_args¢   ó%   € ØŒ9×ÒÑ!Ô!ð 	ØˆIØˆyÐr4   ÚkwargsúT.Dict[str, T.Any]Úbuild_to_srcc                ó"  — g }|                      ¦   «         }d|v rj|                     d¦  «        }t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|r|                     |¦  «         d|v �rd}|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|D ]†}	t          |	t          ¦  «        r	|	|k    r|	}Œ t          |	t          ¦  «        r7|	                     ¦   «         r#t          |	¦  «        |k    rt          |	¦  «        }Œl|                     |› d|	› �¦  «         Œ‡|dk    r|                     |› d|› �¦  «         d|v �rd}
|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d	         }|s$t	          d
|                      ¦   «         z  ¦  «        ‚|D ]†}t          |t          ¦  «        r	||
k    r|}
Œ t          |t          ¦  «        r7|                     ¦   «         r#t          |¦  «        |
k    rt          |¦  «        }
Œl|                     |› d|› �¦  «         Œ‡|
dk    r|                     |› d|
› �¦  «         d|v �r|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|D ]¨}|                     ¦   «         }|                     ¦   «         D ]}}t          j                             ||¦  «        }|dvr|}n|}t          j                             ||¦  «        }|                     |› |› �¦  «         |                     |› |› �¦  «         Œ~Œ©|r7t	          dd                     |                     ¦   «         ¦  «        z  ¦  «        ‚|S ©Nr   z6D compiler %s does not support the "unittest" feature.r   éÿÿÿÿz=D compiler %s does not support conditional debug identifiers.ú=r   Úversionsr   z?D compiler %s does not support conditional version identifiers.Úimport_dirsr    zGD compiler %s does not support the "string import directories" feature.)rJ   rK   z*Unknown D compiler feature(s) selected: %sz, ©ÚcopyÚpopÚd_feature_argsÚidr	   Úname_stringÚappendÚ
isinstanceÚlistÚintr>   ÚisdigitÚ
get_curdirÚget_incdirsrW   rF   rY   Úkeys©r1   r~   r€   Úresr   Úunittest_argÚdebug_levelÚdebugsÚ	debug_argÚdÚversion_levelr…   Úversion_argÚvr†   Úimport_dir_argÚidir_objÚbasedirÚidirÚ
bldtreedirÚexpdirÚ
srctreedirs                         r2   Úget_feature_argsz%DmdLikeCompilerMixin.get_feature_args§   ó›  € àˆð —’‘”ˆØ˜ÐÐØ—z’z *Ñ-Ô-ˆHÝ)¨$¬'Ô2°:Ô>ˆLØð zÝ*Ð+cÐfj×fvÒfvÑfxÔfxÑ+xÑyÔyÐyØð )Ø—
’
˜<Ñ(Ô(Ð(à�fÐÑØˆKØ—Z’Z Ñ(Ô(ˆFÝ˜f¥dÑ+Ô+ð "Ø ˜�å& t¤wÔ/°Ô8ˆIØð AÝ*Ð+jÐmq×m}Òm}ÑmÔmÑ+ñ  Aô  Að  Að ð 3ð 3�Ý˜a¥Ñ%Ô%ð 3Ø˜;’�Ø&'˜øÝ ¥3Ñ'Ô'ð 3¨A¯IªI©K¬Kð 3Ý˜1‘v”v Ò+Ð+Ý&)¨!¡f¤f˜øà—J’J )Ð1Ð1¨aÐ1Ð1Ñ2Ô2Ð2Ð2à˜aÒÐØ—
’
˜iÐ7Ð7¨+Ð7Ð7Ñ8Ô8Ð8à˜ÐÑØˆMØ—z’z *Ñ-Ô-ˆHÝ˜h­Ñ-Ô-ð &Ø$˜:�å(¨¬Ô1°)Ô<ˆKØð CÝ*Ð+lÐos×oÒoñ  pBô  pBñ  ,Bñ  Cô  Cð  Cð ð 5ð 5�Ý˜a¥Ñ%Ô%ð 5Ø˜=Ò(Ð(Ø()˜øÝ ¥3Ñ'Ô'ð 5¨A¯IªI©K¬Kð 5Ý˜1‘v”v Ò-Ð-Ý(+¨A©¬˜øà—J’J +Ð3Ð3°Ð3Ð3Ñ4Ô4Ð4Ð4à Ò!Ð!Ø—
’
˜kÐ;Ð;¨MÐ;Ð;Ñ<Ô<Ð<à˜FÐ"Ñ"Ø Ÿ*š* ]Ñ3Ô3ˆKÝ˜k­4Ñ0Ô0ð ,Ø*˜m�å+¨D¬GÔ4°\ÔBˆNØ!ð KÝ*Ð+tÐw{÷  xHò  xHñ  xJô  xJñ  ,Jñ  Kô  Kð  KØ'ð @ð @�Ø"×-Ò-Ñ/Ô/�Ø$×0Ò0Ñ2Ô2ð 	@ð 	@�DÝ!#¤§¢¨g°tÑ!<Ô!<�Jà 9Ð,Ð,Ø!+˜˜à!(˜Ý!#¤§¢¨l¸FÑ!CÔ!C�JØ—J’J .Ð>°*Ð>Ð>Ñ?Ô?Ð?Ø—J’J .Ð>°*Ð>Ð>Ñ?Ô?Ð?Ð?ð	@ð ð 	pÝ&Ð'SÐVZ×V_ÒV_Ð`f×`kÒ`kÑ`mÔ`mÑVnÔVnÑ'nÑoÔoÐoàˆ
r4   Ú	buildtypec                ó:   — |dk    r|                       ¦   «         S g S ©Nr$   ©r;   ©r1   r¨   s     r2   Úget_buildtype_linker_argsz.DmdLikeCompilerMixin.get_buildtype_linker_argsÿ   ó$   € Ø˜ÒÐØ×-Ò-Ñ/Ô/Ð/Øˆ	r4   Ú
implibnamec                ó6   — | j                              |¦  «        S r8   )ÚlinkerÚimport_library_args)r1   r¯   s     r2   Úgen_import_library_argsz,DmdLikeCompilerMixin.gen_import_library_args  s   € ØŒ{×.Ò.¨zÑ:Ô:Ð:r4   Úenvú'Environment'Úfrom_dirÚrpath_pathsúT.Tuple[str, ...]Úbuild_rpathÚinstall_rpathú"T.Tuple[T.List[str], T.Set[bytes]]c                ó  •— | j                              ¦   «         rg t          ¦   «         fS | j        j                             d¦  «        ršg }t          ¦   «                              ||||||¦  «        \  }}	|D ]h}
d|
v rM|
                     dd¬¦  «        \  }}| 	                    |¦  «         | 	                    | j
        |z   ¦  «         ŒS| 	                    |
¦  «         Œi||	fS t          ¦   «                              ||||||¦  «        S )NÚldú,r   ©Úmaxsplit)r{   r   Úsetr±   r‹   Ú
startswithÚsuperÚbuild_rpath_argsÚsplitr�   ÚLINKER_PREFIX)r1   r´   rO   r¶   r·   r¹   rº   ÚargsÚ
rpath_argsÚrpath_dirs_to_removeÚrÚaÚbÚ	__class__s                €r2   rÄ   z%DmdLikeCompilerMixin.build_rpath_args  s   ø€ ð Œ9×ÒÑ!Ô!ð 	Ø�™œ�;Ðð Œ;Œ>×$Ò$ TÑ*Ô*ð 	0ð ˆDÝ16±´×1IÒ1IØ˜ H¨k¸;Èñ2Wô 2WÑ.ˆZÐ-àð #ð #�Ø˜!�8�8ØŸ7š7 3°˜7Ñ3Ô3‘D�A�qØ—K’K ‘N”N�NØ—K’K Ô 2°QÑ 6Ñ7Ô7Ð7Ð7à—K’K ‘N”N�N�NØÐ.Ð/Ð/å‰wŒw×'Ò'Ø�˜H k°;ÀñOô Oð 	Or4   rÇ   r{   r   Úlink_idc                ó„  — g }d}g d¢}|D �]3}g }|                      ¦   «         r|                      |¦  «        }n)|                     ¦   «         r|                      |¦  «        }|r|                     |¦  «         Œp|dk    rŒw|                     d¦  «        rŒ�|                     d¦  «        r|dk    s|                     d¦  «        sŒ¾|                     d¦  «        rd||                     d¦  «        d	z   d …                              d¦  «        }	|	D ],}
|                     d
|
 	                    ¦   «         z   ¦  «         Œ-�Œ7|                     d¦  «        r|                     |¦  «         �Œc|                     d¦  «        r|                     d
|z   ¦  «         �Œ’|                     d¦  «        rX|                     d¦  «        r!|                     d|dd …         z   ¦  «         n |                     d|dd …         z   ¦  «         �Œÿ|                     d¦  «        rX|                     d¦  «        r!|                     d|dd …         z   ¦  «         n |                     d|dd …         z   ¦  «         �Œl|                     d¦  «        �rX|                     d
¦  «        r|dd …         }n
|dd …         }|r|                     |¦  «         d}�ŒÇ||v rd}|                     d¦  «        s|                     d¦  «        r|                     |¦  «         �Œ|                      ¦   «         r2|dk    r,|                     d¦  «        r|                     |¦  «         �ŒT| 
                    d¦  «        s| 
                    d ¦  «        rBt          |¦  «        d!k    r/|                     d¦  «        s|                     d
|z   ¦  «         �ŒÀ|                     d
|z   ¦  «         �ŒÚ|                     d¦  «        s/| 
                    d"¦  «        r|                     d
|z   ¦  «         �Œ|                     |¦  «         �Œ5|S )#NF)z-rpathz-rpath-linkz-sonamez-compatibility_versionz-current_versionz-pthreadz-fstack-protectorz-D)z-Ddz-Dfú-Wl,r¾   r   r<   )z-link-defaultlibz-linkerz-link-internallyz-linkonce-templatesz-libz-lz-isystemz	-isystem=rL   é	   ú-Ié   z
-idirafterz-idirafter=é   é
   ú-LrQ   r   Tú-ú@Úlinkú/ú.aú.libr   )rÛ   rÜ   )r   Útranslate_arg_to_windowsÚ	is_darwinÚ_translate_arg_to_osxÚextendrÂ   ÚindexrÅ   r�   ÚstripÚendswithÚlen)ÚclsrÇ   r{   rÎ   ÚdcargsÚlink_expect_argÚlink_flags_with_argÚargÚosargsÚlinkargsÚlaÚsuffixs               r2   Ú_translate_args_to_nongnuz.DmdLikeCompilerMixin._translate_args_to_nongnu!  s}  € ð ˆð  ˆð
ð 
ð 
Ðð ð n	#ñ n	#ˆCàˆFØ�ŠÑ Ô ð 8Ø×5Ò5°cÑ:Ô:��Ø—’Ñ!Ô!ð 8Ø×2Ò2°3Ñ7Ô7�Øð Ø—’˜fÑ%Ô%Ð%Øð �jÒ Ð ØØ�~Š~Ð1Ñ2Ô2ð ØØ�~Š~˜dÑ#Ô#ð ¨S°Dª[¨[¸C¿NºNÈ>Ñ<ZÔ<Z¨[ð Ø�~Š~˜fÑ%Ô%ð Z#à˜sŸyšy¨™~œ~°Ñ1Ð2Ð2Ô3×9Ò9¸#Ñ>Ô>�Ø"ð 6ð 6�BØ—M’M %¨"¯(ª(©*¬*Ñ"4Ñ5Ô5Ð5Ð5ÙØ—’Ð rÑsÔsð T#ð —’˜cÑ"Ô"Ð"ÙØ—’ Ñ%Ô%ð L#à—’˜e c™kÑ*Ô*Ð*ÙØ—’ 
Ñ+Ô+ð H#ð —>’> +Ñ.Ô.ð 2Ø—M’M %¨#¨a¨b¨b¬'¡/Ñ2Ô2Ð2Ð2à—M’M $¨¨Q¨R¨R¬¡.Ñ1Ô1Ð1ÙØ—’ Ñ-Ô-ð =#à—>’> -Ñ0Ô0ð 3Ø—M’M %¨#¨b¨c¨c¬(Ñ"2Ñ3Ô3Ð3Ð3à—M’M $¨¨R¨S¨S¬¡/Ñ2Ô2Ð2ÙØ—’ Ñ%Ô%ñ 6#ð  —>’> %Ñ(Ô(ð %Ø    œW�F�Fà    œW�Fà"ð ð —M’M #Ñ&Ô&Ð&Ø&+�OÙàÐ0Ð0Ð0Ø&*�Oà×$Ò$ SÑ)Ô)ð ¨V×->Ò->¸sÑ-CÔ-Cð à—M’M #Ñ&Ô&Ð&Ùð —?’?Ñ$Ô$ð ¨°FÒ):Ð):¸v×?PÒ?PÐQTÑ?UÔ?UÐ):Ø—M’M #Ñ&Ô&Ð&Ùð —<’< Ñ%Ô%ð !¨¯ª°fÑ)=Ô)=ð !Ý˜6‘{”{ Q’�¨v×/@Ò/@ÀÑ/EÔ/E�ØŸš e¨f¡nÑ5Ô5Ð5Ù à—’˜e c™kÑ*Ô*Ð*ÙØ—^’^ CÑ(Ô(ð #¨S¯\ª\¸.Ñ-IÔ-Ið #à—’˜e c™kÑ*Ô*Ð*Ùà—’˜cÑ"Ô"Ð"Ñ"àˆr4   ré   c                ó†  — g }|                      d¦  «        r€||                     d¦  «        dz   d …                              d¦  «        }|D ]I}|                      d¦  «        r2|                     d|dd …                              ¦   «         z   ¦  «         ŒJn©|                      d¦  «        r”|                     |¦  «         |dd …                              ¦   «         }| t          u rZ|d	k    r*|                     d
¦  «         |                     d¦  «         |                      d¦  «        r|                     d¦  «         |S )NrÐ   r¾   r   z--out-implib=z-L=/IMPLIB:é   ú
-mscrtlib=rÕ   Úlibcmtz-L=/NODEFAULTLIB:libcmtz-L=/NODEFAULTLIB:libvcruntimeÚmsvcrtz+-L=/DEFAULTLIB:legacy_stdio_definitions.lib)rÂ   rá   rÅ   r�   râ   ÚlowerÚLLVMDCompiler)rå   ré   rÇ   rë   rì   Úmscrtlibs         r2   rÝ   z-DmdLikeCompilerMixin.translate_arg_to_windows   sL  € àˆØ�>Š>˜&Ñ!Ô!ð 	Oà˜3Ÿ9š9 S™>œ>¨AÑ-Ð.Ð.Ô/×5Ò5°cÑ:Ô:ˆHØð Að A�Ø—=’= Ñ1Ô1ð Aà—K’K °°2°3°3´·²±´Ñ ?Ñ@Ô@Ð@øðAð �^Š^˜LÑ)Ô)ð 	OØ�KŠK˜ÑÔÐØ˜2˜3˜3”x—~’~Ñ'Ô'ˆHØ•mÐ#Ð#ð ˜xÒ'Ð'Ø—K’KÐ 9Ñ:Ô:Ð:Ø—K’KÐ ?Ñ@Ô@Ð@ð ×&Ò& xÑ0Ô0ð OØ—K’KÐ MÑNÔNÐNàˆr4   c                ód   — g }|                      d¦  «        r|                     d|z   ¦  «         |S )Nz-install_namer<   )rÂ   r�   )rå   ré   rÇ   s      r2   rß   z*DmdLikeCompilerMixin._translate_arg_to_osxº  s6   € àˆØ�>Š>˜/Ñ*Ô*ð 	%Ø�KŠK˜ ™Ñ$Ô$Ð$Øˆr4   rJ   c                ó0   — |                       |||¦  «        S r8   )rî   )rå   rÇ   r{   rÎ   s       r2   Ú_unix_args_to_nativez)DmdLikeCompilerMixin._unix_args_to_nativeÁ  s   € à×,Ò,¨T°4¸ÑAÔAÐAr4   Úis_debugc                ó\   — g }|rt           | j                 d         g}t          |         |z   S )Nr   )rŠ   r‹   r   )r1   rú   Úddebug_argss      r2   Úget_debug_argsz#DmdLikeCompilerMixin.get_debug_argsÅ  s3   € ØˆØð 	=Ý)¨$¬'Ô2°7Ô;Ð<ˆKå Ô)¨KÑ7Ð7r4   Úcrt_valc                ób  — | j                              ¦   «         sg S || 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          d¦  «        ‚)N>   Úfrom_buildtypeÚstatic_from_buildtypeÚmddÚmdr  ÚmtdÚmtr$   r   ÚdebugoptimizedÚreleaseÚminsizeÚcustomzBRequested C runtime based on buildtype, but buildtype is "custom".)r{   r   Ú
mscrt_argsr	   )r1   rþ   r¨   ÚdbgÚrels        r2   Ú_get_crt_argsz"DmdLikeCompilerMixin._get_crt_argsÌ  sü   € ØŒy×#Ò#Ñ%Ô%ð 	ØˆIà�d”oÐ%Ð%Ø”? 7Ô+Ð+ØÐEÐEÐEÐEÐEàˆØˆØÐ-Ò-Ð-ØˆCØˆCð ˜ÒÐØˆIØ˜'Ò!Ð!Ø”? 3Ô'Ð'ØÐ*Ò*Ð*Ø”? 3Ô'Ð'Ø˜)Ò#Ð#Ø”? 3Ô'Ð'Ø˜)Ò#Ð#Ø”? 3Ô'Ð'à Ò(Ð(Ð(Ð(Ý&Ð'kÑlÔlÐlr4   ÚprefixÚ
shlib_namerí   Ú	soversionÚdarwin_versionsúT.Tuple[str, str]c                ó&  •— t          ¦   «                              ||||||¦  «        }| j        j                             d¦  «        rUg }|D ]N}	|	                     dd¬¦  «        \  }
}|                     |
¦  «         |                     | j        |z   ¦  «         ŒO|S | j        j                             d¦  «        rVg }|D ]O}	|	                     | j        ¦  «        s|                     | j        |	z   ¦  «         Œ:|                     |	¦  «         ŒP|S |S )Nzld.r¾   r   r¿   Úld64)rÃ   Úget_soname_argsr±   r‹   rÂ   rÅ   r�   rÆ   )r1   r´   r  r  rí   r  r  ÚsargsÚsoargsré   rË   rÌ   rÍ   s               €r2   r  z$DmdLikeCompilerMixin.get_soname_argsé  s+  ø€ õ ‘”×'Ò'¨¨V°ZÀØ(1°?ñDô Dˆð
 Œ;Œ>×$Ò$ UÑ+Ô+ð 	ØˆFØð 6ð 6�Ø—y’y ¨q�yÑ1Ô1‘��1Ø—’˜aÑ Ô Ð Ø—’˜dÔ0°1Ñ4Ñ5Ô5Ð5Ð5ØˆMØŒ[Œ^×&Ò& vÑ.Ô.ð 		ØˆFØð 'ð '�Ø—~’~ dÔ&8Ñ9Ô9ð 'Ø—M’M $Ô"4°sÑ":Ñ;Ô;Ð;Ð;à—M’M #Ñ&Ô&Ð&Ð&ØˆMàˆLr4   c                ó‚   — | j                              ¦   «         }| j                             ¦   «         rd„ |D ¦   «         }|S )Nc                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r<   z	-Xcc=-Wl,)Úreplace)Ú.0rË   s     r2   ú
<listcomp>zFDmdLikeCompilerMixin.get_allow_undefined_link_args.<locals>.<listcomp>  s&   € Ð@Ð@Ð@°a�A—I’I˜e [Ñ1Ô1Ð@Ð@Ð@r4   )r±   Úget_allow_undefined_argsr{   rÞ   ©r1   rÇ   s     r2   Úget_allow_undefined_link_argsz2DmdLikeCompilerMixin.get_allow_undefined_link_args  sG   € ØŒ{×3Ò3Ñ5Ô5ˆØŒ9×ÒÑ Ô ð 	Að AÐ@¸4Ð@Ñ@Ô@ˆDØˆr4   )r-   r.   ©r5   r6   )r=   r>   r5   r6   )rF   r>   rG   rH   r5   r6   ©rN   r6   rO   r>   r5   r6   ©r^   r>   r5   r6   ©r5   r>   ©rt   r>   ru   r>   r5   r6   ©r~   r   r€   r>   r5   r6   ©r¨   r>   r5   r6   )r¯   r>   r5   r6   )r´   rµ   rO   r>   r¶   r>   r·   r¸   r¹   r>   rº   r>   r5   r»   )rÇ   r6   r{   r   rÎ   r>   r5   r6   )ré   r>   r5   r6   )rJ   )rú   rH   r5   r6   ©rþ   r>   r¨   r>   r5   r6   )r´   rµ   r  r>   r  r>   rí   r>   r  r>   r  r  r5   r6   )%Ú__name__Ú
__module__Ú__qualname__Ú__doc__r3   ÚTÚTYPE_CHECKINGr
  r;   rÆ   rB   rE   rM   r]   rb   rd   rg   ri   rl   rn   rr   rw   r|   r¦   r­   r³   rÄ   Úclassmethodrî   rÝ   rß   rù   rý   r  r  r  Ú__classcell__©rÍ   s   @r2   r,   r,   Y   s¹  ø€ € € € € ðð ðWð Wð Wð Wð 	„ð <Øˆ
à;Ð;Ð;Ð;à€Mð%ð %ð %ð %ð%ð %ð %ð %ðð ð ð ð
ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð
ð ð ð ð
Vð Vð Vð Vðpð ð ð ð
;ð ;ð ;ð ;ðOð Oð Oð Oð Oð Oð4 ð|ð |ð |ñ „[ð|ð| ðð ð ñ „[ðð2 ðð ð ñ „[ðð ðBð Bð Bð Bñ „[ðBð8ð 8ð 8ð 8ðmð mð mð mð:ð ð ð ð ð ð4	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r4   r,   c                  ó   — e Zd ZdZdZdS )ÚDCompilerArgs)rÒ   rÖ   )rÒ   N)r(  r)  r*  Úprepend_prefixesÚdedup2_prefixesr9   r4   r2   r2  r2    s   € € € € € Ø#ÐØ€O€O€Or4   r2  c                  óð   ‡ — e Zd ZdgdgdgdgdgdœZdZdddd	d
œdMˆ fd„ZdNd"„ZdOd#„ZdPd$„ZdQd%„Z	dRd)„Z
dSd+„ZdTdUd/„ZdVd2„ZdQd3„ZdWd5„ZdWd6„ZdTdXd9„Zddd:œdYd@„Zddd:œdZdE„Zddd:œd[dG„Zddd	dHœd\dL„Zˆ xZS )]Ú	DCompilerrñ   z-mscrtlib=msvcrtz-mscrtlib=msvcrtdz-mscrtlib=libcmtz-mscrtlib=libcmtd)Únoner  r  r  r  r›   NF©Úexe_wrapperr±   Úfull_versionÚis_crossÚexelistr6   r   r>   Úfor_machiner   r{   ú'MachineInfo'Úarchr9  úT.Optional['ExternalProgram']r±   úT.Optional['DynamicLinker']r:  r.   r;  rH   c          
     óv   •— t          ¦   «                              g |||||||	¬¦  «         || _        || _        d S )N)r±   r:  r;  )rÃ   r3   r?  r9  )r1   r<  r   r=  r{   r?  r9  r±   r:  r;  rÍ   s             €r2   r3   zDCompiler.__init__  sO   ø€ õ 	‰Œ×Ò˜˜W g¨{¸DÈØ&2¸Xð 	ñ 	Gô 	Gð 	GàˆŒ	Ø&ˆÔÐÐr4   Úwork_dirÚenvironmentrµ   r5   ÚNonec                óø  — t           j                             |d¦  «        }t           j                             |d¦  «        }t          |dd¬¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | j        |                      |¦  «        z   |  	                    ¦   «         z   |gz   |¬¦  «        }| 
                    ¦   «          |j        dk    r$t          d	|                      ¦   «         z  ¦  «        ‚| j        r'| j        €d S | j                             ¦   «         |gz   }n|g}t          j        |¦  «        dk    r$t          d
|                      ¦   «         z  ¦  «        ‚d S )Nzsanity.dÚdtestÚwzutf-8)Úencodingzvoid main() { })Úcwdr   z'D compiler %s can not compile programs.z6Executables created by D compiler %s are not runnable.)rW   rF   rY   ÚopenÚwriteÚ
subprocessÚPopenr<  rB   r;   ÚwaitÚ
returncoder	   rŒ   r;  r9  Úget_commandÚcall)r1   rC  rD  Úsource_nameÚoutput_nameÚofileÚpcÚcmdlists           r2   Úsanity_checkzDCompiler.sanity_check*  s®  € Ý”g—l’l 8¨ZÑ8Ô8ˆÝ”g—l’l 8¨WÑ5Ô5ˆÝ�+˜s¨WÐ5Ñ5Ô5ð 	/¸Ø�KŠKÐ-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/åÔ˜dœl¨T×-AÒ-AÀ+Ñ-NÔ-NÑNÐQU×QkÒQkÑQmÔQmÑmÐq|Ðp}Ñ}ð  DLð  Mñ  Mô  MˆØ
�Š‰	Œ	ˆ	ØŒ=˜AÒÐÝ&Ð'PÐSW×ScÒScÑSeÔSeÑ'eÑfÔfÐfØŒ=ð 	$ØÔÐ'à�ØÔ&×2Ò2Ñ4Ô4¸°}ÑDˆGˆGà"�mˆGÝŒ?˜7Ñ#Ô# qÒ(Ð(Ý&Ð'_Ðbf×brÒbrÑbtÔbtÑ'tÑuÔuÐuð )Ð(s   ÁA5Á5A9Á<A9c                ó   — dS )NTr9   r:   s    r2   Úneeds_static_linkerzDCompiler.needs_static_linker=  s   € Øˆtr4   c                ó   — dS rp   r9   r:   s    r2   rr   zDCompiler.get_depfile_suffix@  rs   r4   c                ó>   — | j                              ¦   «         rg S dgS ry   rz   r:   s    r2   r|   zDCompiler.get_pic_argsC  r}   r4   r~   r   r€   c                ó"  — g }|                      ¦   «         }d|v rj|                     d¦  «        }t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|r|                     |¦  «         d|v �rd}|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|D ]†}	t          |	t          ¦  «        r	|	|k    r|	}Œ t          |	t          ¦  «        r7|	                     ¦   «         r#t          |	¦  «        |k    rt          |	¦  «        }Œl|                     |› d|	› �¦  «         Œ‡|dk    r|                     |› d|› �¦  «         d|v �rd}
|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d	         }|s$t	          d
|                      ¦   «         z  ¦  «        ‚|D ]†}t          |t          ¦  «        r	||
k    r|}
Œ t          |t          ¦  «        r7|                     ¦   «         r#t          |¦  «        |
k    rt          |¦  «        }
Œl|                     |› d|› �¦  «         Œ‡|
dk    r|                     |› d|
› �¦  «         d|v �r|                     d¦  «        }t          |t          ¦  «        s|g}t          | j                 d         }|s$t	          d|                      ¦   «         z  ¦  «        ‚|D ]¨}|                     ¦   «         }|                     ¦   «         D ]}}t          j                             ||¦  «        }|dvr|}n|}t          j                             ||¦  «        }|                     |› |› �¦  «         |                     |› |› �¦  «         Œ~Œ©|r7t	          dd                     |                     ¦   «         ¦  «        z  ¦  «        ‚|S r‚   r‡   r•   s                         r2   r¦   zDCompiler.get_feature_argsH  r§   r4   r¨   c                ó:   — |dk    r|                       ¦   «         S g S rª   r«   r¬   s     r2   r­   z#DCompiler.get_buildtype_linker_args   r®   r4   rÇ   úT.Optional[T.Iterable[str]]r2  c                ó"   — t          | |¦  «        S r8   )r2  r  s     r2   Úcompiler_argszDCompiler.compiler_args¥  s   € Ý˜T 4Ñ(Ô(Ð(r4   r´   úT.Tuple[bool, bool]c                ó2   — |                       d||¬¦  «        S )Nzint i;
)Ú
extra_args)Úcompiles)r1   rÇ   r´   s      r2   Úhas_multi_argumentszDCompiler.has_multi_arguments¨  s   € Ø�}Š}˜Z¨¸ˆ}Ñ>Ô>Ð>r4   c                óZ   — | j                              ¦   «         r| j        dk    rdgS dgS g S )NÚx86_64ú-m64ú-m32©r{   r   r?  r:   s    r2   r;   zDCompiler._get_target_arch_args«  s:   € ð Œ9×ÒÑ!Ô!ð 	ØŒy˜HÒ$Ð$Ø�x�Ø�8ˆOØˆ	r4   rþ   c                ó   — g S r8   r9   ©r1   rþ   r¨   s      r2   Úget_crt_compile_argszDCompiler.get_crt_compile_args´  rj   r4   c                ó   — g S r8   r9   rm  s      r2   Úget_crt_link_argszDCompiler.get_crt_link_args·  rj   r4   rd  úGT.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]], None]c                ó$  — |                       ¦   «         }|ryt          |¦  «        r |t          j        ¦  «        }t	          |t
          ¦  «        r|                     |¦  «         n*t	          |t          ¦  «        r|                     |¦  «         |S r8   )	r;   Úcallabler   ÚCOMPILErŽ   r�   rà   r>   r�   )r1   rd  rÇ   s      r2   Ú_get_compile_extra_argsz!DCompiler._get_compile_extra_argsº  s�   € Ø×)Ò)Ñ+Ô+ˆØð 	(Ý˜
Ñ#Ô#ð BØ'˜ZÕ(8Ô(@ÑAÔA�
Ý˜*¥dÑ+Ô+ð (Ø—’˜JÑ'Ô'Ð'Ð'Ý˜J­Ñ,Ô,ð (Ø—’˜JÑ'Ô'Ð'Øˆr4   ©rd  ÚdependenciesÚcodeú'mesonlib.FileOrString'rw  ú T.Optional[T.List['Dependency']]úcompilers.RunResultc          	     ó¬  — |                      | j        ¦  «        }|r| j        €t          j        d¦  «        ‚|                      |¦  «        }|                      ||||dd¬¦  «        5 }|j        dk    rEt          j	        d|j
        › d|j        › d�¦  «         t          j        d	¦  «        cd d d ¦  «         S |r#| j                             ¦   «         |j        gz   }n|j        g}	 t          j        |¦  «        \  }}	}
nR# t           $ rE}t          j	        d
|› d|› d�¦  «         t          j        d	¦  «        cY d }~cd d d ¦  «         S d }~ww xY w	 d d d ¦  «         n# 1 swxY w Y   t          j	        d¦  «         t          j	        |	¦  «         t          j	        d¦  «         t          j	        |
¦  «         t          j        d|j        |	|
¦  «        S )Nz8Can not run test applications in this cross environment.rÙ   T)ÚmodeÚwant_outputr   zCould not compile test file z: ú
FzCould not run: z	 (error: z)
zProgram stdout:
zProgram stderr:
)Úneed_exe_wrapperr=  r9  r   ÚCrossNoRunExceptionru  Ú_build_wrapperrP  r   r   Ú
input_nameÚ	RunResultrQ  rT  r   Ú
Popen_safeÚ	Exception)r1   rx  r´   rd  rw  r€  ÚprW  ÚpeÚsoÚseÚes               r2   ÚrunzDCompiler.runÅ  sd  € ð ×/Ò/°Ô0@ÑAÔAÐØð 	l Ô 0Ð 8ÝÔ/Ð0jÑkÔkÐkØ×1Ò1°*Ñ=Ô=ˆ
Ø× Ò   s¨J¸È6Ð_cÐ ÑdÔdð 	2ÐhiØŒ|˜qÒ Ð Ý”
ÐZ¸!¼,ÐZÐZÈ!Ì,ÐZÐZÐZÑ[Ô[Ð[Ý Ô*¨5Ñ1Ô1ð	2ð 	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð  ð *ØÔ*×6Ò6Ñ8Ô8¸A¼M¸?ÑJ��àœ=˜/�ð2Ý%Ô0°Ñ9Ô9‘
��B˜˜øÝð 2ð 2ð 2Ý”
ÐE¨WÐEÐE¸qÐEÐEÐEÑFÔFÐFÝ Ô*¨5Ñ1Ô1Ð1Ð1Ð1Ð1Ð1ð	2ð 	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2øøøøð2øøøð ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2õ 	Œ
Ð&Ñ'Ô'Ð'ÝŒ
�2‰ŒˆÝŒ
Ð&Ñ'Ô'Ð'ÝŒ
�2‰ŒˆÝÔ" 4¨¬¸¸BÑ?Ô?Ð?sI   Á(AEÂ9-EÃ'D Ã?EÄ 
EÄ
.E
Ä8EÄ9EÅ
EÅEÅE#Å&E#Útypenamer  úGT.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]r�   c               óÆ   — |€g }d|› d|› d�}|                       ||||¬¦  «        }|j        sdS |j        dk    rt          j        d¦  «        ‚t          |j        ¦  «        S )Nú-
        import std.stdio : writeln;
        ú,
        void main() {
            writeln((z).sizeof);
        }
        rv  rƒ   r   z!Could not run sizeof test binary.)rŒ  ÚcompiledrP  r   r	   r�   Ústdout)r1   r�  r  r´   rd  rw  Útr–   s           r2   ÚsizeofzDCompiler.sizeofà  s–   € ð ÐØˆJðà	ðð ð ð	ð ð ˆð �hŠh�q˜#¨*Ø$0ð ñ 2ô 2ˆàŒ|ð 	Ø�2ØŒ>˜QÒÐÝÔ/Ð0SÑTÔTÐTÝ�3”:‰ŒÐr4   úT.Optional[T.List[str]]c               ó*  — |€g }d|› d|› d�}|                       ||||¬¦  «        }|j        st          j        d¦  «        ‚|j        dk    rt          j        d¦  «        ‚t          |j        ¦  «        }|dk    rt          j        d|› d	�¦  «        ‚|S )
Nr�  r‘  z).alignof);
        }
        rv  z!Could not compile alignment test.r   z$Could not run alignment test binary.z!Could not determine alignment of z&. Sorry. You might want to file a bug.)rŒ  r’  r   r	   rP  r�   r“  )	r1   r�  r  r´   rd  rw  r”  r–   Úaligns	            r2   Ú	alignmentzDCompiler.alignmentô  sä   € ð ÐØˆJðà	ðð ð ð	ð ð ˆð �hŠh�q˜#¨*Ø$0ð ñ 2ô 2ˆàŒ|ð 	UÝÔ/Ð0SÑTÔTÐTØŒ>˜QÒÐÝÔ/Ð0VÑWÔWÐWÝ�C”J‘”ˆØ�AŠ:ˆ:ÝÔ/ð  1EÐT\ð  1Eð  1Eð  1Eñ  Fô  Fð  FØˆr4   )rd  rw  Údisable_cacheÚhnameúIT.Union[None, T.List[str], T.Callable[['CompileCheckMode'], T.List[str]]]rš  c               ór   — |                       |¦  «        }|› d|› d�}|                      ||||d|¬¦  «        S )Nz
        import z
;
        Úcompile)rd  rw  r}  rš  )ru  re  )r1   r›  r  r´   rd  rw  rš  rx  s           r2   Ú
has_headerzDCompiler.has_header  sf   € ð
 ×1Ò1°*Ñ=Ô=ˆ
Øð ð Øðð ð ˆð �}Š}˜T 3°:Ø*6¸YÐVcð ñ eô eð 	er4   ©r<  r6   r   r>   r=  r   r{   r>  r?  r>   r9  r@  r±   rA  r:  r.   r;  rH   )rC  r>   rD  rµ   r5   rE  ©r5   rH   r#  r   r%  r&  r8   )rÇ   r_  r5   r2  )rÇ   r6   r´   rµ   r5   rb  r'  )rd  rq  r5   r6   )
rx  ry  r´   rµ   rd  rq  rw  rz  r5   r{  )r�  r>   r  r>   r´   rµ   rd  rŽ  rw  rz  r5   r�   )r�  r>   r  r>   r´   rµ   rd  r–  rw  rz  r5   r�   )r›  r>   r  r>   r´   rµ   rd  rœ  rw  rz  rš  rH   r5   rb  )r(  r)  r*  r
  Úlanguager3   rX  rZ  rr   r|   r¦   r­   ra  rf  r;   rn  rp  ru  rŒ  r•  r™  rŸ  r/  r0  s   @r2   r6  r6    s:  ø€ € € € € à�Ø!Ð"Ø#Ð$Ø!Ð"Ø#Ð$ðð €Jð €Hð ?CØ7;Ø15Ø"'ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ðvð vð vð vð&ð ð ð ðð ð ð ðð ð ð ð
Vð Vð Vð Vðpð ð ð ð
)ð )ð )ð )ð )ð?ð ?ð ?ð ?ðð ð ð ðð ð ð ðð ð ð ð	ð 	ð 	ð 	ð 	ð cgØ=Að@ð @ð @ð @ð @ð @ð8 fjØ@Dðð ð ð ð ð ð* 9=ØCGðð ð ð ð ð ð0 lpØDHØ).ð
eð 
eð 
eð 
eð 
eð 
eð 
eð 
eð 
eð 
er4   r6  c                  ó†   ‡ — e Zd Zej        ZdZdddddœd'd„Zd(ˆ fd„Zd)ˆ fd„Zd*d„Z	d+d „Z
d,d#„Zd-d$„Zd-ˆ fd%„Zd-d&„Zˆ xZS ).ÚGnuDCompilerr!   NFr8  r<  r6   r   r>   r=  r   r{   r>  r?  r9  r@  r±   rA  r:  r.   r;  rH   c               óv  — t                                | |||||||||	¬¦
  «
         t          j        | i ¦  «         ddg}
g |
|
dgz   |
ddgz   |
ddgz   |                      t          ¦  «        z   dœ| _        d„ dD ¦   «         | _        t          | j        d	¦  «        | _	        t          | j        d
¦  «        | _
        d S )Nr8  z-Wallz-Wdeprecatedz-Wextraz
-Wpedantic)r%   r'   r(   r)   Ú
everythingc                ó,   — h | ]}t          |¦  «        ’ŒS r9   ©r   ©r  Úos     r2   ú	<setcomp>z(GnuDCompiler.__init__.<locals>.<setcomp>/  s+   € ð 1ð 1ð 1Ø�I�a‰LŒLð1ð 1ð 1r4   )Ú
b_coloroutÚ
b_sanitizeÚb_staticpicÚb_vscrtÚ
b_coverageÚb_pgoÚb_ndebugz>=4.9z>=7.1)r6  r3   r   Úsupported_warn_argsr   Ú	warn_argsÚbase_optionsr
   r   Ú_has_color_supportÚ_has_deps_support)r1   r<  r   r=  r{   r?  r9  r±   r:  r;  Údefault_warn_argss              r2   r3   zGnuDCompiler.__init__  s  € õ 	×Ò˜4 ¨'°;ÀÀdØ'2¸6Ø(4¸xð 	ñ 	Iô 	Ið 	Iõ 	Ô˜T 2Ñ&Ô&Ð&Ø$ nÐ5ÐØ!Ø0Ø0°I°;Ñ>Ø0°I¸|Ð3LÑLØ):¸iÈÐ=VÑ)VØ)-×)AÒ)AÕBYÑ)ZÔ)Zñ*[ð	]ð ]ˆŒð1ð 1ð#0ð1ñ 1ô 1ˆÔõ
 #2°$´,ÀÑ"HÔ"HˆÔõ "1°´¸wÑ!GÔ!GˆÔÐÐr4   Ú	colortyper5   c                óX   •— | j         r!t          ¦   «                              |¦  «         g S r8   )r¶  rÃ   Úget_colorout_args)r1   r¹  rÍ   s     €r2   r»  zGnuDCompiler.get_colorout_args9  s+   ø€ ØÔ"ð 	1Ý‰GŒG×%Ò% iÑ0Ô0Ð0Øˆ	r4   rt   ru   c                óZ   •— | j         r"t          ¦   «                              ||¦  «        S g S r8   )r·  rÃ   rw   )r1   rt   ru   rÍ   s      €r2   rw   z$GnuDCompiler.get_dependency_gen_args>  s.   ø€ ØÔ!ð 	GÝ‘7”7×2Ò2°9¸gÑFÔFÐFØˆ	r4   r^   c                ó   — | j         |         S r8   )r´  ra   s     r2   rb   zGnuDCompiler.get_warn_argsC  s   € ØŒ~˜eÔ$Ð$r4   r¨   c                ó   — t           |         S r8   )r   r¬   s     r2   Úget_buildtype_argszGnuDCompiler.get_buildtype_argsF  s   € Ý# IÔ.Ð.r4   rN   rO   c           
     ó  — t          |¦  «        D ]t\  }}|d d…         dk    s|d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   Œu|S )Nr   rÒ   rÖ   rU   rZ   s        r2   r]   z3GnuDCompiler.compute_parameters_with_absolute_pathsI  s‹   € å Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}  " 1 "¤¨¢ Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øàÐr4   c                ó4   — | j                              ¦   «         S r8   )r±   r  r:   s    r2   r  z*GnuDCompiler.get_allow_undefined_link_argsQ  s   € ØŒ{×3Ò3Ñ5Ô5Ð5r4   c                ó†   •— t          ¦   «                              ¦   «         }| j                             ¦   «         r|S |dgz   S )Nz-shared-libphobos©rÃ   Úget_linker_always_argsr{   r   ©r1   rÇ   rÍ   s     €r2   rÄ  z#GnuDCompiler.get_linker_always_argsT  sB   ø€ Ý‰wŒw×-Ò-Ñ/Ô/ˆØŒ9×ÒÑ!Ô!ð 	ØˆKØÐ*Ð+Ñ+Ð+r4   c                ó   — dgS )Nz	-freleaser9   r:   s    r2   Úget_disable_assert_argsz$GnuDCompiler.get_disable_assert_argsZ  ó
   € Øˆ}Ðr4   r   ©r¹  r>   r5   r6   r$  r"  r&  r!  r   )r(  r)  r*  r   rÆ   r‹   r3   r»  rw   rb   r¿  r]   r  rÄ  rÇ  r/  r0  s   @r2   r¤  r¤    s  ø€ € € € € ð  Ô-€MØ	€Bð ?CØ7;Ø15Ø"'ðHð Hð Hð Hð Hð Hð8ð ð ð ð ð ð
ð ð ð ð ð ð
%ð %ð %ð %ð/ð /ð /ð /ðð ð ð ð6ð 6ð 6ð 6ð,ð ,ð ,ð ,ð ,ð ,ðð ð ð ð ð ð ð r4   r¤  Úversion_outputr.   r5   c                óf   — | €d S t          j        d| ¦  «        }|r|                     d¦  «        S d S )NzDMD v(\d+\.\d+\.\d+)r   )ÚreÚsearchÚgroup)rÊ  Úversion_regexs     r2   Úfind_ldc_dmd_frontend_versionrÐ  c  s@   € ØÐØˆtÝ”IÐ5°~ÑFÔF€MØð &Ø×"Ò" 1Ñ%Ô%Ð%Øˆ4r4   c                  óš   ‡ — e Zd ZdZddddddœd+d„Zd,d„Zd-d„Zd.d„Zd/d„Zd0d!„Z	d1d#„Z
d2d%„Zed3d&„¦   «         Zd/ˆ fd'„Zd/d(„Zd4d*„Zˆ xZS )5rõ   r"   NF)r9  r±   r:  r;  rÊ  r<  r6   r   r>   r=  r   r{   r>  r?  r9  r@  r±   rA  r:  r.   r;  rH   rÊ  c               óÂ   — t                                | |||||||||	¬¦
  «
         t                               | t          |
¦  «        ¬¦  «         d„ dD ¦   «         | _        d S )Nr8  )r-   c                ó,   — h | ]}t          |¦  «        ’ŒS r9   r¨  r©  s     r2   r«  z)LLVMDCompiler.__init__.<locals>.<setcomp>y  ó   € ÐgÐgÐg¨a�Y q™\œ\ÐgÐgÐgr4   ©r°  r¬  r¯  r²  )r6  r3   r,   rÐ  rµ  )r1   r<  r   r=  r{   r?  r9  r±   r:  r;  rÊ  s              r2   r3   zLLVMDCompiler.__init__o  s|   € õ 	×Ò˜4 ¨'°;ÀÀdØ'2¸6Ø(4¸xð 	ñ 	Iô 	Ið 	Iõ 	×%Ò% dÕA^Ð_mÑAnÔAnÐ%ÑoÔoÐoØgÐgÐ3fÐgÑgÔgˆÔÐÐr4   r¹  r5   c                ó   — |dk    rdgS g S )NÚalwaysz-enable-colorr9   ©r1   r¹  s     r2   r»  zLLVMDCompiler.get_colorout_args{  s   € Ø˜Ò Ð Ø#Ð$Ð$Øˆ	r4   r^   c                ó(   — |dv rddgS |dk    rdgS g S )N>   r(   r)   r`   z-dwr'   r9   ra   s     r2   rb   zLLVMDCompiler.get_warn_args€  s,   € Ø�JÐÐØ˜5�>Ð!Ø�cŠ\ˆ\Ø�7ˆNØˆ	r4   r¨   c                ól   — |dk    r"|                       ¦   «         t          |         z   S t          |         S rª   )r;   r   r¬   s     r2   r¿  z LLVMDCompiler.get_buildtype_args‡  ó5   € Ø˜ÒÐØ×-Ò-Ñ/Ô/Õ2FÀyÔ2QÑQÐQÝ# IÔ.Ð.r4   c                ó   — dgS )Nz-relocation-model=picr9   r:   s    r2   r|   zLLVMDCompiler.get_pic_argsŒ  s   € Ø'Ð(Ð(r4   rþ   c                ó.   — |                       ||¦  «        S r8   ©r  rm  s      r2   rp  zLLVMDCompiler.get_crt_link_args�  ó   € Ø×!Ò! '¨9Ñ5Ô5Ð5r4   rÇ   c                óN   — |                       || j        | j        j        ¦  «        S r8   ©rù   r{   r±   r‹   r  s     r2   Úunix_args_to_nativez!LLVMDCompiler.unix_args_to_native’  ó    € Ø×(Ò(¨¨t¬y¸$¼+¼.ÑIÔIÐIr4   Úoptimization_levelc                ó   — t           |         S r8   )Úldc_optimization_args©r1   rä  s     r2   Úget_optimization_argsz#LLVMDCompiler.get_optimization_args•  ó   € Ý$Ð%7Ô8Ð8r4   c                ó   — d|› �gS )Nz-linker=r9   )rå   r±   r   s      r2   Úuse_linker_argszLLVMDCompiler.use_linker_args˜  s   € à#˜6Ð#Ð#Ð$Ð$r4   c                ó†   •— t          ¦   «                              ¦   «         }| j                             ¦   «         r|S |dgz   S )Nz-link-defaultlib-sharedrÃ  rÅ  s     €r2   rÄ  z$LLVMDCompiler.get_linker_always_argsœ  sB   ø€ Ý‰wŒw×-Ò-Ñ/Ô/ˆØŒ9×ÒÑ!Ô!ð 	ØˆKØÐ0Ð1Ñ1Ð1r4   c                ó   — dgS )Nz	--releaser9   r:   s    r2   rÇ  z%LLVMDCompiler.get_disable_assert_args¢  rÈ  r4   r   c                óN   — t          ¦   «         rt          j        nt          j        S r8   )r   r   ÚMSVCÚGCCr:   s    r2   Úrsp_file_syntaxzLLVMDCompiler.rsp_file_syntax¥  s   € õ &0¡\¤\ÐH�}Ô!Ð!µ}Ô7HÐHr4   )r<  r6   r   r>   r=  r   r{   r>  r?  r>   r9  r@  r±   rA  r:  r.   r;  rH   rÊ  r.   rÉ  r"  r&  r   r'  ©rÇ   r6   r5   r6   ©rä  r>   r5   r6   )r±   r>   r   r>   r5   r6   ©r5   r   )r(  r)  r*  r‹   r3   r»  rb   r¿  r|   rp  râ  rè  r.  rë  rÄ  rÇ  rñ  r/  r0  s   @r2   rõ   rõ   k  sW  ø€ € € € € à	€Bð ?CØ7;Ø15Ø"'È4ð
hð 
hð 
hð 
hð 
hð 
hðð ð ð ð
ð ð ð ð/ð /ð /ð /ð
)ð )ð )ð )ð6ð 6ð 6ð 6ðJð Jð Jð Jð9ð 9ð 9ð 9ð ð%ð %ð %ñ „[ð%ð2ð 2ð 2ð 2ð 2ð 2ðð ð ð ðIð Ið Ið Ið Ið Ið Ið Ir4   rõ   c                  ó�   ‡ — e Zd ZdZdddddœd*d„Zd+d„Zd,d„Zd-d„Zd-d„Zd-d„Z	d.d „Z
d/d"„Zd0d$„Zd1d%„Zd-ˆ fd&„Zd-d'„Zd2d)„Zˆ xZS )3ÚDmdDCompilerr#   NFr8  r<  r6   r   r>   r=  r   r{   r>  r?  r9  r@  r±   rA  r:  r.   r;  rH   c               ó¦   — t                                | |||||||||	¬¦
  «
         t                               | |¦  «         d„ dD ¦   «         | _        d S )Nr8  c                ó,   — h | ]}t          |¦  «        ’ŒS r9   r¨  r©  s     r2   r«  z(DmdDCompiler.__init__.<locals>.<setcomp>º  rÔ  r4   rÕ  )r6  r3   r,   rµ  )
r1   r<  r   r=  r{   r?  r9  r±   r:  r;  s
             r2   r3   zDmdDCompiler.__init__°  so   € õ 	×Ò˜4 ¨'°;ÀÀdØ'2¸6Ø(4¸xð 	ñ 	Iô 	Ið 	Iõ 	×%Ò% d¨GÑ4Ô4Ð4ØgÐgÐ3fÐgÑgÔgˆÔÐÐr4   r¹  r5   c                ó   — |dk    rdgS g S )Nr×  z	-color=onr9   rØ  s     r2   r»  zDmdDCompiler.get_colorout_args¼  s   € Ø˜Ò Ð Ø�=Ð Øˆ	r4   r¨   c                ól   — |dk    r"|                       ¦   «         t          |         z   S t          |         S rª   )r;   r   r¬   s     r2   r¿  zDmdDCompiler.get_buildtype_argsÁ  rÛ  r4   c                óv   — | j                              ¦   «         r| j        dk    rdgS | j        dk    rdgS dgS g S )Nrh  úphobos64.libÚ
x86_mscoffúphobos32mscoff.libú
phobos.librk  r:   s    r2   Úget_std_exe_link_argsz"DmdDCompiler.get_std_exe_link_argsÆ  sS   € ØŒ9×ÒÑ!Ô!ð 	"ð Œy˜HÒ$Ð$Ø&Ð'Ð'Ø”˜lÒ*Ð*Ø,Ð-Ð-Ø �>Ð!Øˆ	r4   c                ó‚   — d}| j                              ¦   «         r| j        dk    rd}n| j        dk    rd}nd}dd|z   gS )	Nzlibphobos2.sorh  rü  rý  rþ  rÿ  z-sharedz-defaultlib=rk  )r1   Úlibnames     r2   Úget_std_shared_lib_link_argsz)DmdDCompiler.get_std_shared_lib_link_argsÑ  sZ   € Ø!ˆØŒ9×ÒÑ!Ô!ð 	'ØŒy˜HÒ$Ð$Ø(��Ø”˜lÒ*Ð*Ø.��à&�Ø˜>¨GÑ3Ð4Ð4r4   c                óv   — | j                              ¦   «         r| j        dk    rdgS | j        dk    rdgS dgS g S )Nrh  ri  rý  z
-m32mscoffrj  rk  r:   s    r2   r;   z"DmdDCompiler._get_target_arch_argsÜ  sO   € ð Œ9×ÒÑ!Ô!ð 	ØŒy˜HÒ$Ð$Ø�x�Ø”˜lÒ*Ð*Ø$�~Ð%Ø�8ˆOØˆ	r4   rþ   c                ó.   — |                       ||¦  «        S r8   rÞ  rm  s      r2   rn  z!DmdDCompiler.get_crt_compile_argsè  rß  r4   rÇ   c                óN   — |                       || j        | j        j        ¦  «        S r8   rá  r  s     r2   râ  z DmdDCompiler.unix_args_to_nativeë  rã  r4   rä  c                ó   — t           |         S r8   )Údmd_optimization_argsrç  s     r2   rè  z"DmdDCompiler.get_optimization_argsî  ré  r4   c                ó   — dS )NFr9   r:   s    r2   Úcan_linker_accept_rspz"DmdDCompiler.can_linker_accept_rspñ  s   € Øˆur4   c                óˆ   •— t          ¦   «                              ¦   «         }| j                             ¦   «         r|S |ddgz   S )Nz-defaultlib=phobos2z-debuglib=phobos2rÃ  rÅ  s     €r2   rÄ  z#DmdDCompiler.get_linker_always_argsô  sE   ø€ Ý‰wŒw×-Ò-Ñ/Ô/ˆØŒ9×ÒÑ!Ô!ð 	ØˆKØÐ,Ð.AÐBÑBÐBr4   c                ó   — dgS )Nz-releaser9   r:   s    r2   rÇ  z$DmdDCompiler.get_disable_assert_argsú  s
   € Øˆ|Ðr4   r   c                ó   — t           j        S r8   )r   rï  r:   s    r2   rñ  zDmdDCompiler.rsp_file_syntaxý  s   € ÝÔ!Ð!r4   r   rÉ  r&  r   r'  rò  ró  r¡  rô  )r(  r)  r*  r‹   r3   r»  r¿  r   r  r;   rn  râ  rè  r
  rÄ  rÇ  rñ  r/  r0  s   @r2   rö  rö  ¬  s[  ø€ € € € € à	€Bð ?CØ7;Ø15Ø"'ð
hð 
hð 
hð 
hð 
hð 
hðð ð ð ð
/ð /ð /ð /ð
	ð 	ð 	ð 	ð	5ð 	5ð 	5ð 	5ð
ð 
ð 
ð 
ð6ð 6ð 6ð 6ðJð Jð Jð Jð9ð 9ð 9ð 9ðð ð ð ðCð Cð Cð Cð Cð Cðð ð ð ð"ð "ð "ð "ð "ð "ð "ð "r4   rö  )rÊ  r.   r5   r.   )4Ú
__future__r   Úos.pathrW   rÌ  rM  Útypingr,  rJ   r   r   Úarglistr   Úlinkersr   r	   r
   r   r   r   r   r   r   r   r   r   Ú
mixins.gnur   r   r-  rw  r   Úprogramsr   Ú	envconfigr   rD  r   r   r   ÚCompilerMixinBaseÚobjectrŠ   ræ  r  r,   r2  r6  r¤  rÐ  rõ   rö  r9   r4   r2   ú<module>r     sÙ  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø /Ð /Ð /Ð /Ð /Ð /à„?ð 
Ø)Ð)Ð)Ð)Ð)Ð)Ø*Ð*Ð*Ð*Ð*Ð*Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)Ø'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(à ÐÐàÐà'3Ø$-Ø&1Ø)-ðð ð
 (3Ø$.Ø&2Ø)-ðð ð
 (3Ø$,Ø&0Ø)-ðð ðð €ð" #%Ø Ø Ø$˜gØ$˜gØ$˜gØ$˜gðð Ð ð #%Ø Ø Ø#˜fØ#˜fØ#˜fØ#˜fðð Ð ðsð sð sð sð sÐ,ñ sô sð sðlð ð ð ð �Lñ ô ð ð
Aeð Aeð Aeð Aeð Ae�ñ Aeô Aeð AeðFDð Dð Dð Dð D�; 	ñ Dô Dð DðXð ð ð ð>Ið >Ið >Ið >Ið >IÐ(¨)ñ >Iô >Ið >IðBR"ð R"ð R"ð R"ð R"Ð'¨ñ R"ô R"ð R"ð R"ð R"r4   