§
    ˆã÷c° ã                  óì  — d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlZd dlZd dlZd dl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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$ ddl%m&Z&m'Z' ddlm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddlm0Z0m1Z1m2Z2 d	dlm3Z3 ddlm4Z4m5Z5 ej6        r4d dl7m8Z8 ddl9m:Z: ddlm;Z; ddl<m=Z= ddl%m>Z>m?Z? ddl@mAZA ddlBmCZC e8d          ZDd!ZEd"ZFd#ZGd$ZHd%„ ZId&„ ZJ ejK        ¦   «         reIZLd'd(gZMg d)¢ZNne/ZLg ZMg d*¢ZNd+„ ZO eO¦   «         ZPh d,£ZQ ejR        d-¦  «        ZS ejR        d.¦  «        ZTdLdMd3„ZU G d4„ d5¦  «        ZVe G d6„ d7e¦  «        ¦   «         ZW G d8„ d9¦  «        ZX G d:„ d;¦  «        ZY G d<„ d=¦  «        ZZ G d>„ d?¦  «        Z[e G d@„ dA¦  «        ¦   «         Z\e G dB„ dC¦  «        ¦   «         Z] G dD„ dEej^        ¦  «        Z_dNdK„Z`dS )Oé    )Úannotations)ÚOrderedDict)Ú	dataclass)ÚEnumÚunique)Ú	lru_cache)ÚPurePathÚPath)ÚdedentNé   )Úbackendsé   )Úmodules)Úgnome)ÚenvironmentÚmesonlib)Úbuild)Úmlog)Ú	compilers)ÚCompilerArgs)ÚCompiler)ÚArLinkerÚRSPFileSyntax)ÚFileÚLibTypeÚMachineChoiceÚMesonExceptionÚ
OrderedSetÚ
PerMachineÚProgressBarÚ	quote_arg)Úget_compiler_for_sourceÚhas_path_sepÚ	OptionKey)Ú
CleanTrees)ÚGeneratedListÚInvalidArguments)ÚLiteral)ÚImmutableListProtocol)ÚExtractedObjects)ÚInterpreter)ÚDynamicLinkerÚStaticLinker)Ú
CsCompiler)ÚFortranCompiler)Ú2015Ú2018Ú2021z$^\s*#?include\s*['\"](\w+\.\w+)['\"]z#^\s*\bmodule\b\s+(\w+)\s*(?:!+.*)*$z*^\s*\bsubmodule\b\s*\((\w+:?\w+)\)\s*(\w+)z0^\s*use,?\s*(?:non_intrinsic)?\s*(?:::)?\s*(\w+)c                ón   — t          j        dd„ | ¦  «        } t          j        dd„ | ¦  «        } d| › d�} | S )Nz(\\*)"c                ó^   — dt          |                      d¦  «        ¦  «        dz  dz   z  dz   S )Nú\r   r   ú"©ÚlenÚgroup©Úms    úA/usr/lib/python3/dist-packages/mesonbuild/backend/ninjabackend.pyú<lambda>zcmd_quote.<locals>.<lambda>H   s*   €  D­C°·²¸±
´
©O¬O¸aÑ,?À!Ñ,CÑ$DÀsÑ$J€ ó    z(\\*)$c                óR   — dt          |                      d¦  «        ¦  «        dz  z  S )Nr5   r   r   r7   r:   s    r<   r=   zcmd_quote.<locals>.<lambda>J   s    €  D­C°·²¸±
´
©O¬O¸aÑ,?Ñ$@€ r>   r6   )ÚreÚsub©Úss    r<   Ú	cmd_quoterD   C   sD   € õ
 	ŒˆyÐJÐJÈAÑNÔN€Aå
ŒˆyÐ@Ð@À!ÑDÔD€AàˆAˆˆˆ€Aà€Hr>   c                óV   — |                       dd¦  «        } t          j        | ¦  «        S )Nr5   ú\\)ÚreplaceÚshlexÚquoterB   s    r<   Úgcc_rsp_quoterJ   P   s%   € ð 	
�	Š	�$˜ÑÔ€AåŒ;�q‰>Œ>Ðr>   Úcmdú/c)Údelz/fz/sz/qú{}ú&&)Úrmz-frN   rO   c                 ó–   — t          j        ¦   «         rd} nd} | dz  } t          t          j                             d| ¦  «        ¦  «        S )zÉReturn a conservative estimate of the commandline size in bytes
    above which a response file should be used.  May be overridden for
    debugging by setting environment variable MESON_RSP_THRESHOLD.i    i   r   ÚMESON_RSP_THRESHOLD)r   Ú
is_windowsÚintÚosÚenvironÚget)Úlimits    r<   Úget_rsp_thresholdrY   f   sM   € õ
 ÔÑÔð ð ˆˆð
 ˆà�A‰I€EÝ�rŒz�~Š~Ð3°UÑ;Ô;Ñ<Ô<Ð<r>   >   ÚDESCÚpoolÚdyndepÚ	targetdepÚdescriptionÚDEPFILE_UNQUOTEDz[$ :\n]z[$ \n]FÚtextÚstrÚreturnc                ó°   — |rt           }nt          }|                     | ¦  «        s| S d| v rd| › d�}t          |¦  «        ‚|                     d| ¦  «        S )Nú
z<Ninja does not support newlines in rules. The content was:

zE

Please report this error with a test case to the Meson bug tracker.z$\g<0>)ÚNINJA_QUOTE_BUILD_PATÚNINJA_QUOTE_VAR_PATÚsearchr   rA   )r`   Úis_build_lineÚquote_reÚerrmsgs       r<   Úninja_quoterk   „   sy   € Øð 'Ý(ˆˆå&ˆà�?Š?˜4Ñ Ô ð ØˆØˆt€|€|ðGàðGð Gð Gˆõ
 ˜VÑ$Ô$Ð$Ø�<Š<˜	 4Ñ(Ô(Ð(r>   c                  ó   — e Zd Zdd„ZdS )ÚTargetDependencyScannerInfoÚprivate_dirra   Úsource2objectúT.Dict[str, str]c                ó"   — || _         || _        d S ©N)rn   ro   )Úselfrn   ro   s      r<   Ú__init__z$TargetDependencyScannerInfo.__init__–   s   € Ø&ˆÔØ*ˆÔÐÐr>   N)rn   ra   ro   rp   )Ú__name__Ú
__module__Ú__qualname__rt   © r>   r<   rm   rm   •   s(   € € € € € ð+ð +ð +ð +ð +ð +r>   rm   c                  ó   — e Zd ZdZdZdZdZdS )ÚQuotingr   r   r   é   N)ru   rv   rw   ÚbothÚnotShellÚnotNinjaÚnonerx   r>   r<   rz   rz   š   s"   € € € € € à€DØ€HØ€HØ€D€D€Dr>   rz   c                  ó>   — e Zd Zej        fd„Zd„ Zed„ ¦   «         ZdS )ÚNinjaCommandArgc                ó"   — || _         || _        d S rr   )rC   Úquoting)rs   rC   rƒ   s      r<   rt   zNinjaCommandArg.__init__¢   s   € ØˆŒØˆŒˆˆr>   c                ó   — | j         S rr   rB   ©rs   s    r<   Ú__str__zNinjaCommandArg.__str__¦   s	   € ØŒvˆr>   c                ó    ‡— ˆfd„| D ¦   «         S )Nc                ó0   •— g | ]}t          |‰¦  «        ‘ŒS rx   )r�   )Ú.0ÚiÚqs     €r<   ú
<listcomp>z(NinjaCommandArg.list.<locals>.<listcomp>«   s#   ø€ Ð1Ð1Ð1¨!•  1Ñ%Ô%Ð1Ð1Ð1r>   rx   )Úlr‹   s    `r<   ÚlistzNinjaCommandArg.list©   s   ø€ à1Ð1Ð1Ð1¨qÐ1Ñ1Ô1Ð1r>   N)	ru   rv   rw   rz   r|   rt   r†   ÚstaticmethodrŽ   rx   r>   r<   r�   r�   ¡   sW   € € € € € Ø$+¤Lð ð ð ð ðð ð ð ð2ð 2ñ „\ð2ð 2ð 2r>   r�   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚNinjaCommentc                ó   — || _         d S rr   )Úcomment©rs   r“   s     r<   rt   zNinjaComment.__init__®   s   € ØˆŒˆˆr>   c                óè   — | j                              d¦  «        D ]A}|                     d¦  «         |                     |¦  «         |                     d¦  «         ŒB|                     d¦  «         d S )Nrd   z# )r“   ÚsplitÚwrite)rs   Úoutfiler�   s      r<   r—   zNinjaComment.write±   sr   € Ø”×#Ò# DÑ)Ô)ð 	 ð 	 ˆAØ�MŠM˜$ÑÔÐØ�MŠM˜!ÑÔÐØ�MŠM˜$ÑÔÐÐØ�Š�dÑÔÐÐÐr>   N)ru   rv   rw   rt   r—   rx   r>   r<   r‘   r‘   ­   s2   € € € € € ðð ð ðð ð ð ð r>   r‘   c                  óR   — e Zd Zddddej        fd	d„Zeefd„¦   «         Zd„ Z	d„ Z
dS )
Ú	NinjaRuleFNÚrspfile_quote_styler   c
                ó  ‡
— d„ Š
|| _         ˆ
fd„|D ¦   «         | _        ˆ
fd„|D ¦   «         | _        || _        || _        || _        || _        || _        d| _        d| _	        |	| _
        | j        dk    r| xj        dz  c_        d S d S )Nc                ó‚  — t          | t          ¦  «        r| S | dk    rt          | t          j        ¦  «        S |                      d¦  «        ret          j        d| ¦  «                             d¦  «        }|t          vrt          | t          j	        ¦  «        S t          | t          j
        ¦  «        S t          | ¦  «        S )NrO   ú$z\$\{?(\w*)\}?r   )Ú
isinstancer�   rz   r}   Ú
startswithr@   rg   r9   Ú	raw_namesr   r~   )ÚcÚvars     r<   ÚstrToCommandArgz+NinjaRule.__init__.<locals>.strToCommandArg½   s®   € Ý˜!�_Ñ-Ô-ð Ø�ð �DŠyˆyå& q­'Ô*:Ñ;Ô;Ð;Ø�|Š|˜CÑ Ô ð 	@Ý”iÐ 0°!Ñ4Ô4×:Ò:¸1Ñ=Ô=�Ø�iÐ'Ð'õ +¨1­g¬lÑ;Ô;Ð;õ +¨1­gÔ.>Ñ?Ô?Ð?å" 1Ñ%Ô%Ð%r>   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rx   rx   )r‰   r¢   r¤   s     €r<   rŒ   z&NinjaRule.__init__.<locals>.<listcomp>Ô   s#   ø€ Ð<Ð<Ð<¨q˜˜¨Ñ*Ô*Ð<Ð<Ð<r>   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rx   rx   )r‰   Úar¤   s     €r<   rŒ   z&NinjaRule.__init__.<locals>.<listcomp>Õ   s#   ø€ Ð6Ð6Ð6¨A�_�_ QÑ'Ô'Ð6Ð6Ð6r>   r   ú$DEPFILEÚ	_UNQUOTED)ÚnameÚcommandÚargsr^   ÚdepsÚdepfileÚextraÚrspableÚrefcountÚrsprefcountr›   )rs   Úruler«   r¬   r^   r°   r­   r®   r¯   r›   r¤   s             @r<   rt   zNinjaRule.__init__¹   sµ   ø€ ð	&ð 	&ð 	&ð, ˆŒ	Ø<Ð<Ð<Ð<°GÐ<Ñ<Ô<ˆŒØ6Ð6Ð6Ð6°Ð6Ñ6Ô6ˆŒ	Ø&ˆÔØˆŒ	ØˆŒØˆŒ
ØˆŒØˆŒØˆÔØ#6ˆÔ àŒ<˜:Ò%Ð%ØˆLŒL˜KÑ'ˆLŒLˆLˆLð &Ð%r>   c                óJ  — t          | t          ¦  «        rj| j        t          j        k    r| j        S | j        t          j        k    r || j        ¦  «        S | j        t          j        k    rt          | j        ¦  «        S t           |t          | ¦  «        ¦  «        ¦  «        S rr   )
rŸ   r�   rƒ   rz   r   rC   r~   r}   rk   ra   )ÚxÚqfs     r<   Ú_quoterzNinjaRule._quoterâ   s…   € å�a�Ñ)Ô)ð 	(ØŒy�GœLÒ(Ð(Ø”s�
Ø”�gÔ.Ò.Ð.Ø�r˜!œ#‘w”w�Ø”�gÔ.Ò.Ð.Ý" 1¤3Ñ'Ô'Ð'å˜2˜2�c !™fœf™:œ:Ñ&Ô&Ð&r>   c           
     óˆ  ‡ ‡— ‰ j         t          j        u rt          Šnt          Šˆ fd„} |¦   «         D �]}|                     d‰ j        › |› d�¦  «         |dk    r¯|                     d                     d                     ˆ fd„‰ j	        D ¦   «         ¦  «        ¦  «        ¦  «         |                     d¦  «         |                     d	                     d                     ˆˆ fd
„‰ j
        D ¦   «         ¦  «        ¦  «        ¦  «         nT|                     d                     d                     ˆ fd„‰ j	        ‰ j
        z   D ¦   «         ¦  «        ¦  «        ¦  «         ‰ j        r|                     d‰ j        › d�¦  «         ‰ j        r|                     d‰ j        › d�¦  «         |                     d‰ j        › d�¦  «         ‰ j        r\‰ j                             d¦  «        D ]A}|                     d¦  «         |                     |¦  «         |                     d¦  «         ŒB|                     d¦  «         �Œd S )Nc               3  ó<   •K  — ‰ j         rdV — ‰ j        rdV — d S d S )NÚ Ú_RSP)r±   r²   r…   s   €r<   Ú	rule_iterz"NinjaRule.write.<locals>.rule_iterô   s<   øè è € ØŒ}ð Ø���ØÔð Ø�����ðð r>   zrule rd   r»   z command = {} @$out.rsp
ú c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   ©r·   ©r‰   rµ   rs   s     €r<   rŒ   z#NinjaRule.write.<locals>.<listcomp>ý   s%   ø€ ÐJqÐJqÐJqÐ_`È4Ï<Ê<ÐXYÉ?Ì?ÐJqÐJqÐJqr>   z rspfile = $out.rsp
z rspfile_content = {}
c                ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rx   r¿   )r‰   rµ   Úrspfile_quote_funcrs   s     €€r<   rŒ   z#NinjaRule.write.<locals>.<listcomp>ÿ   sB   ø€ ð  IAð  IAð  IAÐqrÈÏÊÐVWÐYkÑIlÔIlð  IAð  IAð  IAr>   z command = {}
c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   r¿   rÀ   s     €r<   rŒ   z#NinjaRule.write.<locals>.<listcomp>  s$   ø€ Ð@sÐ@sÐ@sÐUVÀÇÂÈaÁÄÐ@sÐ@sÐ@sr>   z deps = z depfile = z description = )r›   r   ÚMSVCrD   rJ   r—   rª   ÚformatÚjoinr«   r¬   r­   r®   r^   r¯   r–   )rs   r˜   r¼   Úrspr�   rÂ   s   `    @r<   r—   zNinjaRule.writeî   s¦  øø€ ØÔ#¥}Ô'9Ð9Ð9Ý!*ÐÐå!.Ðð	ð 	ð 	ð 	ð 	ð �9‘;”;ð 	 ñ 	 ˆCØ�MŠMÐ4 $¤)Ð4¨SÐ4Ð4Ð4Ñ5Ô5Ð5Ø�fŠ}ˆ}Ø—’Ð9×@Ò@ÀÇÂÐJqÐJqÐJqÐJqÐdhÔdpÐJqÑJqÔJqÑArÔArÑsÔsÑtÔtÐtØ—’Ð5Ñ6Ô6Ð6Ø—’Ð7×>Ò>¸s¿xºxð  IAð  IAð  IAð  IAð  IAÐvzÔvð  IAñ  IAô  IAñ  @Bô  @Bñ  Cô  Cñ  Dô  Dð  Dð  Dà—’Ð/×6Ò6°s·x²xÐ@sÐ@sÐ@sÐ@sÐZ^ÔZfÐimÔirÑZrÐ@sÑ@sÔ@sÑ7tÔ7tÑuÔuÑvÔvÐvØŒyð 8Ø—’Ð6¨¬Ð6Ð6Ð6Ñ7Ô7Ð7ØŒ|ð >Ø—’Ð<¨D¬LÐ<Ð<Ð<Ñ=Ô=Ð=Ø�MŠMÐ@¨DÔ,<Ð@Ð@Ð@ÑAÔAÐAØŒzð (Øœ×)Ò)¨$Ñ/Ô/ð (ð (�AØ—M’M #Ñ&Ô&Ð&Ø—M’M !Ñ$Ô$Ð$Ø—M’M $Ñ'Ô'Ð'Ð'Ø�MŠM˜$ÑÔÐÑð%	 ð 	 r>   c                ó†  ‡ — i }|D ]}|\  }}|||<   Œ‰ j         |d<   ‰ j        |d<   ||d<   ||d<   d                     ˆ fd„‰ j        ‰ j        z   D ¦   «         ¦  «        }t          |¦  «        }	t          j        d|¦  «        D ]½}
|
                     d¦  «        d	k    r¢|	|
 	                    d¦  «        |
                     d¦  «        z
  dz   z  }	|
 
                    d¦  «        }|d         d
k    r|dd	…         }n
|dd …         }|                     |g ¦  «        }|	t          d                     |¦  «        ¦  «        z  }	Œ¾|	S )Nr­   r®   ÚinÚoutr½   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   r¿   rÀ   s     €r<   rŒ   z-NinjaRule.length_estimate.<locals>.<listcomp>  s#   ø€ ÐNÐNÐN°˜DŸLšL¨™OœOÐNÐNÐNr>   z(\${\w+}|\$\w+)?[^$]*r   éÿÿÿÿú{r   )r­   r®   rÆ   r«   r¬   r8   r@   ÚfinditerÚstartÚendr9   rW   )rs   ÚinfilesÚoutfilesÚelemsÚ
ninja_varsÚerª   Úvaluer«   Úestimater;   Úchunks   `           r<   Úlength_estimatezNinjaRule.length_estimate  s_  ø€ ð ˆ
Øð 	%ð 	%ˆAØ‰MˆT�5Ø$ˆJ�tÑÐØ!œYˆ
�6ÑØ $¤ˆ
�9ÑØ"ˆ
�4ÑØ$ˆ
�5Ñð —(’(ÐNÐNÐNÐN°T´\ÀDÄIÑ5MÐNÑNÔNÑOÔOˆÝ�w‘<”<ˆÝ”Ð5°wÑ?Ô?ð 		1ð 		1ˆAØ�wŠw�q‰zŒz˜RÒÐØ˜AŸEšE !™HœH q§w¢w¨q¡z¤zÑ1°AÑ5Ñ5�ØŸš ™
œ
�Ø˜”8˜s’?�?Ø! ! B $œK�E�Eà! ! " "œI�EØ"Ÿš u¨bÑ1Ô1�Ø�C §¢¨¡¤Ñ0Ô0Ñ0�øð ˆr>   )r›   r   )ru   rv   rw   r   ÚGCCrt   r�   Ú
quote_funcr·   r—   rÙ   rx   r>   r<   rš   rš   ¸   s   € € € € € à ¨¸ÀtØ6CÔ6Gð'(ð '(ð '(ð '(ð '(ðR Ø"ð 	'ð 	'ð 	'ñ „\ð	'ð ð  ð  ð@ð ð ð ð r>   rš   c                  ó@   — e Zd Zd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
dS )ÚNinjaBuildElementNc                ó^  — |pg | _         t          |t          ¦  «        r	|g| _        n|| _        t          |t          ¦  «        sJ ‚|| _        t          |t          ¦  «        r	|g| _        n|| _        t          ¦   «         | _        t          ¦   «         | _        g | _	        || _
        d| _        d S ©Nrº   )Úimplicit_outfilenamesrŸ   ra   ÚoutfilenamesÚrulenameÚinfilenamesr   r­   Ú	orderdepsrÓ   Úall_outputsÚoutput_errors)rs   rå   rá   râ   rã   Úimplicit_outss         r<   rt   zNinjaBuildElement.__init__-  s­   € Ø%2Ð%8°bˆÔ"Ý�l¥CÑ(Ô(ð 	-Ø!- ˆDÔÐà ,ˆDÔÝ˜(¥CÑ(Ô(Ð(Ð(Ð(Ø ˆŒÝ�k¥3Ñ'Ô'ð 	+Ø +˜}ˆDÔÐà*ˆDÔÝ‘L”LˆŒ	Ý#™œˆŒØˆŒ
Ø&ˆÔØˆÔÐÐr>   c                óœ   — t          |t          ¦  «        r| j                             |¦  «         d S | j                             |¦  «         d S rr   )rŸ   rŽ   r­   ÚupdateÚadd©rs   Údeps     r<   Úadd_depzNinjaBuildElement.add_dep?  sJ   € Ý�c�4Ñ Ô ð 	ØŒI×Ò˜SÑ!Ô!Ð!Ð!Ð!àŒI�MŠM˜#ÑÔÐÐÐr>   c                óœ   — t          |t          ¦  «        r| j                             |¦  «         d S | j                             |¦  «         d S rr   )rŸ   rŽ   rä   ré   rê   rë   s     r<   Úadd_orderdepzNinjaBuildElement.add_orderdepE  sL   € Ý�c�4Ñ Ô ð 	$ØŒN×!Ò! #Ñ&Ô&Ð&Ð&Ð&àŒN×Ò˜sÑ#Ô#Ð#Ð#Ð#r>   c                ó  — t          |t          ¦  «        r|                     ¦   «         }t          |t          ¦  «        r|g}| j                             ||f¦  «         |dk    r!| j                             |dz   |f¦  «         d S d S )NÚDEPFILEr©   )rŸ   r   Ú	to_nativera   rÓ   Úappend)rs   rª   rÓ   s      r<   Úadd_itemzNinjaBuildElement.add_itemK  s‘   € õ �e�\Ñ*Ô*ð 	&Ø—O’OÑ%Ô%ˆEÝ�e�SÑ!Ô!ð 	Ø�GˆEØŒ
×Ò˜4 ˜-Ñ(Ô(Ð(à�9ÒÐØŒJ×Ò˜t kÑ1°5Ð9Ñ:Ô:Ð:Ð:Ð:ð Ðr>   c                ó  — | j         dk    rdS | j        j        sdS d                     d„ | j        D ¦   «         ¦  «        }d                     d„ | j        D ¦   «         ¦  «        }| j                             ||| j        ¦  «        t          k    S )NÚphonyFr½   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS ©T©rk   ©r‰   rŠ   s     r<   rŒ   z9NinjaBuildElement._should_use_rspfile.<locals>.<listcomp>_  s"   € ÐOÐOÐO¸¥¨A¨tÑ 4Ô 4ÐOÐOÐOr>   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   rú   s     r<   rŒ   z9NinjaBuildElement._should_use_rspfile.<locals>.<listcomp>`  s"   € Ð QÐ QÐ Q¸!¥¨Q°Ñ!5Ô!5Ð QÐ QÐ Qr>   )	râ   r³   r°   rÆ   rã   rá   rÙ   rÓ   Úrsp_threshold)rs   rã   rá   s      r<   Ú_should_use_rspfilez%NinjaBuildElement._should_use_rspfileW  sš   € àŒ=˜GÒ#Ð#Ø�5àŒyÔ ð 	Ø�5à—h’hÐOÐO¸dÔ>NÐOÑOÔOÑPÔPˆØ—x’xÐ QÐ Q¸tÔ?PÐ QÑ QÔ QÑRÔRˆàŒy×(Ò(¨Ø)5Ø)-¬ñ5ô 5å8EòFð 	Fr>   c                ó    — | j         dk    rB|                      ¦   «         r| j        xj        dz  c_        d S | j        xj        dz  c_        d S d S )Nrö   r   )râ   rý   r³   r²   r±   r…   s    r<   Úcount_rule_referencesz'NinjaBuildElement.count_rule_referencesf  sc   € ØŒ=˜GÒ#Ð#Ø×'Ò'Ñ)Ô)ð (Ø”	Ð%Ô%¨Ñ*Ð%Ô%Ð%Ð%à”	Ð"Ô" aÑ'Ð"Ô"Ð"Ð"ð	 $Ð#r>   c           	     óÒ  — | j         rt          | j         ¦  «        ‚d                     d„ | j        D ¦   «         ¦  «        }d                     d„ | j        D ¦   «         ¦  «        }d                     d„ | j        D ¦   «         ¦  «        }|rd|z   }|                      ¦   «         }|r(| j        dz   }t          j	        d| j        › d�¦  «         n| j        }d	|› |› d
|› d|› �}t          | j        ¦  «        dk    r7|dd                     d„ t          | j        ¦  «        D ¦   «         ¦  «        z   z  }t          | j        ¦  «        dk    r7|dd                     d„ t          | j        ¦  «        D ¦   «         ¦  «        z   z  }|dz  }|                     dd¦  «        }t          j        ¦   «         r2d                     d„ |                     d¦  «        D ¦   «         ¦  «        }|                     |¦  «         |r(| j        j        t*          j        u rt.          }nt0          }nt2          }| j        D ]¥}	|	\  }
}|
t6          v}d|
› d�}g }|D ]X}|r|dk    r#|                     t;          |¦  «        ¦  «         Œ-|                     t;           ||¦  «        ¦  «        ¦  «         ŒY|d                     |¦  «        z  }|dz  }|                     |¦  «         Œ¦|                     d¦  «         d S )Nr½   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   rú   s     r<   rŒ   z+NinjaBuildElement.write.<locals>.<listcomp>p  s"   € ÐGÐGÐG°� A tÑ,Ô,ÐGÐGÐGr>   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   rú   s     r<   rŒ   z+NinjaBuildElement.write.<locals>.<listcomp>q  s"   € ÐIÐIÐI°!� Q¨Ñ-Ô-ÐIÐIÐIr>   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   rú   s     r<   rŒ   z+NinjaBuildElement.write.<locals>.<listcomp>r  s"   € Ð![Ð![Ð![¸1¥+¨a°Ñ"6Ô"6Ð![Ð![Ð![r>   z | r»   zCommand line for building z is long, using a response filezbuild z: r   c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   ©r‰   rµ   s     r<   rŒ   z+NinjaBuildElement.write.<locals>.<listcomp>}  s"   € Ð%VÐ%VÐ%V¸q¥k°!°TÑ&:Ô&:Ð%VÐ%VÐ%Vr>   z || c                ó.   — g | ]}t          |d ¦  «        ‘ŒS rø   rù   r  s     r<   rŒ   z+NinjaBuildElement.write.<locals>.<listcomp>  s"   € Ð&\Ð&\Ð&\À¥{°1°dÑ';Ô';Ð&\Ð&\Ð&\r>   rd   r5   ú/c              3  ór   K  — | ]2}|                      d ¦  «        r|                     d dd¦  «        n|V — Œ3dS )z//rF   r   N)r    rG   )r‰   r�   s     r<   ú	<genexpr>z*NinjaBuildElement.write.<locals>.<genexpr>Š  s\   è è € ð ð àð 01¯|ª|¸DÑ/AÔ/AÐH�—’˜4 ¨Ñ+Ô+Ð+Àqðð ð ð ð ð r>   z = rO   )ræ   r   rÆ   rã   rá   rà   rý   râ   r   Údebugr8   r­   Úsortedrä   rG   r   rS   r–   r—   r³   r›   r   rÄ   rD   rJ   rÛ   rÓ   r¡   ró   rk   )rs   r˜   ÚinsÚoutsrç   Úuse_rspfilerâ   Úliner¶   rÕ   rª   rÓ   Úshould_quoteÚnewelemsrŠ   s                  r<   r—   zNinjaBuildElement.writem  s&  € ØÔð 	5Ý  Ô!3Ñ4Ô4Ð4Ø�hŠhÐGÐG°dÔ6FÐGÑGÔGÑHÔHˆØ�xŠxÐIÐI°tÔ7HÐIÑIÔIÑJÔJˆØŸšÐ![Ð![ÀÔ@ZÐ![Ñ![Ô![Ñ\Ô\ˆØð 	2Ø! MÑ1ˆMØ×.Ò.Ñ0Ô0ˆØð 	%Ø”} vÑ-ˆHÝŒJÐf°DÔ4EÐfÐfÐfÑgÔgÐgÐgà”}ˆHØ?˜Ð?˜mÐ?Ð?¨xÐ?Ð?¸#Ð?Ð?ˆÝˆtŒy‰>Œ>˜AÒÐØ�E˜CŸHšHÐ%VÐ%VÅFÈ4Ì9ÑDUÔDUÐ%VÑ%VÔ%VÑWÔWÑWÑWˆDÝˆtŒ~ÑÔ Ò"Ð"Ø�F˜SŸXšXÐ&\Ð&\ÅVÈDÌNÑE[ÔE[Ð&\Ñ&\Ô&\Ñ]Ô]Ñ]Ñ]ˆDØ�‰ˆð �|Š|˜D #Ñ&Ô&ˆÝÔÑ Ô ð 	ð —8’8ð ð àŸš C™œðñ ô ñ ô ˆDð 	�Š�dÑÔÐàð 	ØŒyÔ,µÔ0BÐBÐBÝ��å"��åˆBà”ð 	 ð 	 ˆAØ‰MˆT�5Ø¥yÐ0ˆLØ �t�=�=�=ˆDØˆHØð 8ð 8�Ø#ð 8 q¨D¢y yØ—O’O¥K°¡N¤NÑ3Ô3Ð3Ð3à—O’O¥K°°°1±´Ñ$6Ô$6Ñ7Ô7Ð7Ð7Ø�C—H’H˜XÑ&Ô&Ñ&ˆDØ�D‰LˆDØ�MŠM˜$ÑÔÐÐØ�Š�dÑÔÐÐÐr>   c                óV   — | j         D ] }|| j        v rd|› d�| _        d| j        |<   Œ!d S )Nz%Multiple producers for Ninja target "z". Please rename your targets.T)rá   rå   ræ   )rs   Úns     r<   Úcheck_outputszNinjaBuildElement.check_outputs§  sO   € ØÔ"ð 	'ð 	'ˆAØ�DÔ$Ð$Ð$Ø%nÈQÐ%nÐ%nÐ%n�Ô"Ø"&ˆDÔ˜QÑÐð	'ð 	'r>   rr   )ru   rv   rw   rt   rí   rï   rô   rý   rÿ   r—   r  rx   r>   r<   rÝ   rÝ   ,  s•   € € € € € ð ð  ð  ð  ð$ð ð ð$ð $ð $ð
;ð 
;ð 
;ðFð Fð Fð(ð (ð (ð8ð 8ð 8ðt'ð 'ð 'ð 'ð 'r>   rÝ   c                  ó,   — e Zd ZU ded<   ded<   d	d„ZdS )
ÚRustDepra   rª   rT   Úcraterb   úT.Dict[str, object]c                ó    — | j         | j        dœS )N©r  rª   r  r…   s    r<   Úto_jsonzRustDep.to_jsonµ  s   € à”ZØ”Ið
ð 
ð 	
r>   N©rb   r  )ru   rv   rw   Ú__annotations__r  rx   r>   r<   r  r  ­  s@   € € € € € € ð €I€I�Ið €J€J�Jð
ð 
ð 
ð 
ð 
ð 
r>   r  c                  óv   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   dZded<   dd„ZdS )Ú	RustCraterT   Úorderra   Údisplay_nameÚroot_moduleÚRUST_EDITIONSÚeditionúT.List[RustDep]r­   úT.List[str]ÚcfgÚboolÚis_proc_macroÚis_workspace_memberNúT.Optional[str]Úproc_macro_dylib_pathrb   r  c                ó¬   — | j         | j        | j        | j        | j        d„ | j        D ¦   «         dœ}| j        r| j        €
J d¦   «         ‚| j        |d<   |S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS rx   ©r  )r‰   Úds     r<   rŒ   z%RustCrate.to_json.<locals>.<listcomp>Õ  s    € Ð4Ð4Ð4 Q�Q—Y’Y‘[”[Ð4Ð4Ð4r>   )r!  r"  r$  r'  r)  r­   zThis shouldn't happenr,  )r!  r"  r$  r'  r)  r­   r,  )rs   Úrets     r<   r  zRustCrate.to_jsonÎ  sv   € à Ô-ØÔ+Ø”|Ø”8Ø!Ô/Ø4Ð4¨$¬)Ð4Ñ4Ô4ð$
ð $
ˆð Ôð 	FØÔ-Ð9Ð9Ð;RÑ9Ô9Ð9Ø+/Ô+EˆCÐ'Ñ(àˆ
r>   r  )ru   rv   rw   r  r,  r  rx   r>   r<   r  r  »  s�   € € € € € € ð
 €J€J�JàÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑð ÐÐÑØ-1ÐÐ1Ð1Ð1Ñ1ðð ð ð ð ð r>   r  c                  ó  ‡ — e Zd ZdÇˆ fd„ZdÈd„Zd„ Zd	„ ZdÉd„Zd„ Zd„ Z	dÊd„Z
dÊd„Zd„ ZdËd„Zd„ ZdÌd„ZdÍd!„Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ Zd'„ ZdÎd)„Zd*„ ZdÏd.„ZdÏd/„Zd0„ Zd1„ Zd2„ Zd3„ Zd4„ Zd5„ Z d6„ Z!d7„ Z"d8„ Z#d9„ Z$dÐd;„Z%d<„ Z&dÑd=„Z'd>„ Z(d?„ Z)d@„ Z*dA„ Z+dÒdD„Z,dÓdF„Z-dÓdG„Z.dÔdL„Z/dÕdQ„Z0dÖd[„Z1d×d\„Z2e3dØd_„¦   «         Z4e5dÙdÚdc„¦   «         Z6e5dÛdf„¦   «         Z7e5dÛdg„¦   «         Z8dh„ Z9di„ Z:dj„ Z;dk„ Z<dl„ Z=dm„ Z>dÜdq„Z?dr„ Z@ds„ ZAdt„ ZBdÝdv„ZCdw„ ZDdÞdy„ZEdz„ ZFd{„ ZGdßd|„ZHdàd~„ZId„ ZJd€„ ZKd�„ ZLd‚„ ZMdƒ„ ZNd„„ ZOdÈd…„ZPdádˆ„ZQd‰„ ZRdâd‹„ZSdŒ„ ZTd�„ ZUdŽ„ ZVd�„ ZWd�„ ZX eYd¬‘¦  «        dãd–„¦   «         ZZ	 dädådš„Z[dæd›„Z\ eYd¬‘¦  «        	 dädçd�„¦   «         Z]	 	 	 dèdéd¡„Z^d¢„ Z_d£„ Z`d¤„ Zad¥„ Zbd¦„ Zcd§„ Zdd¨„ ZedÈd©„Zfdª„ Zgd«„ Zhd¬„ Zid­„ Zjd®„ Zkd¯„ Zl eYd¬‘¦  «        dêd°„¦   «         Zmd±„ Znd²„ Zodëdìdµ„Zpd¶„ Zqd·„ Zrdíd¹„Zsdº„ Ztd»„ Zud¼„ Zvd½„ ZwdÈd¾„Zxd¿„ ZydÀ„ ZzdÁ„ Z{dÂ„ Z|dÃ„ Z}dîˆ fdÆ„Z~ˆ xZS )ïÚNinjaBackendr   úT.Optional[build.Build]ÚinterpreterúT.Optional[Interpreter]c                óÊ   •— t          ¦   «                              ||¦  «         d| _        d| _        i | _        i | _        i | _        t          dd¦  «        | _        i | _	        d S )NÚninjaúbuild.ninjaF)
Úsuperrt   rª   Úninja_filenameÚfortran_depsrå   Úintrospection_datar   Úcreated_llvm_ir_ruleÚrust_crates)rs   r   r5  Ú	__class__s      €r<   rt   zNinjaBackend.__init__á  sd   ø€ Ý‰Œ×Ò˜ Ñ,Ô,Ð,ØˆŒ	Ø+ˆÔØˆÔØˆÔØ"$ˆÔÝ$.¨u°eÑ$<Ô$<ˆÔ!Ø35ˆÔÐÐr>   Nc                óÎ   — |                      d¦  «        rt          d|›�¦  «        ‚d|› �}t          ||d|¦  «        }|                      |¦  «         t          |||||¦  «        S )aL  
        We need to use aliases for targets that might be used as directory
        names to workaround a Ninja bug that breaks `ninja -t clean`.
        This is used for 'reserved' targets such as 'test', 'install',
        'benchmark', etc, and also for RunTargets.
        https://github.com/mesonbuild/meson/issues/1644
        zmeson-internal__z*Invalid usage of create_phony_target with rö   )r    ÚAssertionErrorrÝ   Ú	add_build)rs   rå   Údummy_outfilerâ   Úphony_infilenamerç   Úto_nameÚelems           r<   Úcreate_phony_targetz NinjaBackend.create_phony_targetë  s}   € ð ×#Ò#Ð$6Ñ7Ô7ð 	aÝ Ð!_ÈmÐ!_Ð!_Ñ`Ô`Ð`à4 ]Ð4Ð4ˆÝ  ¨m¸WÀgÑNÔNˆØ�Š�tÑÔÐå  ¨g°xÐAQÐS`ÑaÔaÐar>   c                óè  ‡‡— | j         j        j        j                             ¦   «         D ]X}|j        dv rŒ|j        dk    r't          j        ¦   «         rt          ‰dd¬¦  «        c S | 
                    ¦   «         dk    r nŒYt          ‰dd¬¦  «        S dt          j        |j                 d         z   }t          j                             | j                              ¦   «         |¦  «        }t          |d	d¬¦  «        5 }|                     t#          d
¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t%          j        |                     ¦   «         dd|gz   | j                              ¦   «         t$          j        t$          j        ¬¦  «        }|                     ¦   «         \  }}t/          j        d¦  «        Šˆˆfd„}	 |	|¦  «        p
 |	|¦  «        }
|
r|
S t3          d|› d|› �¦  «        ‚)z_VS writes its dependency in a locale dependent format.
        Detect the search prefix to use.>   ÚmasmÚfortranÚpgir§   úutf-8©ÚencodingÚmsvcz
incdetect.r   ÚwzI                #include<stdio.h>
                int dummy;
            Nz/showIncludesrL   )ÚcwdÚstdoutÚstderrs(   ^(.*\s)([a-zA-Z]:[\\/]|[\\\/]).*stdio.h$c                ó:  •— t          j        d| ¦  «        D ]ƒ}‰                     |¦  «        }|rjt          ‰d¦  «        5 }|                     d|                     d¦  «        z   dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   t          ‰dd¬¦  «        c S Œ„d S )	Ns   \r?\nÚabs   msvc_deps_prefix = r   ó   
r§   rM  rN  )r@   r–   ÚmatchÚopenr—   r9   )rÊ   r  rX  ÚbinfileÚmatchreÚtempfilenames       €€r<   Údetect_prefixz8NinjaBackend.detect_vs_dep_prefix.<locals>.detect_prefix.  sü   ø€ Ýœ ¨CÑ0Ô0ð Eð E�ØŸš dÑ+Ô+�Øð EÝ˜l¨DÑ1Ô1ð W°WØŸšÐ&<¸u¿{º{È1¹~¼~Ñ&MÐPUÑ&UÑVÔVÐVðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wå ¨c¸GÐDÑDÔDÐDÐDÐDðEð �4s   Á /A;Á;A?	ÂA?	z=Could not determine vs dep dependency prefix string. output: r½   )r   Úcoredatar   ÚhostÚvaluesÚlanguageÚidr   rS   rY  Úget_argument_syntaxÚlang_suffixesrU   ÚpathrÆ   Úget_scratch_dirr—   r   Ú
subprocessÚPopenÚget_exelistÚPIPEÚcommunicater@   Úcompiler   )rs   r\  ÚcompilerÚfilebaseÚfilenameÚfÚpcrS  rT  r]  Úresultr[  s    `         @r<   Údetect_vs_dep_prefixz!NinjaBackend.detect_vs_dep_prefixü  si  øø€ ð Ô(Ô1Ô;Ô@×GÒGÑIÔIð 	=ð 	=ˆHð Ô Ð$7Ð7Ð7ØØŒ{˜eÒ#Ð#­Ô(;Ñ(=Ô(=Ð#å˜L¨#¸Ð@Ñ@Ô@Ð@Ð@Ð@Ø×+Ò+Ñ-Ô-°Ò7Ð7Ø�ð 8õ ˜ c°GÐ<Ñ<Ô<Ð<Ø¥)Ô"9¸(Ô:KÔ"LÈQÔ"OÑOˆÝ”7—<’< Ô 0× @Ò @Ñ BÔ BØ (ñ*ô *ˆå�(˜C¨'Ð2Ñ2Ô2ð 	°aØ�GŠG•Fð ñ ô ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Ô˜h×2Ò2Ñ4Ô4Ø.°°hÐ?ñ@à"&Ô"2×"BÒ"BÑ"DÔ"DÝ%/¤_½Z¼_ðNñ Nô Nˆð Ÿ>š>Ñ+Ô+Ñˆ�õ ”*ÐIÑJÔJˆð	ð 	ð 	ð 	ð 	ð 	ð �˜vÑ&Ô&Ð?¨-¨-¸Ñ*?Ô*?ˆØð 	ØˆMåÐnÐ]cÐnÐnÐflÐnÐnÑoÔoÐos   Ã?#D.Ä.D2Ä5D2c                óè
  — t          j        d¬¦  «        }| j        j        rÃt	          | j                              ¦   «         ¦  «        }	 |                     t	          j        ¦   «         ¦  «        }n# t          $ r Y nw xY wt          j
        t          j        ¦   «         ¦  «        }t          j        ¦   «          t          j        d¦  «         t          j        |› d|› �¦  «         |€t          d¦  «        ‚|\  | _        | _        t"          j                             | j                              ¦   «         | j        ¦  «        }|dz   }t+          |dd¬	¦  «        5 }|                     d
| j                             ¦   «         › d�¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         | j         j        j        t5          d¦  «                 j        }|dk    r|                     d|› d�¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        5 }|                      ¦   «          g | _        |                      ¦   «          |                       tC          d¦  «        ¦  «         tE          | j         #                    ¦   «          $                    ¦   «         d¬¦  «        D ]}|  %                    |¦  «         Œ|                       tC          d¦  «        ¦  «         |  &                    ¦   «          |                       tC          d¦  «        ¦  «         |  '                    ¦   «          |  (                    ¦   «          t5          d¦  «        }	|	| j         j        j        v rˆ| j         j        j        |	         j        rlt          j)        ¦   «         \  }
}}}}|
s|r;|r9|                       tC          d¦  «        ¦  «         |  *                    |
|¦  «         nt          j+        d¦  «         |                       tC          d¦  «        ¦  «         |  ,                    ¦   «          |  -                    ¦   «          |  .                    |¦  «         |  /                    |¦  «         d}|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t#          j0        ||¦  «         t          j1        |¦  «         t          j2        | j        d¦  «        r[t"          j         3                    d¦  «        r<ti          j5        | j        dd gz   ¦  «         ti          j5        | j        dd!gz   ¦  «         |  6                    ¦   «          |  7                    ¦   «          d S )"NT)ÚlogzYVisual Studio environment is needed to run Ninja. It is recommended to use Meson wrapper:z compile -C z&Could not detect Ninja v1.8.2 or newerú~rQ  rM  rN  z&# This is the build file for project "z"
z1# It is autogenerated by the Meson build system.
z# Do not edit by hand.

z ninja_required_version = 1.8.2

Úbackend_max_linksr   zpool link_pool
  depth = z

zBuild rules for targetszGenerating targets©Údescz
Test ruleszInstall rulesÚ
b_coveragezCoverage rulesz;Need gcovr or lcov/genhtml to generate any coverage reportsÚSuffixzdefault all

ú>=1.10.0z.ninja_depsú-tÚrestatÚ	cleandead)8r   Ú detect_ninja_command_and_versionr   Ú
need_vsenvr
   Úget_build_dirÚrelative_torR  Ú
ValueErrorr   Ú	join_argsÚget_meson_commandr   ru  r   Úninja_commandÚninja_versionrU   re  rÆ   r;  rY  r—   Úget_projectr^  Úoptionsr$   rÖ   rs  Úgenerate_rulesÚbuild_elementsÚgenerate_phonyÚadd_build_commentr‘   r    Úget_targetsr`  Úgenerate_targetÚgenerate_testsÚgenerate_installÚgenerate_distÚfind_coverage_toolsÚgenerate_coverage_rulesÚwarningÚgenerate_utilsÚgenerate_endingÚwrite_rulesÚwrite_buildsrG   Úcmd_ci_includeÚversion_compareÚexistsrg  ÚcallÚgenerate_compdbÚgenerate_rust_project_json)rs   r8  ÚbuilddirÚmeson_commandÚoutfilenamer\  r˜   Ú	num_poolsÚtÚkeyÚ	gcovr_exeÚgcovr_versionÚlcov_exeÚgenhtml_exeÚ_Údefaults                   r<   ÚgeneratezNinjaBackend.generate?  s¥  € ÝÔ<ÀÐFÑFÔFˆØŒ:Ô ð 	?Ý˜DÔ,×:Ò:Ñ<Ô<Ñ=Ô=ˆHðð $×/Ò/µ´±
´
Ñ;Ô;��øÝð ð ð Ø�ðøøøå$Ô.­xÔ/IÑ/KÔ/KÑLÔLˆMÝŒH‰JŒJˆJÝŒHÐpÑqÔqÐqÝŒH˜Ð=Ð=°8Ð=Ð=Ñ>Ô>Ð>Øˆ=Ý Ð!IÑJÔJÐJØ38Ñ0ˆÔ	˜TÔ/Ý”g—l’l 4Ô#3×#AÒ#AÑ#CÔ#CÀTÔEXÑYÔYˆØ" SÑ(ˆÝ�, ¨gÐ6Ñ6Ô6ð 	¸'Ø�MŠMÐ`À4Ä:×CYÒCYÑC[ÔC[Ð`Ð`Ð`ÑaÔaÐaØ�MŠMÐNÑOÔOÐOØ�MŠMÐ6Ñ7Ô7Ð7Ø�MŠMÐ>Ñ?Ô?Ð?àÔ(Ô1Ô9½)ÐDWÑ:XÔ:XÔYÔ_ˆIØ˜1Š}ˆ}Ø—’ð Øðð ð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×&Ò& |Ñ4Ô4ð  	#¸Ø×ÒÑ!Ô!Ð!à"$ˆDÔØ×ÒÑ!Ô!Ð!Ø×"Ò"¥<Ð0IÑ#JÔ#JÑKÔKÐKÝ  ¤×!7Ò!7Ñ!9Ô!9×!@Ò!@Ñ!BÔ!BÐI]Ð^Ñ^Ô^ð (ð (�Ø×$Ò$ QÑ'Ô'Ð'Ð'Ø×"Ò"¥<°Ñ#=Ô#=Ñ>Ô>Ð>Ø×ÒÑ!Ô!Ð!Ø×"Ò"¥<°Ñ#@Ô#@ÑAÔAÐAØ×!Ò!Ñ#Ô#Ð#Ø×ÒÑ Ô Ð Ý˜LÑ)Ô)ˆCØ�tÔ'Ô0Ô8Ð8Ð8ØÔ$Ô-Ô5°cÔ:Ô@ð 9åEPÔEdÑEfÔEfÑB�	˜=¨(°KÀØð ` ð `¨kð `Ø×*Ò*­<Ð8HÑ+IÔ+IÑJÔJÐJØ×0Ò0°¸MÑJÔJÐJÐJõ ”LÐ!^Ñ_Ô_Ð_Ø×"Ò"¥<°Ñ#9Ô#9Ñ:Ô:Ð:Ø×ÒÑ!Ô!Ð!Ø× Ò Ñ"Ô"Ð"à×Ò˜WÑ%Ô%Ð%Ø×Ò˜gÑ&Ô&Ð&à'ˆGØ�MŠM˜'Ñ"Ô"Ð"ðA 	#ð  	#ð  	#ñ  	#ô  	#ð  	#ð  	#ð  	#ð  	#ð  	#ð  	#øøøð  	#ð  	#ð  	#ð  	#õF 	Œ
�< Ñ-Ô-Ð-ÝÔ˜KÑ(Ô(Ð(åÔ# DÔ$6¸
ÑCÔCð 	FÍÌÏÊÐWdÑHeÔHeð 	FÝŒO˜DÔ.°$¸Ð1AÑAÑBÔBÐBÝŒO˜DÔ.°$¸Ð1DÑDÑEÔEÐEØ×ÒÑÔÐØ×'Ò'Ñ)Ô)Ð)Ð)Ð)s8   Á	&A0 Á0
A=Á<A=ÅB8HÈH È#H È<IR!Ò!R%Ò(R%rb   ÚNonec                óâ  — | j         sdS t          t          j                             | j                             ¦   «         d¦  «        dd¬¦  «        5 }t          j        t          j                             | j        j	        j
        j        d                              ¦   «         d¦  «        d„ | j                              ¦   «         D ¦   «         d	œ|d
¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z;Generate a rust-analyzer compatible rust-project.json file.Nzrust-project.jsonrQ  rM  rN  Úrustzlib/rustlib/src/rust/library/c                ó6   — g | ]}|                      ¦   «         ‘ŒS rx   r/  ©r‰   r¢   s     r<   rŒ   z;NinjaBackend.generate_rust_project_json.<locals>.<listcomp>–  s    € ÐNÐNÐN¨q˜qŸyšy™{œ{ÐNÐNÐNr>   )Úsysroot_srcÚcratesé   )Úindent)r?  rY  rU   re  rÆ   r   r‚  ÚjsonÚdumpr^  r   r_  Úget_sysrootr`  )rs   rp  s     r<   r   z'NinjaBackend.generate_rust_project_jsonŒ  s2  € àÔð 	ØˆFÝ•"”'—,’,˜tÔ/×=Ò=Ñ?Ô?ÐATÑUÔUØ ð)ñ )ô )ð 	Ø,-ÝŒIå#%¤7§<¢<°Ô0@Ô0IÔ0SÔ0XÐY_Ô0`×0lÒ0lÑ0nÔ0nØ0Oñ$Qô $QàNÐN°DÔ4D×4KÒ4KÑ4MÔ4MÐNÑNÔNðð ð
 ˜!ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁBC$Ã$C(Ã+C(c                óÊ  — g }t           D ]t}| j        j        j        |                              ¦   «         D ]H}|d„ |                      |¦  «        fD ¦   «         z  }|d„ |                      |¦  «        fD ¦   «         z  }ŒIŒut          j        | j	        d¦  «        rdgng }| j
        ddgz   |z   |z   }| j                             ¦   «         }	 t          j        ||¬¦  «        }t          t          j                             |d¦  «        d	¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t&          $ r t)          j        d
d¬¦  «         Y d S w xY w)Nc                ó$   — g | ]}d D ]}|› |› �‘Œ	ŒS ©)rº   r»   rx   ©r‰   r³   Úexts      r<   rŒ   z0NinjaBackend.generate_compdb.<locals>.<listcomp>¡  óD   € ð 3ð 3ð 3¨TØ%1ð3ð 3Ø!ð "˜. 3˜.˜.ð 3ð 3ð 3ð 3r>   c                ó$   — g | ]}d D ]}|› |› �‘Œ	ŒS r¼  rx   r½  s      r<   rŒ   z0NinjaBackend.generate_compdb.<locals>.<listcomp>£  r¿  r>   z>=1.9ú-xr}  Úcompdb)rR  zcompile_commands.jsonÚwbz&Could not create compilation database.F)Úfatal)r   r   r^  r   r`  Úcompiler_to_rule_nameÚcompiler_to_pch_rule_namer   rœ  rˆ  r‡  r‚  rg  Úcheck_outputrY  rU   re  rÆ   r—   Ú	Exceptionr   r–  )	rs   ÚrulesÚfor_machinerm  Úcompdb_optionsÚninja_compdbr¡  Újsondbrp  s	            r<   rŸ  zNinjaBackend.generate_compdb›  sö  € Øˆõ )ð 	3ð 	3ˆKØ Ô,Ô5Ô?ÀÔL×SÒSÑUÔUð 3ð 3�Øð 3ð 3°d×6PÒ6PÐQYÑ6ZÔ6ZÐ5[ð 3ñ 3ô 3ñ 3�àð 3ð 3°d×6TÒ6TÐU]Ñ6^Ô6^Ð5_ð 3ñ 3ô 3ñ 3��ð3õ
 $,Ô#;¸DÔ<NÐPWÑ#XÔ#XÐ`˜$˜˜Ð^`ˆØÔ)¨T°8Ð,<Ñ<¸~ÑMÐPUÑUˆØÔ#×1Ò1Ñ3Ô3ˆð	PÝÔ,¨\¸xÐHÑHÔHˆFÝ•b”g—l’l 8Ð-DÑEÔEÀtÑLÔLð  ÐPQØ—’˜‘”�ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  øåð 	Pð 	Pð 	PÝŒLÐAÈÐOÑOÔOÐOÐOÐOÐOð	Pøøøs7   Ã
AD> ÄD1Ä$D> Ä1D5Ä5D> Ä8D5Ä9D> Ä> E"Å!E"c           	     ó  — t          |d¦  «        r|j        S g }|                     ¦   «         D ]„}t          |t          j        t          j        f¦  «        rŒ)|                     ¦   «         D ]F}| j         	                    |¦  «        r*| 
                    |                      |||¦  «        ¦  «         ŒGŒ…d|j        v r\t          |t          j        ¦  «        sBt          j        |                      |¦  «        |j        ¦  «        }| 
                    |¦  «         t%          j        |j        |j        ¦  «        D ]@}t          |t          j        t          j        f¦  «        r||                      |¦  «        z  }ŒA||_        |S )NÚcached_generated_headersÚvala)ÚhasattrrÏ  Úget_generated_sourcesrŸ   r   ÚCustomTargetÚCustomTargetIndexÚget_outputsr   Ú	is_headerró   Úget_target_generated_dirr   Ú
Executabler   Úfrom_built_fileÚget_target_dirÚvala_headerÚ	itertoolsÚchainÚlink_targetsÚlink_whole_targetsÚStaticLibraryÚSharedLibraryÚget_generated_headers)rs   ÚtargetÚheader_depsÚgenlistÚsrcrÛ  rì   s          r<   râ  z"NinjaBackend.get_generated_headers±  sƒ  € Ý�6Ð5Ñ6Ô6ð 	3ØÔ2Ð2Øˆà×3Ò3Ñ5Ô5ð 	\ð 	\ˆGÝ˜'¥EÔ$6½Ô8OÐ#PÑQÔQð ØØ×*Ò*Ñ,Ô,ð \ð \�ØÔ#×-Ò-¨cÑ2Ô2ð \Ø×&Ò& t×'DÒ'DÀVÈWÐVYÑ'ZÔ'ZÑ[Ô[Ð[øð\ð �VÔ%Ð%Ð%­j¸ÅÔAQÑ.RÔ.RÐ%ÝÔ.¨t×/BÒ/BÀ6Ñ/JÔ/JÈFÔL^Ñ_Ô_ˆKØ×Ò˜{Ñ+Ô+Ð+å”? 6Ô#6¸Ô8QÑRÔRð 	?ð 	?ˆCÝ˜#¥Ô 3µUÔ5HÐIÑJÔJð ?Ø˜t×9Ò9¸#Ñ>Ô>Ñ>�øØ*5ˆÔ'ØÐr>   rã  úbuild.BuildTargetúT.MutableMapping[str, File]c                óÚ   — t          ¦   «         }|                     ¦   «         D ]G}|                     ¦   «         D ]0}|                      |||¦  «        }t	          j        |¦  «        ||<   Œ1ŒH|S )zÁ
        Returns a dictionary with the keys being the path to the file
        (relative to the build directory) and the value being the File object
        representing the same path.
        )r   rÒ  rÕ  r×  r   Úfrom_built_relative)rs   rã  ÚsrcsÚgensrcrC   Úrel_srcs         r<   Úget_target_generated_sourcesz)NinjaBackend.get_target_generated_sourcesÆ  s�   € õ -8©M¬MˆØ×2Ò2Ñ4Ô4ð 	Bð 	BˆFØ×'Ò'Ñ)Ô)ð Bð B�Ø×7Ò7¸ÀÈÑJÔJ�Ý $Ô 8¸Ñ AÔ A��W‘�ðBð ˆr>   c                óÞ   — t          ¦   «         }|                     ¦   «         D ]I}t          |t          ¦  «        st	          d|›d�¦  «        ‚|                     | j        ¦  «        }|||<   ŒJ|S )NúAll sources in target z must be of type mesonlib.File)r   Úget_sourcesrŸ   r   r'   Úrel_to_builddirÚbuild_to_src)rs   rã  rë  rC   rp  s        r<   Úget_target_sourceszNinjaBackend.get_target_sourcesÓ  s{   € Ý,7©M¬MˆØ×#Ò#Ñ%Ô%ð 	ð 	ˆAõ ˜a¥Ñ&Ô&ð eÝ&Ð'cÀÐ'cÐ'cÐ'cÑdÔdÐdØ×!Ò! $Ô"3Ñ4Ô4ˆAØˆD�‰GˆGØˆr>   c                óˆ  — t          |t          ¦  «        r|j        }| j                             |¦  «        s| j                             |¦  «        rdS t          j                             |¦  «        d         dd …          	                    ¦   «         }t          j        D ]#}||j        vrŒ||j        |         j        v r dS Œ$dS )NFr   T)rŸ   r   Úfnamer   Ú
is_llvm_irÚis_assemblyrU   re  ÚsplitextÚlowerr   ÚLANGS_CANT_UNITYr   Úfile_suffixes)rs   rã  ÚsourceÚsuffixÚlangs        r<   Úget_target_source_can_unityz(NinjaBackend.get_target_source_can_unityß  sË   € Ý�f�dÑ#Ô#ð 	"Ø”\ˆFØÔ×&Ò& vÑ.Ô.ð 	ØÔ×'Ò'¨Ñ/Ô/ð	à�5Ý”×!Ò! &Ñ)Ô)¨!Ô,¨Q¨R¨RÔ0×6Ò6Ñ8Ô8ˆÝÔ-ð 	ð 	ˆDØ˜6Ô+Ð+Ð+ØØ˜Ô)¨$Ô/Ô=Ð=Ð=Ø�u�uð >àˆtr>   úbuild.TargetÚcompúcompilers.Compilerc                ó  ‡ — |                      ¦   «         }|                     ¦   «         }‰ j        |         }|t          |¦  «        f}	|                     |	d¦  «        }
|
€et          |t          ¦  «        r|                     d¬¦  «        }|                     |‰ j	        ¦  «        }|| 
                    ¦   «         |g g dœ}
|
||	<   ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }|
dxx         |z  cc<   |
dxx         |z  cc<   dS )	a  
        Adds the source file introspection information for a language of a target

        Internal introspection storage formart:
        self.introspection_data = {
            '<target ID>': {
                <id tuple>: {
                    'language: 'lang',
                    'compiler': ['comp', 'exe', 'list'],
                    'parameters': ['UNIQUE', 'parameter', 'list'],
                    'sources': [],
                    'generated_sources': [],
                }
            }
        }
        NT)Úcopy)ra  rm  Ú
parametersÚsourcesÚgenerated_sourcesc                óþ   •— g | ]y}t          |t          ¦  «        r |                     ‰j        ‰j        ¦  «        nAt
          j                             t
          j                             ‰j        |¦  «        ¦  «        ‘ŒzS rx   ©	rŸ   r   Úabsolute_pathÚ
source_dirÚ	build_dirrU   re  ÚnormpathrÆ   rÀ   s     €r<   rŒ   zCNinjaBackend.create_target_source_introspection.<locals>.<listcomp>  s�   ø€ ð %ð %ð %Øõ HRÐRSÕUYÑGZÔGZð  R�1—?’? 4¤?°D´NÑCÔCÐCÕ`bÔ`g×`pÒ`pÕqsÔqx×q}Òq}ð  Cô  Mð  OPñ  rQô  rQñ  aRô  aRð %ð %ð %r>   c                óþ   •— g | ]y}t          |t          ¦  «        r |                     ‰j        ‰j        ¦  «        nAt
          j                             t
          j                             ‰j        |¦  «        ¦  «        ‘ŒzS rx   r
  rÀ   s     €r<   rŒ   zCNinjaBackend.create_target_source_introspection.<locals>.<listcomp>  s©   ø€ ð 9ð 9ð 9Ø!"õ R\Ð\]Õ_cÑQdÔQdð  \˜QŸ_š_¨T¬_¸d¼nÑMÔMÐMÕjlÔjq×jzÒjzÕ{}ô  |C÷  |Hò  |Hð  IMô  IWð  YZñ  |[ô  |[ñ  k\ô  k\ð 9ð 9ð 9r>   r  r  )Úget_idÚget_languager=  ÚtuplerW   rŸ   r   rò   Ú&compute_parameters_with_absolute_pathsr  ri  )rs   rã  r  r  r  r  Útidrÿ  ÚtgtÚid_hashÚ	src_blocks   `          r<   Ú"create_target_source_introspectionz/NinjaBackend.create_target_source_introspectioní  sc  ø€ ð" �mŠm‰oŒoˆØ× Ò Ñ"Ô"ˆØÔ% cÔ*ˆà�˜zÑ*Ô*Ð+ˆØ—G’G˜G TÑ*Ô*ˆ	ØÐå˜*¥lÑ3Ô3ð =Ø'×1Ò1°tÐ1Ñ<Ô<�
Ø×DÒDÀZÐQUÔQ_Ñ`Ô`ˆJð !Ø ×,Ò,Ñ.Ô.Ø(ØØ%'ðð ˆIð %ˆC�‰Lð%ð %ð %ð %Ø#ð%ñ %ô %ˆð9ð 9ð 9ð 9Ø&7ð9ñ 9ô 9Ðð 	�)ÐÐÔ Ñ'ÐÐÑØÐ%Ð&Ð&Ô&Ð*;Ñ;Ð&Ð&Ñ&Ð&Ð&r>   c           	     óÚ  ‡ ‡— 	 t          ‰t          j        ¦  «        r't          j        ‰                      ‰¦  «        ¦  «         n# t          $ r Y nw xY wt          ‰t          j        ¦  «        r‰                      ‰¦  «         t          ‰t          j	        ¦  «        r‰  
                    ‰¦  «         g }i }‰                     ¦   «         }|‰ j        v rd S ‰ j                             |¦  «         i ‰ j        |<   ‰                      ‰¦  «         ‰                      ‰‰                      ‰¦  «        ¦  «         t          ‰t          j        ¦  «        r‰                      ‰¦  «         d S ‰                     ¦   «         r‰                      ‰¦  «         d S d‰j        v r‰                      ‰¦  «         d S d‰j        v r‰                      ‰¦  «         d S d‰j        v r‰                      ‰¦  «        \  }}}nOd‰j        v r‰                      ‰¦  «        \  }}}n,‰                      ‰¦  «        }‰                      ‰¦  «        }g }‰                      ‰¦  «         ‰                      ‰¦  «         ‰                      ‰¦  «        }g }	‰j         }
g }g }g }|‰  !                    ‰¦  «        z  }|
rÁtE          ‰j         #                    ¦   «         ¦  «        }| $                    tJ          j&        ¦  «        }|rzd '                    |¦  «         (                    ¦   «         x}}|tS          |¦  «        dk    rdndz  }|› d	|› d
‰j*        ›d�}tW          j,        tW          j-        d¦  «        |¦  «         g }| #                    ¦   «         D �]6}t]          j/        |¦  «        }‰ j0         1                    |¦  «        r�|
rx‰  2                    ‰|¦  «        rb| 3                    |¦  «         t          j4         '                    ‰ j0         5                    ¦   «         |¦  «        }| 3                    |¦  «         Œ«| 3                    |¦  «         ŒÁ‰ j0         6                    |¦  «        r|	 3                    |¦  «         Œñ‰ j0         7                    |¦  «        stq          j9        |¦  «        r�Œ!| 3                    |¦  «         �Œ8g }|D ]Ã}‰ j0         :                    |¦  «        r‰  ;                    ‰|¦  «        \  }}n‰  <                    ‰|d|¬¦  «        \  }}| 3                    |¦  «         |||<   |	 3                    |¦  «         | =                    d¦  «        d         t,          j>        d         v r| 3                    |¦  «         ŒÄ‰ j0        j?        j@         A                    t…          d¦  «        ¦  «        }|r,‰ C                    ¦   «         r‰  D                    ‰|¬¦  «        }ng }‰  E                    ‰¦  «        \  }}d„ |D ¦   «         }|	 F                    |¦  «         ˆ fd„|D ¦   «         }g }‰ G                    ¦   «         r!t‘          jI        ˆ ˆfd„|D ¦   «         ¦  «        }g } |D ][}t]          j/        |¦  «        }‰ j0         J                    |¦  «        r| 3                    |¦  «         ŒF|  3                    |¦  «         Œ\| D ]3}‰  <                    ‰|dg |¦  «        \  }}|	 3                    |¦  «         Œ4| K                    ¦   «         D �]6}‰ j0         J                    |¦  «        �s‰ j0         :                    |¦  «        r/‰  ;                    ‰|¦  «        \  }}|	 3                    |¦  «         Œg|
r{‰  2                    ‰|¦  «        ret          j4         '                    ‰ j0         5                    ¦   «         | L                    ‰ jM        ¦  «        ¦  «        }| 3                    |¦  «         Œä‰  <                    ‰|dg ||z   |z   |¦  «        \  }}|	 3                    |¦  «         | 3                    |¦  «         |||<   �Œ8|
rk‰  N                    ‰|¦  «        D ]T}‰  <                    ‰|d||z   |z   ||¦  «        \  }}|	 3                    |¦  «         | 3                    |¦  «         |||<   ŒUt          ‰t          jO        ¦  «        rd S ‰  P                    ‰¦  «        \  }!}"t          ‰t          jQ        ¦  «        r‰jR        r‰  S                    ‰|	¦  «        }#n|	}#‰  T                    ‰||#|!||"¬¦  «        }$‰  U                    ‰||||¦  «         ‰  V                    |$¦  «         d S )NÚcsÚswiftrÐ  Úcythonz, r   z arez isz' not supported in Unity builds yet, so z sources in the z! target will be compiled normallyÚFIXMET)Ú
order_depsú.rÌ   r0  Úb_pch)rä  c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rx   )Úuses_fortran©r‰   r¥  s     r<   rŒ   z0NinjaBackend.generate_target.<locals>.<listcomp>£  s'   € Ð9Ð9Ð9˜Q¨¯ªÑ(8Ô(8Ð9�qÐ9Ð9Ð9r>   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   ©Úget_target_filename©r‰   r¥  rs   s     €r<   rŒ   z0NinjaBackend.generate_target.<locals>.<listcomp>¦  s'   ø€ ÐOÐOÐO¸a˜d×6Ò6°qÑ9Ô9ÐOÐOÐOr>   c                óz   •— g | ]7}‰j         d                               ‰                     |¦  «        d¬¦  «        ‘Œ8S )rK  F)Ú	is_system)r   Úget_include_argsÚget_target_private_dir)r‰   r¥  rs   rã  s     €€r<   rŒ   z0NinjaBackend.generate_target.<locals>.<listcomp>©  sb   ø€ ð 1Wð 1Wð 1WØEFð 28Ô1AÀ)Ô1L×1]Ò1]Ø×+Ò+¨AÑ.Ô.¸%ð 2^ñ 2Aô 2Að 1Wð 1Wð 1Wr>   F)Ústdlib_args)WrŸ   r   ÚBuildTargetrU   ÚmakedirsÚget_target_private_dir_absÚFileExistsErrorrÓ  Úgenerate_custom_targetÚ	RunTargetÚgenerate_run_targetr  Úprocessed_targetsrê   r=  Úprocess_target_dependenciesÚgenerate_shlib_aliasesrÚ  ÚJarÚgenerate_jar_targetÚ	uses_rustÚgenerate_rust_targetr   Úgenerate_cs_targetÚgenerate_swift_targetÚgenerate_vala_compileÚgenerate_cython_transpilerô  rî  Úscan_fortran_module_outputsÚgenerate_generator_list_rulesr&  Úis_unityrâ  ÚsetÚkeysÚintersectionr   rû  rÆ   Úupperr8   rª   r   ru  Úredr   rê  r   Ú	is_sourcer   ró   re  r‚  Ú	is_objectÚ
is_libraryr   Úis_module_libraryr÷  Úgenerate_llvm_ir_compileÚgenerate_single_compiler–   rd  r^  rŠ  rW   r$   Úhas_pchÚgenerate_pchÚflatten_object_listÚextendr"  r   ÚlistifyrÖ  r`  rò  ró  Úgenerate_unity_filesÚCompileTargetÚ determine_linker_and_stdlib_argsrà  ÚprelinkÚgenerate_prelinkÚgenerate_linkÚgenerate_dependency_scan_targetrC  )%rs   rã  Úcompiled_sourcesro   rª   Útarget_sourcesr  Útranspiled_sourcesÚoutnameÚobj_listrA  rä  Ú	unity_srcÚ
unity_depsÚlangsÚ
langs_cantÚ	langs_areÚmsgÚgenerated_source_filesrí  Úraw_srcÚabs_srcÚd_generated_depsræ  ÚorC   Úuse_pchÚpch_objectsÚodÚobj_targetsÚfortran_order_depsÚfortran_inc_argsÚvala_generated_source_filesÚlinkerr,  Úfinal_obj_listrG  s%   ``                                   r<   r�  zNinjaBackend.generate_target  s[
  øø€ ð	Ý˜&¥%Ô"3Ñ4Ô4ð EÝ”˜D×;Ò;¸FÑCÔCÑDÔDÐDøøÝð 	ð 	ð 	ØˆDð	øøøå�f�eÔ0Ñ1Ô1ð 	0Ø×'Ò'¨Ñ/Ô/Ð/Ý�f�eœoÑ.Ô.ð 	-Ø×$Ò$ VÑ,Ô,Ð,ØÐØˆØ�}Š}‰ŒˆØ�4Ô)Ð)Ð)ØˆFØÔ×"Ò" 4Ñ(Ô(Ð(à(*ˆÔ Ñ%à×(Ò(¨Ñ0Ô0Ð0à×#Ò# F¨D×,?Ò,?ÀÑ,GÔ,GÑHÔHÐHõ �f�eœiÑ(Ô(ð 	Ø×$Ò$ VÑ,Ô,Ð,ØˆFØ×ÒÑÔð 	Ø×%Ò% fÑ-Ô-Ð-ØˆFØ�6Ô#Ð#Ð#Ø×#Ò# FÑ+Ô+Ð+ØˆFØ�fÔ&Ð&Ð&Ø×&Ò& vÑ.Ô.Ð.ØˆFð �VÔ%Ð%Ð%ð &*×%?Ò%?ÀÑ%GÔ%Gñ#ˆNÐ-Ø"Ð"Ø˜Ô)Ð)Ð)à%)×%CÒ%CÀFÑ%KÔ%Kñ#ˆNÐ-Ø"Ð"à!×4Ò4°VÑ<Ô<ˆNØ $× AÒ AÀ&Ñ IÔ IÐØ!#ÐØ×(Ò(¨Ñ0Ô0Ð0à×*Ò*¨6Ñ2Ô2Ð2ð ×*Ò*¨6Ñ2Ô2ˆØˆØ”?ˆØˆØˆ	Øˆ
Ø�t×1Ò1°&Ñ9Ô9Ñ9ˆàð 		1å˜Ô(×-Ò-Ñ/Ô/Ñ0Ô0ˆEØ×+Ò+­HÔ,EÑFÔFˆJØð 1Ø$(§I¢I¨jÑ$9Ô$9×$?Ò$?Ñ$AÔ$AÐA�	˜EØ¥s¨:¡¤¸Ò':Ð':˜V˜VÀÑE�	Ø"ð Yð YÈ5ð Yð YØ(.¬ðYð Yð Y�å”�œ 'Ñ*Ô*¨CÑ0Ô0Ð0ð "$ÐØ(×-Ò-Ñ/Ô/ð 	,ñ 	,ˆGÝÔ.¨wÑ7Ô7ˆGØÔ×)Ò)¨'Ñ2Ô2ð ,Øð ; × @Ò @ÀÈÑ QÔ Qð ;Ø×%Ò% gÑ.Ô.Ð.Ý œgŸlšl¨4Ô+;×+IÒ+IÑ+KÔ+KÈWÑUÔU�GØ×$Ò$ WÑ-Ô-Ð-Ð-à*×1Ò1°'Ñ:Ô:Ð:Ð:ØÔ!×+Ò+¨GÑ4Ô4ð ,Ø—’ Ñ(Ô(Ð(Ð(ØÔ!×,Ò,¨WÑ5Ô5ð ,½Ô9RÐSZÑ9[Ô9[ð ,Ùð
 ×"Ò" 7Ñ+Ô+Ð+Ñ+ð Ðð
 *ð 
	+ð 
	+ˆCØÔ×*Ò*¨3Ñ/Ô/ð LØ×4Ò4°V¸SÑAÔA‘��1�1à×3Ò3°F¸CÀØ?Jð 4ñ Lô L‘��1à×#Ò# AÑ&Ô&Ð&Ø ˆM˜!ÑØ�OŠO˜AÑÔÐØ�wŠw�s‰|Œ|˜BÔ¥9Ô#:¸3Ô#?Ð?Ð?Ø ×'Ò'¨Ñ*Ô*Ð*øàÔ"Ô+Ô3×7Ò7½	À'Ñ8JÔ8JÑKÔKˆØð 	�v—~’~Ñ'Ô'ð 	Ø×+Ò+¨FÀÐ+ÑLÔLˆKˆKàˆKà×(Ò(¨Ñ0Ô0‰ˆˆ2Ø9Ð9 "Ð9Ñ9Ô9ˆØ�Š˜ÑÔÐàOÐOÐOÐOÀ;ÐOÑOÔOÐØ(*ÐØ×ÒÑ Ô ð 	XÝ'Ô/ð 1Wð 1Wð 1Wð 1Wð 1WØJUð1Wñ 1Wô 1Wñ  Xô  XÐð ')Ð#Ø%ð 	<ð 	<ˆCÝÔ.¨sÑ3Ô3ˆGð Ô×)Ò)¨#Ñ.Ô.ð <Ø×"Ò" 7Ñ+Ô+Ð+Ð+ð ,×2Ò2°7Ñ;Ô;Ð;Ð;Ø.ð 	ð 	ˆCð ×/Ò/°¸¸VÀRÈÑUÔU‰DˆAˆqØ�OŠO˜AÑÔÐÐð "×(Ò(Ñ*Ô*ð 	)ñ 	)ˆCØÔ#×-Ò-¨cÑ2Ô2ñ )ØÔ#×.Ò.¨sÑ3Ô3ð )Ø×8Ò8¸ÀÑEÔE‘D�A�qØ—O’O AÑ&Ô&Ð&Ð&Øð 
) $×"BÒ"BÀ6È3Ñ"OÔ"Oð 
)Ý œgŸlšl¨4Ô+;×+IÒ+IÑ+KÔ+KØ+.×+>Ò+>¸tÔ?PÑ+QÔ+QñSô S�Gà×$Ò$ WÑ-Ô-Ð-Ð-à×7Ò7¸ÀÀUÈBØ8CÐFVÑ8VÐYkÑ8kØ8HñJô J‘D�A�qð —O’O AÑ&Ô&Ð&Ø$×+Ò+¨AÑ.Ô.Ð.Ø'(�M !Ñ$ùàð 	%Ø×0Ò0°¸ÑCÔCð %ð %�Ø×3Ò3°F¸CÀÀzÐT_ÑG_ÐbrÑGrØ4FÐHXñZô Z‘��1à—’ Ñ"Ô"Ð"Ø ×'Ò'¨Ñ*Ô*Ð*Ø#$�˜aÑ Ð Ý�f�eÔ1Ñ2Ô2ð 	àˆFØ"×CÒCÀFÑKÔKÑˆ�Ý�f�eÔ1Ñ2Ô2ð 	&°v´~ð 	&Ø!×2Ò2°6¸8ÑDÔDˆNˆNà%ˆNØ×!Ò! &¨'°>À6È;ÐdoÐ!ÑpÔpˆØ×,Ò,¨VÐ5EÀ}ÐVlð  oAñ  	Bô  	Bð  	BØ�Š�tÑÔÐÐÐs   „AA Á
AÁAú'build.BuildTarget'r(  c                óÆ  — t          j        | j        d¦  «        rdS d|j        v rdS d|j        vrdS d|j                             dg ¦  «        v rdS |j        d         }|                     ¦   «         dk    rdS | j        j        j	        t          d|j        d¬	¦  «                 j        }|d
vrdS t          j        ¦   «         sdS t          j        |j        d¦  «        rdS dS )Nz<1.10.0FrK  TÚcppz-fmodules-tsrP  Ústd©Úmachinerÿ  )Úlatestz	c++latestz
vc++latestz<19.28.28617)r   rœ  rˆ  r   Ú
extra_argsrW   r  r   r^  rŠ  r$   rÊ  rÖ   Úcurrent_vs_supports_modulesÚversion)rs   rã  rt  Ú
cppversions       r<   Úshould_use_dyndeps_for_targetz*NinjaBackend.should_use_dyndeps_for_targetì  sÿ   € ÝÔ# DÔ$6¸	ÑBÔBð 	Ø�5Ø˜Ô(Ð(Ð(Ø�4Ø˜Ô(Ð(Ð(Ø�5Ø˜VÔ.×2Ò2°5¸"Ñ=Ô=Ð=Ð=Ø�4àÔ˜uÔ%ˆØ�:Š:‰<Œ<˜6Ò!Ð!Ø�5ØÔ%Ô.Ô6µyÀÐPVÔPbÐinÐ7oÑ7oÔ7oÔpÔvˆ
ØÐBÐBÐBØ�5ÝÔ3Ñ5Ô5ð 	Ø�5ÝÔ# C¤K°Ñ@Ô@ð 	Ø�5Øˆtr>   rd  úT.List[mesonlib.File]Úobject_depsr&  c                ó²  — |                       |¦  «        sd S |                      |¦  «        }|j        dz   }t          j                             |                      |¦  «        |¦  «                             dd¦  «        }t          j                             |                      |¦  «        |¦  «                             dd¦  «        }	t          j                             |                      |¦  «        |j        › d�¦  «                             dd¦  «        }
d}|  	                    |¦  «        }t          |
dd¬¦  «        5 }t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          | j        |||
¦  «        }|                     d	|¦  «         |D ].}|j                             |                     ¦   «         ¦  «         Œ/|j                             |¦  «         t)          |                      |¦  «        |¦  «        }t          |	d
¦  «        5 }t+          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |¦  «         d S )Nz.datr5   r  z
-deps.jsonÚdepscanrQ  rM  rN  Ú
picklefilerÃ  )r}  Úget_dep_scan_file_forrª   rU   re  rÆ   r+  rG   r/  Úselect_sources_to_scanrY  r·  r¸  rÝ   rå   rô   rä   rê   Úrelative_nameré   rm   ÚpicklerC  )rs   rã  rY  ro   rd  r  Údepscan_fileÚpickle_baseÚpickle_fileÚ
pickle_absÚjson_absÚ	rule_nameÚscan_sourcesrp  rG  ÚgÚscaninfoÚps                     r<   rX  z,NinjaBackend.generate_dependency_scan_target  s˜  € à×1Ò1°&Ñ9Ô9ð 	ØˆFØ×1Ò1°&Ñ9Ô9ˆØ”k FÑ*ˆÝ”g—l’l 4×#>Ò#>¸vÑ#FÔ#FÈÑTÔT×\Ò\Ð]aÐcfÑgÔgˆÝ”W—\’\ $×"AÒ"AÀ&Ñ"IÔ"IÈ;ÑWÔW×_Ò_Ð`dÐfiÑjÔjˆ
Ý”7—<’< × ?Ò ?ÀÑ GÔ GÈFÌKÐIcÐIcÐIcÑdÔd×lÒlÐmqÐsvÑwÔwˆØˆ	Ø×2Ò2Ð3CÑDÔDˆõ
 �(˜C¨'Ð2Ñ2Ô2ð 	'°aÝŒI�l AÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'å  Ô!1°<ÀÈHÑUÔUˆØ�Š�l KÑ0Ô0Ð0ð (ð 	2ð 	2ˆAØŒN×Ò˜qŸšÑ0Ô0Ñ1Ô1Ð1Ð1ØŒ×Ò˜kÑ*Ô*Ð*Ý.¨t×/JÒ/JÈ6Ñ/RÔ/RÐTaÑbÔbˆÝ�*˜dÑ#Ô#ð 	% qÝŒK˜ !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%à�Š�tÑÔÐÐÐs$   Ä=EÅE#Å&E#ÈH7È7H;È>H;c                óR  — t          t          j        d         ¦  «        t          t          j        d         ¦  «        z  }g }|D ]b}t          j                             |¦  «        d         dd …         }|dk    r|                     ¦   «         }||v r|                     |¦  «         Œc|S )Nrt  rK  r   ÚC)rB  r   rd  rU   re  rù  rú  ró   )rs   rY  Úall_suffixesÚselected_sourcesrý  r¾  s         r<   r„  z#NinjaBackend.select_sources_to_scan  s£   € õ �9Ô2°5Ô9Ñ:Ô:½SÅÔAXÐYbÔAcÑ=dÔ=dÑdˆØÐØ&ð 	0ð 	0ˆFÝ”'×"Ò" 6Ñ*Ô*¨1Ô-¨a¨b¨bÔ1ˆCØ�cŠzˆzØ—i’i‘k”k�Ø�lÐ"Ð"Ø ×'Ò'¨Ñ/Ô/Ð/øØÐr>   c                ó”   — |                      ¦   «         D ]2}|                     ¦   «         | j        vr|                      |¦  «         Œ3d S rr   )Úget_dependenciesr  r4  r�  )rs   rã  r¥  s      r<   r5  z(NinjaBackend.process_target_dependencies-  sR   € Ø×(Ò(Ñ*Ô*ð 	(ð 	(ˆAØ�xŠx‰zŒz Ô!7Ð7Ð7Ø×$Ò$ QÑ'Ô'Ð'øð	(ð 	(r>   c                óz   — |j         D ]2}t          |t          j        ¦  «        r|                      ||¦  «         Œ3d S rr   )r  rŸ   r   r&   Úgenerate_genlist_for_target)rs   rã  rC   s      r<   Úcustom_target_generator_inputsz+NinjaBackend.custom_target_generator_inputs2  sI   € Ø”ð 	<ð 	<ˆAÝ˜!�UÔ0Ñ1Ô1ð <Ø×0Ò0°°FÑ;Ô;Ð;øð	<ð 	<r>   c           	     ó,  — g }|                      ¦   «         D ]|}t          |t          ¦  «        r|d         }|                     ¦   «         D ]H}|                     t
          j                             |                      |¦  «        |¦  «        ¦  «         ŒIŒ}|S ©Nr   )	r–  rŸ   rŽ   rÕ  ró   rU   re  rÆ   rÚ  )rs   rã  r­   rŠ   Úoutputs        r<   Úunwrap_dep_listzNinjaBackend.unwrap_dep_list7  s–   € ØˆØ×(Ò(Ñ*Ô*ð 	Jð 	JˆAå˜!�TÑ"Ô"ð Ø�a”D�àŸ-š-™/œ/ð Jð J�Ø—’�BœGŸLšL¨×)<Ò)<¸QÑ)?Ô)?ÀÑHÔHÑIÔIÐIÐIðJàˆr>   c           	     ó,  — |                       |¦  «         |                      |¦  «        \  }}}|                      |¦  «        }||                      |¦  «        z  }|j        r|                     d¦  «         |j        €d}nd}t          | j        |||¦  «        }| 	                    |¦  «         |j
        D ]_}|                     ¦   «         D ]H}	| 	                    t          j                             |                      |¦  «        |	¦  «        ¦  «         ŒIŒ`|                      |j        d         |dd …         |                     ¦   «         |j        r|d         nd |j        r|d         nd |j        |j        ¬¦  «        \  }}
|
rd|
› d�}nd	}|j        �Ã|                     |j        ¦  «        }t          j                             |                      |¦  «        |¦  «        }t          j                             | j                             ¦   «         |                      |¦  «        ¦  «        }t          j        |d
¬¦  «         |                     d|¦  «         |j        r|                     dd¦  «         t;          |j        |j        ¦  «                              ¦   «         }|                     d|¦  «         |                     dd|› d|› �¦  «         |  !                    |¦  «         | j"         #                    | $                    ¦   «         ¦  «         d S )NÚPHONYÚCUSTOM_COMMANDÚCUSTOM_COMMAND_DEPr   r   )Úextra_bdepsÚcaptureÚfeedÚenvÚverboseú (wrapped by meson ú)rº   T©Úexist_okrñ   r[   ÚconsoleÚCOMMANDr^   úGenerating z with a custom command)%r™  Úeval_custom_target_commandr�  Úget_custom_target_depend_filesÚbuild_always_staleró   r®   rÝ   rå   rí   Úextra_dependsrÕ  rU   re  rÆ   rÚ  Úas_meson_exe_cmdliner«   Ú get_transitive_build_target_depsr£  r¤  r¥  r«  Úget_dep_outnamerã   r   r‚  r.  rô   r
   Úsubdirrª   Úas_posixrC  r4  rê   r  )rs   rã  rë  Ú
ofilenamesrK   r­   râ   rG  r0  rœ  ÚreasonÚcmd_typer®   Ú	rel_dfileÚabs_pdirÚ	full_names                   r<   r1  z#NinjaBackend.generate_custom_targetB  sú  € Ø×+Ò+¨FÑ3Ô3Ð3Ø"&×"AÒ"AÀ&Ñ"IÔ"IÑˆˆz˜3Ø×#Ò# FÑ+Ô+ˆØ�×3Ò3°FÑ;Ô;Ñ;ˆØÔ$ð 	!Ø�KŠK˜Ñ Ô Ð ØŒ>Ð!Ø'ˆHˆHà+ˆHÝ  Ô!1°:¸xÈÑNÔNˆØ�Š�TÑÔÐØÔ%ð 	Kð 	KˆAàŸ-š-™/œ/ð Kð K�Ø—’�RœWŸ\š\¨$×*=Ò*=¸aÑ*@Ô*@À&ÑIÔIÑJÔJÐJÐJðKð ×/Ò/°´¸qÔ0AÀ3ÀqÀrÀrÄ7Ø<B×<cÒ<cÑ<eÔ<eØIOÌÐ8a¸
À1¼¸Ð]aØ@FÄÐ5U°T¸!´W°WÐQUØ4:´JØ8>¼ð 0ñ Hô H‰ˆˆVð ð 	Ø6¨VÐ6Ð6Ð6ˆHˆHàˆHØŒ>Ð%Ø×,Ò,¨TÔ-=Ñ>Ô>ˆGÝœŸš T×%8Ò%8¸Ñ%@Ô%@À'ÑJÔJˆIÝ”w—|’| DÔ$4×$BÒ$BÑ$DÔ$DÀd×FYÒFYÐZ`ÑFaÔFaÑbÔbˆHÝŒK˜¨4Ð0Ñ0Ô0Ð0Ø�MŠM˜) YÑ/Ô/Ð/ØŒ>ð 	-Ø�MŠM˜& )Ñ,Ô,Ð,Ý˜œ¨¬Ñ4Ô4×=Ò=Ñ?Ô?ˆ	Ø�Š�i Ñ%Ô%Ð%Ø�Š�mÐ%^°9Ð%^Ð%^ÐT\Ð%^Ð%^Ñ_Ô_Ð_Ø�Š�tÑÔÐØÔ×"Ò" 6§=¢=¡?¤?Ñ3Ô3Ð3Ð3Ð3r>   c                óH   — |j         dk    r|j         › d�}nd}|› |j        › �S )Nrº   z@@)Ú
subprojectrª   )rs   rã  Úsubproject_prefixs      r<   Úbuild_run_target_namez"NinjaBackend.build_run_target_namel  s>   € ØÔ Ò"Ð"Ø#)Ô#4Ð 8Ð 8Ð 8ÐÐà "ÐØ#Ð2 V¤[Ð2Ð2Ð2r>   úbuild.RunTargetc                ó  — |                       |¦  «        }|j        st          | j        |dg ¦  «        }nÐ|                      |¦  «        }|                      |¦  «        \  }}}|                      |j        d         |dd …         |d¬¦  «        \  }}|rd|› d�nd}	|                      | j        |d	g ¦  «        }|                     d
|¦  «         |                     dd|j	        › |	› �¦  «         |                     dd¦  «         |  
                    |¦  «        }
|
|                      |¦  «        z  }
|                     |
¦  «         |                      |¦  «         | j                             |                     ¦   «         ¦  «         d S )Nrö   r   r   T)r¥  r¦  r§  r¨  rº   r   r¬  r^   zRunning external command r[   r«  )rÀ  r«   rÝ   rå   Úget_run_target_envr®  r²  rH  rô   rª   r�  r¯  rí   rC  r4  rê   r  )rs   rã  Útarget_namerG  Ú
target_envr«  rK   Úmeson_exe_cmdr¸  r¹  r­   s              r<   r3  z NinjaBackend.generate_run_targets  s¡  € Ø×0Ò0°Ñ8Ô8ˆØŒ~ð 	-õ % TÔ%5°{ÀGÈRÑPÔPˆDˆDà×0Ò0°Ñ8Ô8ˆJØ×7Ò7¸Ñ?Ô?‰IˆAˆq�#Ø$(×$=Ò$=¸f¼nÈQÔ>OÐQTÐUVÐUWÐUWÔQXØBLØFJð %>ñ %Lô %LÑ!ˆM˜6ð ;AÐHÐ6¨VÐ6Ð6Ð6Ð6ÀbˆHØ×+Ò+¨DÔ,<¸kÐK[Ð]_Ñ`Ô`ˆDØ�MŠM˜) ]Ñ3Ô3Ð3Ø�MŠM˜-Ð)\ÀVÄ[Ð)\ÐRZÐ)\Ð)\Ñ]Ô]Ð]Ø�MŠM˜& )Ñ,Ô,Ð,Ø×#Ò# FÑ+Ô+ˆØ�×3Ò3°FÑ;Ô;Ñ;ˆØ�Š�TÑÔÐØ�Š�tÑÔÐØÔ×"Ò" 6§=¢=¡?¤?Ñ3Ô3Ð3Ð3Ð3r>   c           
     óØ  — | j                              ¦   «                              ¦   «         }d}|D ]d}t          |d¦  «        sŒ|j                             ¦   «         D ]7}|                     ¦   «         dk    r|j                             ¦   «         sd} nŒ8Œe|                     d| j	         
                    ¦   «         ddgz   |z   | j	                             ¦   «         t          j                             | j	                             ¦   «         | j                              ¦   «         ¦  «        | j	                             ¦   «         | j	                             ¦   «         gz   |rdgng z   ¦  «         d S )	NFr   ÚclangTr¬  ú
--internalÚcoveragez--use_llvm_cov)r   r�  r`  rÑ  r   r  ÚinfoÚ	is_darwinrô   r   Úget_build_commandÚget_source_dirrU   re  rÆ   Úget_subproject_dirr‚  Úget_log_dir)rs   rG  ÚoutputsÚtargetsÚuse_llvm_covrã  rm  s          r<   Úgenerate_coverage_commandz&NinjaBackend.generate_coverage_commandŠ  s{  € Ø”*×(Ò(Ñ*Ô*×1Ò1Ñ3Ô3ˆØˆØð 	ð 	ˆFÝ˜6 ;Ñ/Ô/ð ØØ"Ô,×3Ò3Ñ5Ô5ð ð �Ø—?’?Ñ$Ô$¨Ò/Ð/¸¼×8OÒ8OÑ8QÔ8QÐ/Ø#'�LØ�EøøØ�Š�i Ô!1×!CÒ!CÑ!EÔ!EØ# ZÐ0ñ"1àñ"ð Ô'×6Ò6Ñ8Ô8Ý”w—|’| DÔ$4×$CÒ$CÑ$EÔ$EØ$(¤J×$AÒ$AÑ$CÔ$CñEô EàÔ'×5Ò5Ñ7Ô7ØÔ'×3Ò3Ñ5Ô5ð	7ñ"7ð .:ÐAÐ(Ð)Ð)¸rñ"Cñ 	Dô 	Dð 	Dð 	Dð 	Dr>   r§  r+  r¨  c                óî   — |                       | j        ddd¦  «        }|                      |g ¦  «         |                     dd¦  «         |                      |¦  «         |                      ||¦  «         d S )NrÊ  r   rŸ  r^   zGenerates coverage reports)rH  rå   rÔ  rô   rC  Úgenerate_coverage_legacy_rules©rs   r§  r¨  rÕ   s       r<   r•  z$NinjaBackend.generate_coverage_rulesž  sy   € Ø×$Ò$ TÔ%5°zÐCSÐU\Ñ]Ô]ˆØ×&Ò& q¨"Ñ-Ô-Ð-Ø	�
Š
�=Ð">Ñ?Ô?Ð?Ø�Š�qÑÔÐØ×+Ò+¨I°}ÑEÔEÐEÐEÐEr>   c                ó6  — |                       | j        ddd¦  «        }|                      |dg¦  «         |                     dd¦  «         |                      |¦  «         |�r4|                       | j        ddd¦  «        }|                      |dg¦  «         |                     dd	¦  «         |                      |¦  «         |                       | j        d
dd¦  «        }|                      |dg¦  «         |                     dd¦  «         |                      |¦  «         t          j        |d¦  «        rc|                       | j        ddd¦  «        }|                      |dg¦  «         |                     dd¦  «         |                      |¦  «         d S d S d S )Nzcoverage-htmlr   rŸ  z--htmlr^   zGenerates HTML coverage reportzcoverage-xmlz--xmlzGenerates XML coverage reportzcoverage-textz--textzGenerates text coverage reportz>=4.2zcoverage-sonarqubez--sonarqubez'Generates Sonarqube XML coverage report)rH  rå   rÔ  rô   rC  r   rœ  r×  s       r<   rÖ  z+NinjaBackend.generate_coverage_legacy_rules¥  s®  € Ø×$Ò$ TÔ%5°ÐHXÐZaÑbÔbˆØ×&Ò& q¨8¨*Ñ5Ô5Ð5Ø	�
Š
�=Ð"BÑCÔCÐCØ�Š�qÑÔÐàñ 	"Ø×(Ò(¨Ô)9¸>ÐK[Ð]dÑeÔeˆAØ×*Ò*¨1¨w¨iÑ8Ô8Ð8Ø�JŠJ�}Ð&EÑFÔFÐFØ�NŠN˜1ÑÔÐà×(Ò(¨Ô)9¸?ÐL\Ð^eÑfÔfˆAØ×*Ò*¨1¨x¨jÑ9Ô9Ð9Ø�JŠJ�}Ð&FÑGÔGÐGØ�NŠN˜1ÑÔÐåÔ'¨°wÑ?Ô?ð "Ø×,Ò,¨TÔ-=Ð?SÐUeÐgnÑoÔo�Ø×.Ò.¨q°=°/ÑBÔBÐBØ—
’
˜=Ð*SÑTÔTÐTØ—’˜qÑ!Ô!Ð!Ð!Ð!ð	"ð 	"ð"ð "r>   c                óx  — |                       ¦   «          |                      | j        ddd¦  «        }|                     d¦  «         |                     dd¦  «         |                     d| j                             ¦   «         ddgz   ¦  «         |                     d	d
¦  «         |                      |¦  «         d S )NÚinstallr   rŸ  ÚallrZ   zInstalling files.r¬  ú--no-rebuildr[   r«  )Úcreate_install_data_filesrH  rå   rí   rô   r   rÍ  rC  ©rs   rG  s     r<   r’  zNinjaBackend.generate_install¼  s³   € Ø×&Ò&Ñ(Ô(Ð(Ø×'Ò'¨Ô(8¸)ÐEUÐW^Ñ_Ô_ˆØ�Š�UÑÔÐØ�Š�fÐ1Ñ2Ô2Ð2Ø�Š�i Ô!1×!CÒ!CÑ!EÔ!EÈÐTbÐHcÑ!cÑdÔdÐdØ�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                óJ  — |                       ¦   «          | j                             d¦  «        ddgz   }| j        j                             t          d¦  «        ¦  «        s|dgz  }| j        j                             t          d¦  «        ¦  «        r|dgz  }|                      | j        ddd	d
g¦  «        }|                     d|¦  «         |                     dd¦  «         |                     dd¦  «         |  	                    |¦  «         | j                             d¦  «        g d¢z   }|                      | j        ddd	d
g¦  «        }|                     d|¦  «         |                     dd¦  «         |                     dd¦  «         |  	                    |¦  «         d S )NTÚtestrÜ  Ústdsplitz--no-stdsplitÚ	errorlogsz--print-errorlogsr   rÛ  rŸ  r¬  rZ   zRunning all tests.r[   r«  )rà  z--benchmarkz	--logbaseÚbenchmarklogz--num-processes=1rÜ  Ú	benchmarkzRunning benchmark suite.)
Úserialize_testsr   rÍ  r^  Ú
get_optionr$   rH  rå   rô   rC  ©rs   rK   rG  s      r<   r‘  zNinjaBackend.generate_testsÅ  sµ  € Ø×ÒÑÔÐØÔ×0Ò0°Ñ6Ô6¸&À.Ð9QÑQˆØÔÔ(×3Ò3µI¸jÑ4IÔ4IÑJÔJð 	%Ø�OÐ$Ñ$ˆCØÔÔ$×/Ò/µ	¸+Ñ0FÔ0FÑGÔGð 	)ØÐ'Ð(Ñ(ˆCØ×'Ò'¨Ô(8¸&ÐBRÐUZÐ\cÐTdÑeÔeˆØ�Š�i Ñ%Ô%Ð%Ø�Š�fÐ2Ñ3Ô3Ð3Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐð Ô×0Ò0°Ñ6Ô6ð :Að :Að :Añ Aˆð ×'Ò'¨Ô(8¸+ÐGWÐZ_ÐahÐYiÑjÔjˆØ�Š�i Ñ%Ô%Ð%Ø�Š�fÐ8Ñ9Ô9Ð9Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                óæ  — g | _         i | _        |                      t          d¦  «        ¦  «         |                      ¦   «          |                      t          d¦  «        ¦  «         |                      ¦   «          |                      t          d¦  «        ¦  «         |                      ¦   «          |                      ¦   «          |                      t          d¦  «        ¦  «         |                      t          ddgg dd¬	¦  «        ¦  «         |                      t          d
dgg dddd¬¦  «        ¦  «         |                      t          d| j
                             ¦   «         ddgz   ddgd¦  «        ¦  «         | j
                             ¦   «         dd| j
                             ¦   «         | j
                             ¦   «         gz   }|                      t          d|g dd¬	¦  «        ¦  «         d S )NzRules for module scanning.zRules for compiling.zRules for linking.zOther rulesr   z$COMMANDz$DESCú
restat = 1©r¯   r¡  Úgccr¨   )r­   r®   r¯   Ú	COPY_FILErÉ  r  ú$inú$outzCopying $in to $outÚ
regenerateÚREGENERATE_BUILDzRegenerating build files.zgenerator = 1)rÉ  ÚruledictÚadd_rule_commentr‘   Úgenerate_scanner_rulesÚgenerate_compile_rulesÚgenerate_static_link_rulesÚgenerate_dynamic_link_rulesÚadd_rulerš   r   rÍ  rÎ  r‚  )rs   r¢   s     r<   r‹  zNinjaBackend.generate_rulesÜ  s  € ØˆŒ
ØˆŒà×Ò�lÐ+GÑHÔHÑIÔIÐIØ×#Ò#Ñ%Ô%Ð%Ø×Ò�lÐ+AÑBÔBÑCÔCÐCØ×#Ò#Ñ%Ô%Ð%Ø×Ò�lÐ+?Ñ@Ô@ÑAÔAÐAØ×'Ò'Ñ)Ô)Ð)Ø×(Ò(Ñ*Ô*Ð*Ø×Ò�l¨=Ñ9Ô9Ñ:Ô:Ð:ð 	�Š•iÐ 0°:°,ÀÀGØ&2ð4ñ 4ô 4ñ 	5ô 	5ð 	5à�Š•iÐ 4°z°lÀBÈØ%*°JØ&2ð4ñ 4ô 4ñ 	5ô 	5ð 	5ð 	�Š•i ¨TÔ-=×-OÒ-OÑ-QÔ-QÐUaÐciÐTjÑ-jØ!&¨ Ð1FñHô Hñ 	Iô 	Ið 	Ið Ô×.Ò.Ñ0Ô0ØØØÔ×,Ò,Ñ.Ô.ØÔ×+Ò+Ñ-Ô-ð/ñ/ˆð
 	�Š•iÐ 2Ø ! 2Ø ;Ø&5ð7ñ 7ô 7ñ 	8ô 	8ð 	8ð 	8ð 	8r>   c                ó:   — | j                              |¦  «         d S rr   )rÉ  ró   r”   s     r<   rò  zNinjaBackend.add_rule_commentü  s   € ØŒ
×Ò˜'Ñ"Ô"Ð"Ð"Ð"r>   c                ó:   — | j                              |¦  «         d S rr   )rŒ  ró   r”   s     r<   rŽ  zNinjaBackend.add_build_commentÿ  s   € ØÔ×"Ò" 7Ñ+Ô+Ð+Ð+Ð+r>   c                ó¤   — |j         | j        v rt          d|j         › d�¦  «        ‚| j                             |¦  «         || j        |j         <   d S )NzTried to add rule z twice.)rª   rñ  r   rÉ  ró   )rs   r³   s     r<   r÷  zNinjaBackend.add_rule  sW   € ØŒ9˜œÐ%Ð%Ý Ð!H°d´iÐ!HÐ!HÐ!HÑIÔIÐIØŒ
×Ò˜$ÑÔÐØ#'ˆŒ�d”iÑ Ð Ð r>   c                ó  —  |j         ¦   «          | j                             |¦  «         |j        dk    rM|j        | j        v r| j        |j                 |_        d S t          j        d|j        › d|j        › �¦  «         d S d S )Nrö   zbuild statement for z references non-existent rule )	r  rŒ  ró   râ   rñ  r³   r   r–  rá   )rs   r   s     r<   rC  zNinjaBackend.add_build  s�   € ØˆÔÑÔÐØÔ×"Ò" 5Ñ)Ô)Ð)àŒ>˜WÒ$Ð$àŒ~ ¤Ð.Ð.Ø!œ]¨5¬>Ô:�”
�
�
å”Ðv°EÔ4FÐvÐvÐfkÔftÐvÐvÑwÔwÐwÐwÐwð %Ð$r>   c                óª   — | j         D ]+}t          |t          ¦  «        r|                     ¦   «          Œ,| j        D ]}|                     |¦  «         Œd S rr   )rŒ  rŸ   rÝ   rÿ   rÉ  r—   )rs   r˜   ÚbÚrs       r<   r™  zNinjaBackend.write_rules  sj   € ØÔ$ð 	*ð 	*ˆAÝ˜!Õ.Ñ/Ô/ð *Ø×'Ò'Ñ)Ô)Ð)øà”ð 	ð 	ˆAØ�GŠG�GÑÔÐÐð	ð 	r>   c                ób   — t          | j        d¬¦  «        D ]}|                     |¦  «         Œd S )NzWriting build.ninjarx  )r    rŒ  r—   )rs   r˜   rý  s      r<   rš  zNinjaBackend.write_builds  sA   € Ý˜TÔ0Ð7LÐMÑMÔMð 	ð 	ˆAØ�GŠG�GÑÔÐÐð	ð 	r>   c                ó¢   — |                       t          d¦  «        ¦  «         t          | j        ddd¦  «        }|                      |¦  «         d S )Nz&Phony build target, always out of daterŸ  rö   rº   )rŽ  r‘   rÝ   rå   rC  rÞ  s     r<   r�  zNinjaBackend.generate_phony  sM   € Ø×Ò�|Ð,TÑUÔUÑVÔVÐVÝ  Ô!1°7¸GÀRÑHÔHˆØ�Š�tÑÔÐÐÐr>   ú	build.Jarc           	     óà  ‡ ‡— ‰                      ¦   «         }t          j                             ‰                      ‰¦  «        |¦  «        }‰                     ¦   «         }‰                     ¦   «         }g }‰j        d         }d}d}	d}
d}‰                     ¦   «         }|dk    rd}
‰  	                    ‰¦  «        }g }| 
                    ¦   «         D ]@}t          j        |¦  «        }|                     d¦  «        r|                     |¦  «         ŒA‰                      ‰|¦  «        }||z   D ]/}‰                      |‰||¦  «        }|                     |¦  «         Œ0ˆ ˆfd„|D ¦   «         }t          j                             ‰                      ‰¦  «        d	d
¦  «        }t          j                             ‰ j                             ¦   «         |¦  «        }t          j        t          j                             |¦  «        d¬¦  «         t-          |dd¬¦  «        5 }t/          ‰j        ¦  «        rP|                     d¦  «         ˆ fd„‰j        D ¦   «         }|                     d                     |¦  «        ¦  «         |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   d}||	z   |
z   |z   g}|                     |¦  «         |
dk    r|                     |¦  «         |                     ‰                      ‰¦  «        ¦  «         |d‰                      ‰¦  «        dgz  }t7          ‰ j        ||g ¦  «        }|                     |¦  «         |rO|                     ‰                      tA          ‰                      ‰¦  «        ¦  «        |¦  «        d         ¦  «         | !                    d|¦  «         ‰  "                    |¦  «         ‰  #                    ‰||||¦  «         d S )NÚjavar¢   r;   rº   rp  rÕ   ú.javac                óv   •— g | ]5}t           j                             ‰                     ‰¦  «        |¦  «        ‘Œ6S rx   ©rU   re  rÆ   r+  )r‰   rŠ   rs   rã  s     €€r<   rŒ   z4NinjaBackend.generate_jar_target.<locals>.<listcomp>?  s8   ø€ ÐcÐcÐcÐST�"œ'Ÿ,š, t×'BÒ'BÀ6Ñ'JÔ'JÈAÑNÔNÐcÐcÐcr>   zMETA-INFzMANIFEST.MFTr©  rQ  rM  rN  zClass-Path: c                óš   •— g | ]G}t           j                             ‰                     |¦  «        |                     ¦   «         ¦  «        ‘ŒHS rx   ©rU   re  rÆ   rÚ  Úget_filename©r‰   r�   rs   s     €r<   rŒ   z4NinjaBackend.generate_jar_target.<locals>.<listcomp>F  sB   ø€ ÐpÐpÐpÐWX�BœGŸLšL¨×)<Ò)<¸QÑ)?Ô)?ÀÇÂÑAQÔAQÑRÔRÐpÐpÐpr>   r½   rd   Újava_LINKERú-Cr  r   ÚARGS)$r	  rU   re  rÆ   rÚ  rñ  Úget_java_resourcesr   Úget_main_classrî  rC  r   rê  Úendswithró   Ú"determine_single_java_compile_argsÚgenerate_single_java_compiler+  r   r‚  r.  ÚdirnamerY  ÚanyrÞ  r—   r&  rÝ   rå   rí   rï   Ú)_NinjaBackend__generate_sources_structurer
   rô   rC  r  )rs   rã  rö  Úoutname_relÚsrc_listÚ	resourcesÚ
class_listrm  r¢   r;   rÕ   rp  Ú
main_classr  Úgen_src_listrí  re  Úcompile_argsræ  Úplain_class_pathÚclass_dep_listÚmanifest_pathÚmanifest_fullpathÚmanifestÚcp_pathsÚjar_ruleÚcommandsrG  s   ``                          r<   r8  z NinjaBackend.generate_jar_target$  s  øø€ Ø×#Ò#Ñ%Ô%ˆÝ”g—l’l 4×#6Ò#6°vÑ#>Ô#>ÀÑFÔFˆØ×%Ò%Ñ'Ô'ˆØ×-Ò-Ñ/Ô/ˆ	Øˆ
ØÔ# FÔ+ˆØˆØˆØˆØˆØ×*Ò*Ñ,Ô,ˆ
Ø˜ÒÐØˆAð !×=Ò=¸fÑEÔEÐØˆØ(×-Ò-Ñ/Ô/ð 	-ð 	-ˆGÝÔ.¨wÑ7Ô7ˆGØ×Ò Ñ(Ô(ð -Ø×#Ò# GÑ,Ô,Ð,øà×>Ò>¸vÀxÑPÔPˆØ˜lÑ*ð 	0ð 	0ˆCØ#×@Ò@ÀÀfÈhÐXdÑeÔeÐØ×ÒÐ.Ñ/Ô/Ð/Ð/ØcÐcÐcÐcÐcÐXbÐcÑcÔcˆÝœŸš T×%@Ò%@ÀÑ%HÔ%HÈ*ÐVcÑdÔdˆÝœGŸLšL¨Ô)9×)GÒ)GÑ)IÔ)IÈ=ÑYÔYÐÝ
Œ•B”G—O’OÐ$5Ñ6Ô6ÀÐFÑFÔFÐFÝÐ# S°7Ð;Ñ;Ô;ð 	!¸xÝ�6Ô&Ñ'Ô'ð 3Ø—’˜~Ñ.Ô.Ð.ØpÐpÐpÐpÐ\bÔ\oÐpÑpÔp�Ø—’˜sŸxšx¨Ñ1Ô1Ñ2Ô2Ð2Ø�NŠN˜4Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð !ˆØ˜‘E˜A‘I ‘M�?ˆØ�Š˜Ñ&Ô&Ð&Ø�Š7ˆ7Ø�OŠO˜JÑ'Ô'Ð'Ø�Š˜×0Ò0°Ñ8Ô8Ñ9Ô9Ð9ð 	�T˜4×6Ò6°vÑ>Ô>ÀÐDÑDˆÝ  Ô!1°;ÀÈ"ÑMÔMˆØ�Š�^Ñ$Ô$Ð$Øð 	zà×Ò˜d×?Ò?ÅÀT×E`ÒE`ÐagÑEhÔEhÑ@iÔ@iÐktÑuÔuÐvwÔxÑyÔyÐyØ�Š�f˜hÑ'Ô'Ð'Ø�Š�tÑÔÐà×/Ò/°¸À,ÐPXÐZfÑgÔgÐgÐgÐgs   ÈA:J!Ê!J%Ê(J%c                ó>  — g }g }|j         D �]�}t          j                             | j        |j        |¦  «        }|                     d¦  «        rd|z   }�n.|                     d¦  «        s|                     d¦  «        rñt          j                             t          j                             |¦  «        ¦  «        d         dz   }t          j                             |  	                    |¦  «        |¦  «        }t          | j        |d|¦  «        }	|	                     dd||g¦  «         |	                     d	d
|› �¦  «         |                      |	¦  «         |                     |¦  «         d|z   }nt          d|› d�¦  «        ‚|                     |¦  «         �Œ�||fS )Nz
.resourcesz
-resource:z.txtz.resxr   r   r¬  ÚresgenrZ   zCompiling resource zUnknown resource file r  )r  rU   re  rÆ   ró  rµ  r  rù  Úbasenamer+  rÝ   rå   rô   rC  ró   r'   )
rs   rã  r¬   r­   rþ  Úrel_sourcefiler§   Ú	ofilebaseÚ	ofilenamerG  s
             r<   Úgenerate_cs_resource_tasksz'NinjaBackend.generate_cs_resource_tasks]  s‹  € ØˆØˆØÔ!ð 	ñ 	ˆAÝœWŸ\š\¨$Ô*;¸V¼]ÈAÑNÔNˆNØ�zŠz˜,Ñ'Ô'ð FØ  >Ñ1�‘Ø—’˜FÑ#Ô#ð 
F q§z¢z°'Ñ':Ô':ð 
FÝœG×,Ò,­R¬W×-=Ò-=¸aÑ-@Ô-@ÑAÔAÀ!ÔDÀ|ÑS�	ÝœGŸLšL¨×)DÒ)DÀVÑ)LÔ)LÈiÑXÔX�	Ý(¨Ô)9¸9ÐFVÐXfÑgÔg�Ø—’˜i¨(°NÀIÐ)NÑOÔOÐOØ—’˜fÐ&L¸NÐ&LÐ&LÑMÔMÐMØ—’˜tÑ$Ô$Ð$Ø—’˜IÑ&Ô&Ð&Ø  9Ñ,��å&Ð'DÀÐ'DÐ'DÐ'DÑEÔEÐEØ�KŠK˜‰NŒNˆN‰NØ�TˆzÐr>   c                óÌ  ‡ — |                      t          d¦  «        ¦  «        }|                     ¦   «         }t          j                             ‰                      |¦  «        |¦  «        }|                     ¦   «         }|j        d         }ˆ fd„|D ¦   «         }g }| 	                    |j
                             dg ¦  «        ¦  «        }	|	|                     |¦  «        z  }	|	|                     |                      t          d¦  «        ¦  «        ¦  «        z  }	|	|                     |                      t          d¦  «        ¦  «        ¦  «        z  }	t          |t           j        ¦  «        r|	                     d¦  «         n?t          |t           j        ¦  «        r|	                     d¦  «         nt)          d¦  «        ‚‰                      |¦  «        \  }
}|	|
z  }	||z  }|	|                     |¦  «        z  }	|j        D ]t}t          j                             ‰                      |¦  «        |                     ¦   «         ¦  «        }|	|                     |¦  «        z  }	|                     |¦  «         Œud	|	v r||d
z   g}n|g}‰                      |¦  «        }g }|                     ¦   «         D ]�}|                     ¦   «                              d¦  «        r2|                     t          j                             |¦  «        ¦  «         |                     t          j                             |¦  «        ¦  «         ŒŽ|                     ¦   «         D ])}|	                     |                     ¦   «         ¦  «         Œ*|	‰ j                              ||j!        |j"        ¦  «        z  }	|	‰ j         #                    ||j"        ¦  «        z  }	tI          ‰ j%        |‰  &                    |¦  «        ||z   ¦  «        }| '                    |¦  «         | (                    d|	¦  «         ‰  )                    |¦  «         ‰  *                    |¦  «         ‰  +                    |||	||¦  «         d S )NÚ	buildtyper  c                ó~   •— g | ]9}t           j                             |                     ‰j        ¦  «        ¦  «        ‘Œ:S rx   )rU   re  r  rò  ró  )r‰   rC   rs   s     €r<   rŒ   z3NinjaBackend.generate_cs_target.<locals>.<listcomp>x  s:   ø€ Ð]Ð]Ð]Èq•B”G×$Ò$ Q×%6Ò%6°tÔ7HÑ%IÔ%IÑJÔJÐ]Ð]Ð]r>   Úoptimizationr
  z-target:exez-target:libraryzUnknown C# target type.z-gz.mdbz.csr  ),ræ  r$   r	  rU   re  rÆ   rÚ  rñ  r   Úcompiler_argsry  rW   Úget_buildtype_argsÚget_optimization_argsÚget_debug_argsrŸ   r   rØ  ró   rá  r   r+  Úget_output_argsrÞ  Úget_link_argsrî  rC  rú  r  r  Úget_external_depsÚextend_directÚget_project_argsr¾  rÊ  Úget_global_argsrÝ   rå   rÅ  rí   rô   rC  r@  r  )rs   rã  r-  rö  r  r  rm  Úrel_srcsr­   r$  Úresource_argsÚresource_depsr�   ÚlnamerÑ  r  Úgenerated_rel_srcsrí  rì   rG  s   `                   r<   r;  zNinjaBackend.generate_cs_targetr  s  ø€ Ø×%Ò%¥i°Ñ&<Ô&<Ñ=Ô=ˆ	Ø×#Ò#Ñ%Ô%ˆÝ”g—l’l 4×#6Ò#6°vÑ#>Ô#>ÀÑFÔFˆØ×%Ò%Ñ'Ô'ˆØÔ# DÔ)ˆØ]Ð]Ð]Ð]ÐT\Ð]Ñ]Ô]ˆØˆØ×)Ò)¨&Ô*;×*?Ò*?ÀÀbÑ*IÔ*IÑJÔJˆØ�H×/Ò/°	Ñ:Ô:Ñ:ˆØ�H×2Ò2°6×3DÒ3DÅYÈ~ÑE^ÔE^Ñ3_Ô3_Ñ`Ô`Ñ`ˆØ�H×+Ò+¨F×,=Ò,=½iÈÑ>PÔ>PÑ,QÔ,QÑRÔRÑRˆÝ�f�eÔ.Ñ/Ô/ð 	<Ø�OŠO˜MÑ*Ô*Ð*Ð*Ý˜¥Ô 3Ñ4Ô4ð 	<Ø�OŠOÐ-Ñ.Ô.Ð.Ð.å Ð!:Ñ;Ô;Ð;Ø)-×)HÒ)HÈÑ)PÔ)PÑ&ˆ˜Ø�MÑ!ˆØ�ÑˆØ�H×,Ò,¨[Ñ9Ô9Ñ9ˆØÔ$ð 	ð 	ˆAÝ”G—L’L ×!4Ò!4°QÑ!7Ô!7¸¿ºÑ9IÔ9IÑJÔJˆEØ˜×.Ò.¨uÑ5Ô5Ñ5ˆHØ�KŠK˜ÑÔÐÐØ�8ÐÐØ" K°&Ñ$8Ð9ˆGˆGà"�mˆGØ ×=Ò=¸fÑEÔEÐØÐØ(×-Ò-Ñ/Ô/ð 	3ð 	3ˆGØ�}Š}‰Œ×'Ò'¨Ñ.Ô.ð EØ"×)Ò)­"¬'×*:Ò*:¸7Ñ*CÔ*CÑDÔDÐDØ�KŠK�œ×(Ò(¨Ñ1Ô1Ñ2Ô2Ð2Ð2à×+Ò+Ñ-Ô-ð 	8ð 	8ˆCØ×"Ò" 3×#4Ò#4Ñ#6Ô#6Ñ7Ô7Ð7Ð7Ø�D”J×/Ò/°¸&Ô:KÈVÔM_Ñ`Ô`Ñ`ˆØ�D”J×.Ò.¨x¸Ô9KÑLÔLÑLˆå  Ô!1°7¸D×<VÒ<VÐW_Ñ<`Ô<`ÐbjÐmÑbñ  Aô  AˆØ�Š�TÑÔÐØ�Š�f˜hÑ'Ô'Ð'Ø�Š�tÑÔÐà×*Ò*¨6Ñ2Ô2Ð2Ø×/Ò/°¸À(ÈHÐVhÑiÔiÐiÐiÐir>   c                ót  — g }||                      |                     t          d¦  «        ¦  «        ¦  «        z  }|| j                             ||j        ¦  «        z  }|| j                             ||j        |j        ¦  «        z  }||                     ¦   «         z  }|| 	                    |  
                    |¦  «        ¦  «        z  }||                     ¦   «         z  }|                     ¦   «         }t          j                             | j        |¦  «        t          j        z   }|t          j                             |¦  «        t          j        z   z  }|j        D ]T}|                     ¦   «         D ]=}|t          j                             | j        |j        |¦  «        t          j        z   z  }Œ>ŒU|d|gz  }|S )Nr-  z-sourcepath)r1  ræ  r$   r   r9  rÊ  r8  r¾  Úget_java_argsr4  r+  Úget_classpath_argsÚ
get_subdirrU   re  rÆ   ró  Úpathsepr  Úinclude_dirsÚget_incdirsÚcurdir)rs   rã  rm  r¬   rF  Ú
sourcepathrŠ   Úidirs           r<   r  z/NinjaBackend.determine_single_java_compile_args¤  sŽ  € ØˆØ�×+Ò+¨F×,=Ò,=½iÈÑ>TÔ>TÑ,UÔ,UÑVÔVÑVˆØ�”
×*Ò*¨8°VÔ5GÑHÔHÑHˆØ�”
×+Ò+¨H°fÔ6GÈÔI[Ñ\Ô\Ñ\ˆØ�×$Ò$Ñ&Ô&Ñ&ˆØ�×(Ò(¨×)DÒ)DÀVÑ)LÔ)LÑMÔMÑMˆØ�×)Ò)Ñ+Ô+Ñ+ˆØ×"Ò"Ñ$Ô$ˆÝ”W—\’\ $Ô"3°VÑ<Ô<½r¼zÑIˆ
Ø•b”g×&Ò& vÑ.Ô.µ´Ñ;Ñ;ˆ
ØÔ$ð 	[ð 	[ˆAØŸš™œð [ð [�Ø�bœgŸlšl¨4Ô+<¸a¼hÈÑMÔMÕPRÔPZÑZÑZ�
�
ð[à� 
Ð+Ñ+ˆØˆr>   c                ól  ‡ — ˆ fd„|j         D ¦   «         }‰                      |¦  «        }|                     ¦   «         D ],}|                     d¦  «        r|                     |¦  «         Œ-|                     ‰ j        ¦  «        }|j        d d…         dz   }t          j	         
                    ‰                      |¦  «        |¦  «        }	t          ‰ j        |	‰                      |¦  «        |¦  «        }
|
                     |¦  «         |
                     d|¦  «         ‰                      |
¦  «         |S )Nc                óš   •— g | ]G}t           j                             ‰                     |¦  «        |                     ¦   «         ¦  «        ‘ŒHS rx   r  r
  s     €r<   rŒ   z=NinjaBackend.generate_single_java_compile.<locals>.<listcomp>¶  sA   ø€ ÐdÐdÐdÈ1•”—’˜T×0Ò0°Ñ3Ô3°Q·^²^Ñ5EÔ5EÑFÔFÐdÐdÐdr>   r  éüÿÿÿÚclassr  )rÞ  rî  rC  r  ró   rò  ró  rö  rU   re  rÆ   r+  rÝ   rå   rÅ  rí   rô   rC  )rs   ræ  rã  rm  r¬   r­   r  rí  r  Úrel_objÚelements   `          r<   r  z)NinjaBackend.generate_single_java_compileµ  s-  ø€ ØdÐdÐdÐdÐPVÔPcÐdÑdÔdˆØ ×=Ò=¸fÑEÔEÐØ(×-Ò-Ñ/Ô/ð 	%ð 	%ˆGØ×Ò Ñ(Ô(ð %Ø—’˜GÑ$Ô$Ð$øØ×%Ò% dÔ&7Ñ8Ô8ˆØœ9 S b Sœ>¨GÑ3ÐÝ”'—,’,˜t×:Ò:¸6ÑBÔBÐDTÑUÔUˆÝ# DÔ$4°g¸t×?YÒ?YÐZbÑ?cÔ?cÐelÑmÔmˆØ�Š˜ÑÔÐØ×Ò˜ Ñ&Ô&Ð&Ø�Š�wÑÔÐØÐr>   c                ó`   — d}ddg}d}|                       t          ||g |¦  «        ¦  «         d S )Nr  Újarú$ARGSzCreating JAR $out)r÷  rš   )rs   r³   r«   r^   s       r<   Úgenerate_java_linkzNinjaBackend.generate_java_linkÄ  s<   € ØˆØ˜'Ð"ˆØ)ˆØ�Š•i  g¨r°;Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@r>   c                óè  — t          ¦   «         }t          j        |j        |j        ¦  «        D ]¶}|                     ¦   «         sŒ|j        D ]—}t          |d¦  «        r|j        }| 	                    d¦  «        d         t          j        d         v rQ|j        }t          j                             |                      |¦  «        |¦  «        }|                     |¦  «          nŒ˜Œ·t%          |¦  «        S )a  
        Peek into the sources of BuildTargets we're linking with, and if any of
        them was built with Vala, assume that it also generated a .vapi file of
        the same name as the BuildTarget and return the path to it relative to
        the build directory.
        rö  r  rÌ   rÐ  )r   rÜ  rÝ  rÞ  rß  Úis_linkable_targetr  rÑ  rö  r–   r   rd  Ú	vala_vapirU   re  rÆ   rÚ  rê   rŽ   )rs   rã  rr  rì   rŠ   ÚvapinameÚfullnames          r<   Údetermine_dep_vapisz NinjaBackend.determine_dep_vapisÊ  sç   € õ ‘”ˆÝ”? 6Ô#6¸Ô8QÑRÔRð 
	ð 
	ˆCØ×)Ò)Ñ+Ô+ð ØØ”[ð ð �Ý˜1˜gÑ&Ô&ð  Øœ�AØ—7’7˜3‘<”< Ô#¥yÔ'>¸vÔ'FÐFÐFØ"œ}�HÝ!œwŸ|š|¨D×,?Ò,?ÀÑ,DÔ,DÀhÑOÔO�HØ—J’J˜xÑ(Ô(Ð(Ø�Eð	 Gøõ
 �F‰|Œ|Ðr>   r¥  úyT.Tuple[T.MutableMapping[str, File], T.MutableMapping[str, File], T.Tuple[T.MutableMapping[str, File], T.MutableMapping]]c                ó|  — t          ¦   «         }t          ¦   «         }t          ¦   «         }t          ¦   «         }|                     ¦   «         D ]}}t          |t          ¦  «        st	          d|›d|›�¦  «        ‚|                     | j        ¦  «        }|                     d¦  «        r|}n|                     d¦  «        r|}n|}|||<   Œ~|                     ¦   «         D ]×}	|	 	                    ¦   «         D ]À}|  
                    ||	|¦  «        }|                     d¦  «        r|}n|                     d¦  «        r|}n|}||v rl||         |	urbd                     |t          |	¦  «        j        |	j        ||         j        t          ||         ¦  «        j        ¦  «        }
t	          |
¦  «        ‚|	||<   ŒÁŒØ||||ffS )a~  
        Splits the target's sources into .vala, .gs, .vapi, and other sources.
        Handles both pre-existing and generated sources.

        Returns a tuple (vala, vapi, others) each of which is a dictionary with
        the keys being the path to the file (relative to the build directory)
        and the value being the object that generated or represents the file.
        rð  z$ must be of type mesonlib.File, not )z.valaz.gsz.vapizNDuplicate output {0!r} from {1!r} {2!r}; conflicts with {0!r} from {4!r} {3!r})r   rñ  rŸ   r   r'   rò  ró  r  rÒ  rÕ  r×  rÅ   Útyperu   rª   )rs   r¥  rÐ  ÚvapiÚothersÚ	othersgenrC   rp  Úsrctyperì  rc  s              r<   Úsplit_vala_sourceszNinjaBackend.split_vala_sourcesß  sí  € õ -8©M¬MˆÝ,7©M¬MˆÝ.9©m¬mˆÝ1<±´ˆ	à—’‘”ð 	ð 	ˆAõ ˜a¥Ñ&Ô&ð pÝ&Ð'nÀÐ'nÐ'nÐijÐ'nÐ'nÑoÔoÐoØ×!Ò! $Ô"3Ñ4Ô4ˆAØ�zŠzÐ*Ñ+Ô+ð !Ø��Ø—’˜GÑ$Ô$ð !Ø��à �ØˆG�A‰JˆJà×-Ò-Ñ/Ô/ð 	$ð 	$ˆFØ×'Ò'Ñ)Ô)ð $ð $�Ø×1Ò1°!°V¸QÑ?Ô?�Ø—:’:Ð.Ñ/Ô/ð (Ø"�G�GØ—Z’Z Ñ(Ô(ð (Ø"�G�Gð (�Gà˜�<�< G¨A¤J°fÐ$<Ð$<ðç#šV A¥t¨F¡|¤|Ô'<¸f¼kØ$+¨A¤J¤OµT¸'À!¼*Ñ5EÔ5EÔ5NñPô Pð õ +¨3Ñ/Ô/Ð/à#�˜‘
�
ð%$ð& �T˜F IÐ.Ð.Ð.r>   úNT.Tuple[T.MutableMapping[str, File], T.MutableMapping[str, File], T.List[str]]c                ó  — |                       |¦  «        \  }}}g }|st          d|j        ›d�¦  «        ‚|j        d         }|                      |¦  «        }g }g }	t          |¦  «        }
t          j                             | j	        | 
                    ¦   «         ¦  «        }|                     ¦   «         D �]Ä\  }}|
                     |¦  «         t          |t          j        t          j        f¦  «        s|j        �rYt          j                             t          j                             |¦  «        ¦  «        d         dz   }t          j                             | j                             ¦   «         | 
                    ¦   «         ¦  «        }t          j                             | j                             ¦   «         |¦  «        }t/          t          j                             ||f¦  «        ¦  «        t/          |¦  «        k    rTt/          |¦  «        j                             |¦  «        }t          j                             t7          |¦  «        |¦  «        }nØt          j                             | j	        | 
                    ¦   «         ¦  «        }|                     |¦  «        rGt          j                             t          j                             ||¦  «        ¦  «        d         dz   }nEt          j                             t          j                             |¦  «        ¦  «        d         dz   }t          j                             ||¦  «        }|                     |¦  «         |	                     |¦  «         �ŒÆ|                      ||¦  «        }||                     | j        j         j!         "                    tG          d¦  «        ¦  «        j$        ¦  «        z  }|d|gz  }|d|gz  }| %                    ¦   «         �rò|d	|j        gz  }t          j                             |  &                    |¦  «        |j'        ¦  «        }|d
|gz  }|j(        r|dgz  }|	                     |¦  «         t          j                             |  &                    |¦  «        |j)        ¦  «        }|dt          j                             d|j)        ¦  «        gz  }|	                     |¦  «         |xj*        |j'        |j)        gz  c_*        |xj+        ddgz  c_+        tY          |j-        ¦  «        dk    r0|j-        d         du r!| j         .                    ¦   «         |j-        d<   tY          |j-        ¦  «        dk    rO|j-        d         du r@t          j                             | j         /                    ¦   «         dd¦  «        |j-        d<   t          |j0        t6          ¦  «        �rt          j                             |  &                    |¦  «        |j0        ¦  «        }|dt          j                             d|j0        ¦  «        gz  }|	                     |¦  «         |j*                             |j0        ¦  «         |j+                             d¦  «         tY          |j-        ¦  «        dk    rN|j-        d         du r?t          j                             | j         /                    ¦   «         d¦  «        |j-        d<   |d          1                    ¦   «         D ]<}t          |td          j3        ¦  «        r |  4                    |¦  «        \  }|d|z   gz  }Œ=g }|j5         "                    dg ¦  «        D ]q}t          |tl          ¦  «        rE| 7                    | j	        ¦  «        }|                     |¦  «         |                     |¦  «         Œ\|                     |¦  «         Œr|  8                    |¦  «        }||z  }||z  }ts          | j:        |	|  ;                    |¦  «        |
|z   ¦  «        }| <                    d|¦  «         | =                    |¦  «         |  >                    |¦  «         |  ?                    ||||
g ¦  «         |d         |d         |fS )z?Vala is compiled into C. Set up all necessary build steps here.zVala library z# has no Vala or Genie source files.rÐ  r   z.cÚ
b_coloroutz--directoryz	--basedirz	--libraryz--headerz--use-headerz--vapiz..Údevelr   Tr   r\  z--girr{   zgir-1.0z--gresources=r  )@r`  r'   rª   r   r+  rŽ   rU   re  rÆ   ró  rB  Úitemsró   rŸ   r   rÓ  r&   Úis_builtrù  r'  r   rÎ  r‚  r	   Ú
commonpathÚparentrƒ  ra   r    ÚrelpathÚgenerate_basic_compiler_argsÚget_colorout_argsr^  rŠ  rW   r$   rÖ   rT  rÚ  rÛ  rA  rU  rÑ  Úinstall_tagr8   Úinstall_dirÚget_includedirÚget_datadirÚvala_girr`  r   ÚGResourceTargetÚget_custom_target_sourcesry  r   rò  rX  rÝ   rå   rÅ  rô   rí   rC  r  )rs   rã  Úvala_srcÚvapi_srcÚ	other_srcÚextra_dep_filesÚvalacÚ	c_out_dirÚ
vala_c_srcÚvalac_outputsÚ	all_filesÚ
srcbasedirÚ	vala_filerì  Úvala_c_fileÚabs_srcbasedirÚabs_vala_fileÚvala_c_subdirÚpath_to_targetr¬   ÚhnamerV  ÚgirnameÚgres_xmlry  r§   ÚrelnameÚdependency_vapisrN  s                                r<   r=  z"NinjaBackend.generate_vala_compile  s   € ð +/×*AÒ*AÀ&Ñ*IÔ*IÑ'ˆ�8˜YØˆØð 	gÝ"Ð#e°6´;Ð#eÐ#eÐ#eÑfÔfÐfàÔ  Ô(ˆØ×/Ò/°Ñ7Ô7ˆ	à"$ˆ
à "ˆå˜‘N”Nˆ	å”W—\’\ $Ô"3°V×5FÒ5FÑ5HÔ5HÑIÔIˆ
Ø#+§>¢>Ñ#3Ô#3ð  	.ñ  	.ÑˆY˜Ø×Ò˜YÑ'Ô'Ð'õ ˜&¥5Ô#5µuÔ7JÐ"KÑLÔLð ZÐPVÔP_ñ ZÝ œg×.Ò.­r¬w×/?Ò/?À	Ñ/JÔ/JÑKÔKÈAÔNÐQUÑU�å!#¤§¢¨dÔ.>×.MÒ.MÑ.OÔ.OÐQW×QbÒQbÑQdÔQdÑ!eÔ!e�Ý "¤§¢¨TÔ-=×-KÒ-KÑ-MÔ-MÈyÑ YÔ Y�Ý�BœG×.Ò.°ÀÐ/NÑOÔOÑPÔPÕT\Ð]kÑTlÔTlÒlÐlÝ$,¨]Ñ$;Ô$;Ô$B×$NÒ$NÈ~Ñ$^Ô$^�MÝ"$¤'§,¢,­s°=Ñ/AÔ/AÀ;Ñ"OÔ"O�Køå!#¤§¢¨dÔ.?À×ARÒARÑATÔATÑ!UÔ!U�Ø×'Ò'¨Ñ7Ô7ð ZÝ"$¤'×"2Ò"2µ2´7·?²?À9ÈnÑ3]Ô3]Ñ"^Ô"^Ð_`Ô"aÐdhÑ"h�K�Kå"$¤'×"2Ò"2µ2´7×3CÒ3CÀIÑ3NÔ3NÑ"OÔ"OÐPQÔ"RÐUYÑ"Y�Kåœ'Ÿ,š, y°+Ñ>Ô>ˆKØ×Ò˜kÑ*Ô*Ð*Ø× Ò  Ñ-Ô-Ð-Ñ-à×0Ò0°¸Ñ?Ô?ˆØ�×'Ò'¨Ô(8Ô(AÔ(I×(MÒ(MÍiÐXdÑNeÔNeÑ(fÔ(fÔ(lÑmÔmÑmˆð 	� 	Ð*Ñ*ˆØ�˜jÐ)Ñ)ˆØ×$Ò$Ñ&Ô&ñ #	dà�[ &¤+Ð.Ñ.ˆDå”G—L’L ×!4Ò!4°VÑ!<Ô!<¸fÔ>PÑQÔQˆEØ�Z Ð'Ñ'ˆDØŒð )ð
 ˜Ð(Ñ(�Ø× Ò  Ñ'Ô'Ð'å”w—|’| D×$7Ò$7¸Ñ$?Ô$?ÀÔAQÑRÔRˆHð �X�rœwŸ|š|¨D°&Ô2BÑCÔCÐDÑDˆDØ× Ò  Ñ*Ô*Ð*ØˆNŒN˜vÔ1°6Ô3CÐDÑDˆNŒNØÐÔ 7¨GÐ"4Ñ4ÐÔå�6Ô%Ñ&Ô&¨Ò*Ð*¨vÔ/AÀ!Ô/DÈÐ/LÐ/LØ(,Ô(8×(GÒ(GÑ(IÔ(I�Ô" 1Ñ%Ý�6Ô%Ñ&Ô&¨Ò*Ð*¨vÔ/AÀ!Ô/DÈÐ/LÐ/LÝ(*¬¯ª°TÔ5E×5QÒ5QÑ5SÔ5SÐU[Ð]cÑ(dÔ(d�Ô" 1Ñ%å˜&œ/­3Ñ/Ô/ñ dÝœ'Ÿ,š, t×':Ò':¸6Ñ'BÔ'BÀFÄOÑTÔT�Ø˜¥"¤'§,¢,¨t°V´_Ñ"EÔ"EÐFÑF�Ø×$Ò$ WÑ-Ô-Ð-Ø”×%Ò% f¤oÑ6Ô6Ð6ØÔ"×)Ò)¨'Ñ2Ô2Ð2å�vÔ)Ñ*Ô*¨QÒ.Ð.°6Ô3EÀaÔ3HÈDÐ3PÐ3PÝ,.¬G¯LªL¸Ô9I×9UÒ9UÑ9WÔ9WÐYbÑ,cÔ,c�FÔ& qÑ)à ”l×)Ò)Ñ+Ô+ð 	5ð 	5ˆFÝ˜&¥%Ô"7Ñ8Ô8ð 5Ø ×:Ò:¸6ÑBÔB‘	�Ø˜¨8Ñ3Ð4Ñ4�øØˆ
àÔ"×&Ò& v¨rÑ2Ô2ð 	%ð 	%ˆAÝ˜!�TÑ"Ô"ð %Ø×+Ò+¨DÔ,=Ñ>Ô>�Ø×&Ò& wÑ/Ô/Ð/Ø×!Ò! 'Ñ*Ô*Ð*Ð*à×!Ò! !Ñ$Ô$Ð$Ð$Ø×3Ò3°FÑ;Ô;ÐØÐ+Ñ+ˆØ�
ÑˆÝ# DÔ$4°mØ$(×$>Ò$>¸uÑ$EÔ$EØ$-Ð0@Ñ$@ñBô Bˆð 	×Ò˜ Ñ&Ô&Ð&Ø�Š˜Ñ(Ô(Ð(Ø�Š�wÑÔÐØ×/Ò/°¸¸tÀYÐPRÑSÔSÐSØ˜Œ|˜Y qœ\¨:Ð5Ð5r>   c                ór
  — t          ¦   «         }t          ¦   «         }g }|j        d         }g }||                     ¦   «         z  }||                     |                     t          d¦  «        ¦  «        ¦  «        z  }||                     |                     t          d¦  «        ¦  «        ¦  «        z  }||                     |                     t          d¦  «        ¦  «        ¦  «        z  }||                     | 	                    ¦   «         ¦  «        z  }|| j
                             ||j        ¦  «        z  }|| j
                             ||j        |j        ¦  «        z  }||                     d¦  «        z  }|                     t          d|j        d¬¦  «        ¦  «        }g }|                     ¦   «         D �]2}	|	                     d¦  «        rýt$          j                             |                      |¦  «        |	› d|› �¦  «        }
t-          | j        |
g|                      |¦  «        |	                     | j                             ¦   «         | j                             ¦   «         ¦  «        g¦  «        }|                     d	|¦  «         |                      |¦  «         |                     |
¦  «         |                     |¦  «         �Œ|	||	                      | j!        ¦  «        <   �Œ4g }| "                    ¦   «         D �]}| #                    ¦   «         D �]ú}tI          |tJ          ¦  «        r4t$          j                             |                      |¦  «        |¦  «        }n2t$          j                             | &                    ¦   «         |¦  «        }|                     d¦  «        r»t$          j                             |                      |¦  «        |› d|› �¦  «        }
t-          | j        |
g|                      |¦  «        |g¦  «        }|                     d	|¦  «         |                      |¦  «         |                     |¦  «         |                     |
¦  «         �ŒNtN          j(         )                    | &                    ¦   «         |¦  «        ||<   | j         *                    |¦  «        s]| j         +                    |¦  «        sC| j         ,                    |¦  «        s)t[          j.        |¦  «        s|                     |¦  «         �Œü�Œ|D ]}| /                    |¦  «         Œ|||fS )
zkGenerate rules for transpiling Cython files to C or C++

        XXX: Currently only C is handled.
        r  r-  r
  r/  ra  rv  z.pyxr  r  )0r   r   Úget_always_argsr1  ræ  r$   r3  r2  Úget_option_compile_argsÚget_optionsr   r9  rÊ  r8  r¾  Úget_extra_argsrñ  r  rU   re  rÆ   r+  rÝ   rå   rÅ  r  r   rÎ  r‚  rô   rC  ró   rò  ró  rÒ  rÕ  rŸ   r&   rB  r   r   rÙ  rG  rH  rI  r   rJ  rï   )rs   rã  Ústatic_sourcesr  Úcython_sourcesr  r¬   r¾  Úpyx_sourcesræ  rœ  rN  rä  ÚgenÚssrcrý  s                   r<   r>  z&NinjaBackend.generate_cython_transpile�  sß  € õ 7B±m´mˆÝ9D¹¼ÐØ&(ˆàÔ! (Ô+ˆàˆØ�×&Ò&Ñ(Ô(Ñ(ˆØ�×)Ò)¨&×*;Ò*;½IÀkÑ<RÔ<RÑ*SÔ*SÑTÔTÑTˆØ�×%Ò% f×&7Ò&7½	À'Ñ8JÔ8JÑ&KÔ&KÑLÔLÑLˆØ�×,Ò,¨V×->Ò->½yÈÑ?XÔ?XÑ-YÔ-YÑZÔZÑZˆØ�×.Ò.¨v×/AÒ/AÑ/CÔ/CÑDÔDÑDˆØ�”
×*Ò*¨6°6Ô3EÑFÔFÑFˆØ�”
×+Ò+¨F°FÔ4EÀvÔGYÑZÔZÑZˆØ�×%Ò% hÑ/Ô/Ñ/ˆà×Ò¥	¨*¸fÔ>PÐW_Ð `Ñ `Ô `ÑaÔaˆàˆà×%Ò%Ñ'Ô'ð 	Mñ 	MˆCØ�|Š|˜FÑ#Ô#ð MÝœŸš d×&AÒ&AÀ&Ñ&IÔ&IÈcÈ>È>ÐTWÈ>È>ÑZÔZ�Ý+ØÔ$ v hØ×.Ò.¨vÑ6Ô6Ø×&Ò& tÔ'7×'FÒ'FÑ'HÔ'HÈ$ÔJZ×JhÒJhÑJjÔJjÑkÔkÐlñnô n�ð × Ò  ¨Ñ.Ô.Ð.Ø—’˜wÑ'Ô'Ð'à×%Ò% fÑ-Ô-Ð-Ø×"Ò" 7Ñ+Ô+Ð+Ñ+àIL�˜s×2Ò2°4Ô3DÑEÔEÑFÑFàˆØ×/Ò/Ñ1Ô1ð 	1ñ 	1ˆCØŸšÑ)Ô)ð 1ñ 1�Ý˜c¥=Ñ1Ô1ð @Ýœ7Ÿ<š<¨×(CÒ(CÀFÑ(KÔ(KÈTÑRÔR�D�Dåœ7Ÿ<š<¨¯ªÑ(8Ô(8¸$Ñ?Ô?�DØ—=’= Ñ(Ô(ð 1ÝœWŸ\š\¨$×*EÒ*EÀfÑ*MÔ*MÐRVÈÈÐY\ÈÈÑ_Ô_�FÝ/ØÔ(¨6¨(Ø×2Ò2°6Ñ:Ô:Ø˜ñ ô  �Gð ×$Ò$ V¨TÑ2Ô2Ð2Ø—N’N 7Ñ+Ô+Ð+Ø×&Ò& wÑ/Ô/Ð/à"×)Ò)¨&Ñ1Ô1Ð1Ñ1å.6¬m×.KÒ.KÈCÏNÊNÑL\ÔL\Ð^bÑ.cÔ.cÐ% dÑ+ð  Ô+×5Ò5°dÑ;Ô;ð 1Ø $Ô 0× :Ò :¸4Ñ @Ô @ð1à $Ô 0× ;Ò ;¸DÑ AÔ Að1õ !(Ô 9¸$Ñ ?Ô ?ð1ð $×*Ò*¨4Ñ0Ô0Ð0ùñ11ð2 "ð 	-ð 	-ˆFØ×Ò Ñ,Ô,Ð,Ð,àÐ0°.Ð@Ð@r>   ræ  ú'mesonlib.FileOrString'rœ  r
   c                ó*  — t          |t          ¦  «        r+|                     | j        j        | j        j        ¦  «        }n|}t          | j        t          |¦  «        gd|g¦  «        }| 	                    |¦  «         |  
                    |¦  «         dS )zCCreate a target to copy a source file from one location to another.rì  N)rŸ   r   r  r   r  r  rÝ   rå   ra   rï   rC  )rs   ræ  rœ  ÚinstrrG  s        r<   Ú_generate_copy_targetz"NinjaBackend._generate_copy_targetÖ  s‰   € å�c�4Ñ Ô ð 	Ø×%Ò% dÔ&6Ô&AÀ4ÔCSÔC]Ñ^Ô^ˆEˆEàˆEÝ  Ô!1µC¸±K´K°=À+ÐPUÈwÑWÔWˆØ×Ò˜%Ñ Ô Ð Ø�Š�tÑÔÐÐÐr>   ÚrootÚstructured_sourcesúbuild.StructuredSourcesú%T.Tuple[T.List[str], T.Optional[str]]c           
     ór  — d }g }|j                              ¦   «         D �]\  }}|D �]}t          |t          ¦  «        ri||z  t	          |j        ¦  «        j        z  }|                     t          |¦  «        ¦  «         |  	                    ||¦  «         |€t          |¦  «        }Œ�| 
                    ¦   «         D ]u}	||z  |	z  }|                     t          |¦  «        ¦  «         |  	                    t          t	          |j        ¦  «        |	z  ¦  «        |¦  «         |€t          |¦  «        }Œv�Œ�Œ||fS rr   )r  re  rŸ   r   r
   rö  rª   ró   ra   r•  rÕ  rµ  )
rs   r–  r—  Ú
first_filerä   re  ÚfilesÚfilerÊ   rp  s
             r<   Ú__generate_sources_structurez)NinjaBackend.__generate_sources_structureà  sD  € Ø&*ˆ
Ø!#ˆ	Ø-Ô5×;Ò;Ñ=Ô=ð 	2ñ 	2‰KˆD�%Øð 2ñ 2�Ý˜d¥DÑ)Ô)ð 2Ø ™+­¨T¬ZÑ(8Ô(8Ô(=Ñ=�CØ×$Ò$¥S¨¡X¤XÑ.Ô.Ð.Ø×.Ò.¨t°SÑ9Ô9Ð9Ø!Ð)Ý%(¨¡X¤X˜
øà!×-Ò-Ñ/Ô/ð 2ð 2˜Ø" T™k¨A™o˜Ø!×(Ò(­¨S©¬Ñ2Ô2Ð2Ø×2Ò2µ3µt¸D¼KÑ7HÔ7HÈ1Ñ7LÑ3MÔ3MÈsÑSÔSÐSØ%Ð-Ý),¨S©¬˜Jøñ2ñ2ð ˜*Ð$Ð$r>   rª   ra   Úmain_rust_filer¬   r   Úfrom_subprojectr)  r­   r%  c                óø  — t          j        t          |¦  «        d„ ¦  «        }|sdn|                     d¦  «        d         }	g }
t	          |¦  «        }|D ]j}|dk    r#|
                     t          |¦  «        ¦  «         Œ+|                     d¦  «        r*|
                     |t          d¦  «        d …         ¦  «         Œkt          t          | j
        ¦  «        |||	||
| ||r|nd ¬¦	  «	        }|| j
        |<   d S )Nc                ó,   — |                       d¦  «        S )Nz	--edition)r    )rµ   s    r<   r=   z6NinjaBackend._add_rust_project_entry.<locals>.<lambda>÷  s   € ÐPQ×P\ÒP\Ð]hÑPiÔPi€ r>   r0   ú=rÌ   z--cfg)r*  r)  r,  )r   ÚfirstÚreversedr–   Úiterró   Únextr    r8   r  r?  )rs   rª   rŸ  r¬   r   r)  rœ  r­   Úraw_editionr$  r'  Úarg_itrÚargr  s                 r<   Ú_add_rust_project_entryz$NinjaBackend._add_rust_project_entryô  s  € õ (0¤~µh¸t±n´nÐFiÐFiÑ'jÔ'jˆØ/:Ð!Z  À×@QÒ@QÐRUÑ@VÔ@VÐWYÔ@ZˆàˆÝ#'¨¡:¤:ˆØð 	/ð 	/ˆCØ�gŠ~ˆ~Ø—
’
�4 ™=œ=Ñ)Ô)Ð)Ð)Ø—’ Ñ(Ô(ð /Ø—
’
˜3�s 7™|œ|˜}˜}Ô-Ñ.Ô.Ð.øåÝ�Ô Ñ!Ô!ØØØØØØ$3Ð 3Ø'Ø,9Ð"C & &¸tð

ñ 

ô 

ˆð "'ˆÔ˜ÑÐÐr>   c                óP  ‡ ‡#— |j         d         }|                     ¦   «         }|                     ¦   «         }|t          j        ||¦  «        z  }‰                      |¦  «         d„ t          j        |j        |j        ¦  «        D ¦   «         }g }g }d }|j	        �rø|j	         
                    ¦   «         rX‰                      t          ‰                      |¦  «        ¦  «        dz  |j	        ¦  «        \  }	}|                     |	¦  «         �n‡|j	                             ¦   «         }
t!          |
t"          ¦  «        r|
                     ‰ j        ¦  «        }n«t!          |
t(          ¦  «        rLt*          j                             ‰                      |¦  «        |
                     ¦   «         d         ¦  «        }nJt*          j                             |
                     ¦   «         |
                     ¦   «         d         ¦  «        }|j	                             ¦   «         D ]yŠ#t!          ‰#t"          ¦  «        r.|                     ‰#                     ‰ j        ¦  «        ¦  «         ŒE|                     ˆ#ˆ fd„‰#                     ¦   «         D ¦   «         ¦  «         Œz|                     ¦   «         D ]X}|                     |¦  «        s%t=          d|                     ¦   «         › d�¦  «        ‚|€|                     ‰ j        ¦  «        }ŒY|                      ¦   «         D ]ç}
|
                     ¦   «         D ]Ð}|                     |¦  «        s%t=          d|                     ¦   «         › d�¦  «        ‚t!          |
t(          ¦  «        r4t*          j                             ‰                      |¦  «        |¦  «        }n2t*          j                             |
                     ¦   «         |¦  «        }|€|}|                     |¦  «         ŒÑŒè|€tC          d¦  «        ‚t*          j                             |j"        | #                    ¦   «         ¦  «        }t!          |tH          j%        ¦  «        rd	}natM          |d
¦  «        r|j'        }nIt!          |tH          j(        ¦  «        rd}n,t!          |tH          j)        ¦  «        rd}nt=          d¦  «        ‚|                     d|g¦  «         |dv r'|                     | *                    ¦   «         ¦  «         |‰  +                    ||d¦  «        z  }|d|j,         -                    dd¦  «         -                    dd¦  «        gz  }t*          j                             |j"        |j,        dz   ¦  «        }|dd|› �ddgz  }|| .                    d¦  «        z  }| /                    t*          j                             |j"        | #                    ¦   «         ¦  «        ¦  «        }||z  }ta          j1        ¦   «         }|j2         3                    ¦   «         }|j        D �](}| 4                    |j"        ¦  «         | 5                    ¦   «         r†|dd 6                    |j,        t*          j                             |j"        |j7        ¦  «        ¦  «        gz  }|                     tq          |j,        ‰ j9        |j,                 j:        ¦  «        ¦  «         Œ·|j;        dk    rW|j<        j=        dv r|dd‰  >                    |¦  «        › �gz  }n|dd |j,        › �gz  }|                     |j2        ¦  «         �Œ|dd!|j,        › �gz  }�Œ*ta          j?        |j@        d"¦  «        rd#}nd$}ta          j?        |j@        d%¦  «        rd&}nd$}|j        D �]—}| 4                    |j"        ¦  «         | 5                    ¦   «         r†|dd 6                    |j,        t*          j                             |j"        |j7        ¦  «        ¦  «        gz  }|                     tq          |j,        ‰ j9        |j,                 j:        ¦  «        ¦  «         Œ·|j<        j=        dv r¦|r(|dd'|› |› d(|                     ¦   «         d         › �gz  }nŽt!          |tH          j)        ¦  «        r&tƒ          jB        d)d*d+¦  «         |dd |j,        › �gz  }nN|j<         C                    ‰  >                    |¦  «        g¦  «        D ]}|dd|› �gz  }Œn|dd'|› d(|j,        › �gz  }|                     |j2        ¦  «         �Œ™|D �]3}| D                    ¦   «         D �]}| E                    d,¦  «        r“t*          j         F                    |¦  «        \  }}| 4                    |¦  «         t*          j         G                    |¦  «        \  }}| H                    d-¦  «        r
|d.d …         }|                     dd!|› �g¦  «         Œ«| H                    d/¦  «        r|                     |¦  «         ŒÖ| H                    d¦  «        r/|jI        rd'nd}|                     d|› d(|d0d …         › �g¦  «         �Œ�Œ5|D ]}|d$k    rd1}|d/|gz  }Œt•          d2„ | K                    ¦   «         D ¦   «         ¦  «        }t!          |tH          j(        ¦  «        s|�r&|dd3gz  }t™          |j,        ¦  «        rVt*          j                             t*          j         M                    |j,        ¦  «        ‰  N                    |¦  «        ¦  «        }n‰  N                    |¦  «        }| O                    ‰ jP        ‰ jP         Q                    ¦   «         |‰  R                    |¦  «        |jS        |jT        ¦  «        \  }|_U        |D ]B} |dd| z   d4z   t*          j                             | V                    ¦   «         d-¦  «        z   gz  }ŒC‰  W                    |j,        ||t±          |jY        ¦  «        tµ          |d
d$¦  «        d5k    ||¦  «         ‰  [                    |¦  «        }!t¹          ‰ j]        ||!|¦  «        }"|r|" ^                    |¦  «         |r|" _                    |¦  «         |" `                    d6|¦  «         |" `                    d7|¦  «         |" `                    d8|¦  «         ‰  a                    |"¦  «         t!          |tH          j(        ¦  «        r‰  b                    |¦  «         ‰  c                    ||||gg ¦  «         d S )9Nr°  c                ó|   — g | ]9}t           j                             |j        |                     ¦   «         ¦  «        ‘Œ:S rx   )rU   re  rÆ   rµ  r	  r#  s     r<   rŒ   z5NinjaBackend.generate_rust_target.<locals>.<listcomp>  sD   € ð 
ð 
ð 
àõ ŒG�LŠL˜œ 1§>¢>Ñ#3Ô#3Ñ4Ô4ð
ð 
ð 
r>   Ú
structuredr   c                óf   •— g | ]-}t           j                             ‰j        ‰j        |¦  «        ‘Œ.S rx   )rU   re  rÆ   ró  rµ  )r‰   rC   rp  rs   s     €€r<   rŒ   z5NinjaBackend.generate_rust_target.<locals>.<listcomp>=  sG   ø€ ð *Dð *Dð *DØ./õ +-¬'¯,ª,°tÔ7HÈ!Ì(ÐTUÑ*VÔ*Vð *Dð *Dð *Dr>   zRust target z! contains a non-rust source file.zKA Rust target has no Rust sources. This is weird. Also a bug. Please reportÚbinÚrust_crate_typeÚdylibÚrlibzUnknown target type for rustc.z--crate-type>   r°  r²  Fz--crate-nameú-r«  r½   z.dz--emitz	dep-info=Úlinkz--externz{}={}zstatic library>   úlld-linkrµ  r  z	link-arg=ú-lzstatic=zdylib=z	>= 1.63.0z:+whole-archive,-bundlerº   z	>= 1.67.0z
,+verbatimÚstaticr£  uI   Due to limitations in Rustc versions 1.61â€“1.66 and meson library namingzEwhole-archive linking with MSVC may or may not work. Upgrade rustc toz;>= 1.67. A best effort is being made, but likely won't work)z.dllz.soz.dylibÚlibr{   ú-Lr   r  c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rr   )rŸ   r   rá  )r‰   rì   s     r<   r	  z4NinjaBackend.generate_rust_target.<locals>.<genexpr>É  s/   è è € ÐhÐhÀs�j¨­eÔ.AÑBÔBÐhÐhÐhÐhÐhÐhr>   zprefer-dynamicú:Ú	procmacror  r]   Ú	cratetype)dr   r‹  r0  Úget_base_compile_argsr@  rÜ  rÝ  rÞ  rß  r—  Ú
needs_copyr  r
   r+  rP  r›  rŸ   r   rò  ró  r&   rU   re  rÆ   rÕ  rB  Úas_listró   rñ  Úcan_compiler'   Úget_basenamerÒ  ÚRuntimeErrorrµ  r	  r   rØ  rÑ  r±  rá  rà  Úget_linker_always_argsrj  rª   rG   rŒ  r4  r   r   Úexternal_depsr  rê   r9  rÅ   ro  r  r?  r   Útypenamerp  rb  Úget_target_filename_for_linkingrœ  r{  r   r–  Úget_link_whole_forr5  r  r–   rù  r    r¸  r  r–  r#   r  rÚ  Úbuild_rpath_argsr   r‚  Údetermine_rpath_dirsÚbuild_rpathÚinstall_rpathÚrpath_dirs_to_remover¹  r«  r(  r¾  ÚgetattrrÅ  rÝ   rå   rï   rí   rô   rC  Úgenerate_shsymr  )$rs   rã  ÚrustcÚ
base_proxyr¬   r­   Úproject_depsrä   rŸ  Ú_odsrŽ  rŠ   rö  rÄ  r¾  r®   rœ  ÚlinkdirsrÆ  r0  Úwhole_archiveÚverbatimÚlink_whole_argrÕ   r§   Údir_r¹  r¾  Ú_typeÚhas_shared_depsÚtarget_slashname_workaround_dirÚ
rpath_argsÚ	rpath_argÚcompiler_namerN  rp  s$   `                                  @r<   r:  z!NinjaBackend.generate_rust_target  sg  øø€ ØÔ  Ô(ˆð ×'Ò'Ñ)Ô)ˆ
Ø×"Ò"Ñ$Ô$ˆà•	Ô/°
¸EÑBÔBÑBˆØ×*Ò*¨6Ñ2Ô2Ð2ð
ð 
å”_ VÔ%8¸&Ô:SÑTÔTð
ñ 
ô 
ˆð )+ˆà!#ˆ	àˆØÔ$ñ 	EØÔ(×3Ò3Ñ5Ô5ð EØ'+×'HÒ'HÍØ×/Ò/°Ñ7Ô7ñJ9ô J9Ø;GñJHØIOÔIbñ(dô (dÑ$��nà× Ò  Ñ&Ô&Ð&Ñ&ð
 Ô-×8Ò8Ñ:Ô:�å˜a¥Ñ&Ô&ð VØ%&×%6Ò%6°tÔ7HÑ%IÔ%I�N�NÝ ¥=Ñ1Ô1ð VÝ%'¤W§\¢\°$×2MÒ2MÈfÑ2UÔ2UÐWX×WdÒWdÑWfÔWfÐghÔWiÑ%jÔ%j�N�Nå%'¤W§\¢\°!·,²,±.´.À!Ç-Â-Á/Ä/ÐRSÔBTÑ%UÔ%U�NàÔ2×:Ò:Ñ<Ô<ð Eð E�AÝ! !¥TÑ*Ô*ð EØ!×(Ò(¨×):Ò):¸4Ô;LÑ)MÔ)MÑNÔNÐNÐNà!×(Ò(ð *Dð *Dð *Dð *Dð *DØ34·=²=±?´?ð*Dñ *Dô *Dñ Eô Eð Eð Eð ×#Ò#Ñ%Ô%ð 	Fð 	FˆAØ×$Ò$ QÑ'Ô'ð pÝ&Ð'n°f×6IÒ6IÑ6KÔ6KÐ'nÐ'nÐ'nÑoÔoÐoØÐ%Ø!"×!2Ò!2°4Ô3DÑ!EÔ!E�øØ×-Ò-Ñ/Ô/ð 
	(ð 
	(ˆAØ—]’]‘_”_ð 	(ð 	(�Ø×(Ò(¨Ñ+Ô+ð tÝ*Ð+r¸&×:MÒ:MÑ:OÔ:OÐ+rÐ+rÐ+rÑsÔsÐsÝ˜a¥Ñ/Ô/ð <ÝœGŸLšL¨×)DÒ)DÀVÑ)LÔ)LÈaÑPÔP�E�EåœGŸLšL¨¯ª©¬¸Ñ;Ô;�EØ!Ð)Ø%*�NØ× Ò  Ñ'Ô'Ð'Ð'ð	(ð Ð!ÝÐlÑmÔmÐmÝ”g—l’l 6¤=°&×2EÒ2EÑ2GÔ2GÑHÔHˆÝ�f�eÔ.Ñ/Ô/ð 		EØˆIˆIÝ�VÐ.Ñ/Ô/ð 	EØÔ.ˆIˆIÝ˜¥Ô 3Ñ4Ô4ð 	EØˆIˆIÝ˜¥Ô 3Ñ4Ô4ð 	EØˆIˆIå"Ð#CÑDÔDÐDØ�Š�^ YÐ/Ñ0Ô0Ð0ð Ð(Ð(Ð(Ø�KŠK˜×4Ò4Ñ6Ô6Ñ7Ô7Ð7à�×1Ò1°&¸%ÀÑGÔGÑGˆà� ¤×!4Ò!4°S¸#Ñ!>Ô!>×!FÒ!FÀsÈCÑ!PÔ!PÐQÑQˆÝ”'—,’,˜vœ}¨f¬k¸DÑ.@ÑAÔAˆØ�Ð0 wÐ0Ð0°(¸FÐCÑCˆØ�×%Ò% fÑ-Ô-Ñ-ˆØ×&Ò&¥r¤w§|¢|°F´MÀ6×CVÒCVÑCXÔCXÑ'YÔ'YÑZÔZˆØ�‰ˆÝÔ&Ñ(Ô(ˆØÔ,×1Ò1Ñ3Ô3ˆàÔ$ð 	2ñ 	2ˆAØ�LŠL˜œÑ"Ô"Ð"Ø�{Š{‰}Œ}ð 2ð ˜ W§^¢^°A´F½B¼G¿LºLÈÌÐSTÔS]Ñ<^Ô<^Ñ%_Ô%_Ð`Ñ`�Ø×#Ò#¥G¨A¬F°DÔ4DÀQÄVÔ4LÔ4RÑ$SÔ$SÑTÔTÐTÐTØ”Ð/Ò/Ð/ð ”<”?Ð&:Ð:Ð:Ø˜TÐ#X¨t×/SÒ/SÐTUÑ/VÔ/VÐ#XÐ#XÐYÑY�D�Dà˜TÐ#5¨Q¬VÐ#5Ð#5Ð6Ñ6�DØ×$Ò$ Q¤_Ñ5Ô5Ð5Ñ5ð ˜Ð0¨¬Ð0Ð0Ð1Ñ1�‘õ Ô# E¤M°;Ñ?Ô?ð 	Ø5ˆMˆMàˆMåÔ# E¤M°;Ñ?Ô?ð 	Ø#ˆHˆHàˆHàÔ*ð 	6ñ 	6ˆAØ�LŠL˜œÑ"Ô"Ð"Ø�{Š{‰}Œ}ð 6ð ˜ W§^¢^°A´F½B¼G¿LºLÈÌÐSTÔS]Ñ<^Ô<^Ñ%_Ô%_Ð`Ñ`�Ø×#Ò#¥G¨A¬F°DÔ4DÀQÄVÔ4LÔ4RÑ$SÔ$SÑTÔTÐTÐTà”<”?Ð&:Ð:Ð:Øð Ià Ð'^°Ð'^¸xÐ'^Ð'^È!Ï-Ê-É/Ì/ÐZ[ÔJ\Ð'^Ð'^Ð _Ñ_˜˜Ý# F­EÔ,?Ñ@Ô@ð Iõ œÐ%pØ%lØ%cñeô eð eð  Ð'9°´Ð'9Ð'9Ð :Ñ:˜˜ð /4¬l×.MÒ.MÈt×OsÒOsÐtuÑOvÔOvÐNwÑ.xÔ.xð Ið I˜NØ  TÐ+G°~Ð+GÐ+GÐ$HÑH˜D˜DðIð ˜TÐ#D¨MÐ#DÐ#D¸A¼FÐ#DÐ#DÐEÑE�DØ×$Ò$ Q¤_Ñ5Ô5Ð5Ñ5Øð 	<ñ 	<ˆAØ—_’_Ñ&Ô&ð <ñ <�Ø—:’:Ð7Ñ8Ô8ð <Ý "¤§¢¨aÑ 0Ô 0‘I�D˜#Ø—L’L Ñ&Ô&Ð&Ý!œw×/Ò/°Ñ4Ô4‘H�C˜Ø—~’~ eÑ,Ô,ð &Ø! ! " "œg˜Ø—K’K  ~° ~ ~Ð 6Ñ7Ô7Ð7Ð7Ø—\’\ $Ñ'Ô'ð <Ø—K’K ‘N”N�N�NØ—\’\ $Ñ'Ô'ð <Ø()¬Ð=˜H˜H°g�EØ—K’K ¨%Ð'9Ð'9°!°A°B°B´%Ð'9Ð'9Ð :Ñ;Ô;Ð;ùñ<ð ð 	ð 	ˆAØ�BŠwˆwØ�Ø�T˜1�IÑˆDˆDÝÐhÐhÈf×NeÒNeÑNgÔNgÐhÑhÔhÑhÔhˆÝ�f�eÔ1Ñ2Ô2ð 	i°oñ 	ið �TÐ+Ð,Ñ,ˆDõ ˜FœKÑ(Ô(ð Nõ 35´'·,²,½r¼w¿ºÈvÌ{Ñ?[Ô?[Ø?C×?RÒ?RÐSYÑ?ZÔ?Zñ3\ô 3\Ð/Ð/ð 37×2EÒ2EÀfÑ2MÔ2MÐ/à×&Ò& tÔ'7Ø'+Ô'7×'EÒ'EÑ'GÔ'GØ'FØ'+×'@Ò'@ÀÑ'HÔ'HØ'-Ô'9Ø'-Ô';ñ=ô =ñ 4ˆJ˜Ô3ð (ð ið i�	Ø˜˜{¨YÑ6¸Ñ<½r¼w¿|º|ÈE×L]ÒL]ÑL_ÔL_ÐafÑ?gÔ?gÑgÐhÑh��à×$Ò$ V¤[°.À$ÍÈVÔM^ÑH_ÔH_å%,¨VÐ5FÈÑ%KÔ%KÈ{Ò%ZØ%+¨\ñ	;ô 	;ð 	;ð
 ×2Ò2°5Ñ9Ô9ˆÝ# DÔ$4°kÀ=ÐR`ÑaÔaˆØð 	,Ø× Ò  Ñ+Ô+Ð+Øð 	"Ø�OŠO˜DÑ!Ô!Ð!Ø×Ò˜ Ñ&Ô&Ð&Ø×Ò˜ gÑ.Ô.Ð.Ø×Ò˜ iÑ0Ô0Ð0Ø�Š�wÑÔÐÝ�f�eÔ1Ñ2Ô2ð 	(Ø×Ò Ñ'Ô'Ð'Ø×/Ò/°¸¸tÀnÐEUÐWYÑZÔZÐZÐZÐZr>   rÊ  r   c                ó.   — t          dd¦  «        |          S )NÚ
_FOR_BUILDrº   )r   )rÊ  s    r<   Úget_rule_suffixzNinjaBackend.get_rule_suffixû  s   € å˜,¨Ñ+Ô+¨KÔ8Ð8r>   ÚCOMPILERrÿ  Úmodec                ó:   — |› d|› |                       |¦  «        › �S )Nr«  )râ  )Úclsrÿ  rÊ  rä  s       r<   Úget_compiler_rule_namez#NinjaBackend.get_compiler_rule_nameÿ  s)   € àÐAÐA˜ÐA˜s×2Ò2°;Ñ?Ô?ÐAÐAÐAr>   rm  r   c                óh   — |                       |                     ¦   «         |j        |j        ¦  «        S rr   )rç  r  rÊ  rä  ©ræ  rm  s     r<   rÅ  z"NinjaBackend.compiler_to_rule_name  s-   € à×)Ò)¨(×*?Ò*?Ñ*AÔ*AÀ8ÔCWÐYaÔYfÑgÔgÐgr>   c                ó^   — |                       |                     ¦   «         |j        d¦  «        S )NÚPCH)rç  r  rÊ  ré  s     r<   rÆ  z&NinjaBackend.compiler_to_pch_rule_name  s*   € à×)Ò)¨(×*?Ò*?Ñ*AÔ*AÀ8ÔCWÐY^Ñ_Ô_Ð_r>   c                ó”   — t           j                             |                      |¦  «        |                      |¦  «        dz   ¦  «        S )Nz.swiftmodule)rU   re  rÆ   r+  Útarget_swift_modulename©rs   rã  s     r<   Úswift_module_file_namez#NinjaBackend.swift_module_file_name  sC   € ÝŒw�|Š|˜D×7Ò7¸Ñ?Ô?Ø ×8Ò8¸Ñ@Ô@À>ÑQñSô Sð 	Sr>   c                ó   — |j         S rr   )rª   rî  s     r<   rí  z$NinjaBackend.target_swift_modulename  s
   € ØŒ{Ðr>   c                ó˜   — g }|j         D ]?}|                      |¦  «        r(|                     |                      |¦  «        ¦  «         Œ@|S rr   )rÞ  Úis_swift_targetró   rï  ©rs   rã  rr  r�   s       r<   Údetermine_swift_dep_modulesz(NinjaBackend.determine_swift_dep_modules  sU   € ØˆØÔ$ð 	>ð 	>ˆAØ×#Ò# AÑ&Ô&ð >Ø—’˜d×9Ò9¸!Ñ<Ô<Ñ=Ô=Ð=øØˆr>   c                ón   — g }|j         D ]*}|                     |                      |¦  «        ¦  «         Œ+|S rr   )rÞ  ró   r&  ró  s       r<   Úget_swift_link_depsz NinjaBackend.get_swift_link_deps  sA   € ØˆØÔ$ð 	7ð 	7ˆAØ�MŠM˜$×2Ò2°1Ñ5Ô5Ñ6Ô6Ð6Ð6Øˆr>   c                óÆ   — |                       |¦  «        }g }g }|D ]B}|                     d¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC||fS )Nz.swift)rî  r  ró   )rs   rã  Úall_srcsrë  r]  rŠ   s         r<   Úsplit_swift_generated_sourcesz*NinjaBackend.split_swift_generated_sources  sr   € Ø×4Ò4°VÑ<Ô<ˆØˆØˆØð 	!ð 	!ˆAØ�zŠz˜(Ñ#Ô#ð !Ø—’˜A‘”��à—’˜aÑ Ô Ð Ð Ø�Vˆ|Ðr>   c           	     óì  ‡ — ‰                       |¦  «        }|j        d         }g }g }g }g }|                     ¦   «         D �]‹}|                     |¦  «        r™|                     ‰ j        ¦  «        }	t          j                             t          j         	                    ‰ j
                             ¦   «         |	¦  «        ¦  «        }
|                     |	¦  «         |                     |
¦  «         Œ±‰ j
                             |¦  «        r�|                     ‰ j        ¦  «        }t          j                             t          j         	                    ‰ j
                             ¦   «         |¦  «        ¦  «        }|                     |¦  «         ||                     |¦  «        z  }�Œht          d|                     ¦   «         › d�¦  «        ‚t          j        ‰                      |¦  «        d¬¦  «         |                     ¦   «         }||                     |                     t-          d¦  «        ¦  «        ¦  «        z  }||                     |                     t-          d¦  «        ¦  «        ¦  «        z  }||                     |¦  «        z  }|‰ j                             ||j        |j        ¦  «        z  }|‰ j                             ||j        ¦  «        z  }t=          |                     ¦   «         ¦  «        D ]É}|                      ¦   «         }| !                    ¦   «         D ]ž}|dvr!t          j         	                    ||¦  «        }n|}t          j                             t          j         	                    ‰ j
                             ¦   «         ‰ j        |¦  «        ¦  «        }| "                    |d	¦  «        }||z  }ŒŸŒÊ| #                    t          j         	                    ‰ j
                             ¦   «         ‰  $                    |¦  «        ¦  «        ¦  «        }|‰ j         %                    ||j        |j        ¦  «        z  }|‰ j         &                    ||j        ¦  «        z  }‰  '                    |¦  «        }‰  (                    |¦  «        }‰  )                    |¦  «        }‰  *                    |¦  «        }g }|D ]}|| "                    |d	¦  «        z  }Œ‰  +                    |¦  «        }ˆ fd
„|D ¦   «         }|j,        D ]x}‰  -                    |¦  «        }|dk    rd}|dt          j                             t          j         	                    ‰ j
                             ¦   «         |¦  «        ¦  «        gz  }Œy‰  .                    |¦  «        \  }}ˆ fd„|D ¦   «         }g } g }!||z   D ]¤}t          j         /                    |¦  «        }"t          j         0                    |"¦  «        d         dz   }#|                      |#¦  «         |!                     t          j         	                    ‰  '                    |¦  «        |#¦  «        ¦  «         Œ¥‰  1                    |¦  «        }$te          ‰ j3        |!|$|¦  «        }%|% 4                    ||z   ¦  «         |% 4                    |¦  «         |% 5                    d||z   |z   |z   ¦  «         |% 5                    d|¦  «         ‰  6                    |%¦  «         te          ‰ j3        ||$|¦  «        }%|% 4                    ||z   ¦  «         |% 5                    d||z   |z   | 7                    ¦   «         z   ¦  «         |% 5                    d|¦  «         ‰  6                    |%¦  «         tq          |t2          j9        ¦  «        rV‰  :                    |‰  $                    |¦  «        |!‰ j        j;        |j                 ¦  «        }%‰  6                    |%¦  «         nÚtq          |t2          j<        ¦  «        r±te          ‰ j3        ‰  $                    |¦  «        |$g ¦  «        }%|% 4                    |!¦  «         |% 4                    |¦  «         |% 5                    d|| =                    ¦   «         z   | z   |z   ¦  «         |% 5                    d|¦  «         ‰  6                    |%¦  «         nt}          d¦  «        ‚‰  ?                    ||||z   |z   ||¦  «         d S )Nr  zSwift target z" contains a non-swift source file.Tr©  r/  r
  ©rº   r  Fc                ó~   •— g | ]9}t           j                             ‰j                             ¦   «         |¦  «        ‘Œ:S rx   ©rU   re  rÆ   r   r‚  rÀ   s     €r<   rŒ   z6NinjaBackend.generate_swift_target.<locals>.<listcomp>Z  s8   ø€ Ð^Ð^Ð^Èq�œŸš dÔ&6×&DÒ&DÑ&FÔ&FÈÑJÔJÐ^Ð^Ð^r>   rº   r  rº  c                ó~   •— g | ]9}t           j                             ‰j                             ¦   «         |¦  «        ‘Œ:S rx   rý  rÀ   s     €r<   rŒ   z6NinjaBackend.generate_swift_target.<locals>.<listcomp>a  s8   ø€ ÐbÐbÐbÈq�œŸš dÔ&6×&DÒ&DÑ&FÔ&FÈÑJÔJÐbÐbÐbr>   r   z.or  ÚRUNDIRz:Swift supports only executable and static library targets.)@rí  r   rñ  rÂ  rò  ró  rU   re  r  rÆ   r   r‚  ró   rÖ  Úget_header_import_argsr'   rÃ  r.  r/  Úget_compile_only_argsr2  ræ  r$   r3  Úget_module_argsr   r8  r¾  rÊ  r9  r¥  Úget_include_dirsÚ
get_curdirrE  r*  r4  r&  Úget_project_link_argsÚget_global_link_argsr+  rï  rô  Údetermine_swift_dep_dirsrö  rÞ  rÚ  rù  r'  rù  rÅ  rÝ   rå   rí   rô   rC  Úget_mod_gen_argsrŸ   rà  rW  Ústatic_linkerrØ  Úget_std_exe_link_argsr   r  )&rs   rã  Úmodule_nameÚswiftcÚabssrcÚrelsrcÚabs_headersÚheader_importsrŠ   ÚrelsÚabssÚrelhÚabshr  Úbasedirr0  ÚexpdirÚ
srctreedirÚsargsÚ	link_argsÚrundirÚout_module_nameÚin_module_filesÚabs_module_dirsÚmodule_includesrµ   Ú	link_depsÚabs_link_depsÚreldirÚrel_generatedr«  Úabs_generatedÚobjectsÚrel_objectsÚbaseÚonamerâ   rG  s&   `                                     r<   r<  z"NinjaBackend.generate_swift_target*  sZ  ø€ Ø×2Ò2°6Ñ:Ô:ˆØÔ! 'Ô*ˆØˆØˆØˆØˆØ×#Ò#Ñ%Ô%ð 	rñ 	rˆAØ×!Ò! !Ñ$Ô$ð rØ×(Ò(¨Ô):Ñ;Ô;�Ý”w×'Ò'­¬¯ª°TÔ5E×5SÒ5SÑ5UÔ5UÐW[Ñ(\Ô(\Ñ]Ô]�Ø—’˜dÑ#Ô#Ð#Ø—’˜dÑ#Ô#Ð#Ð#ØÔ!×+Ò+¨AÑ.Ô.ð rØ×(Ò(¨Ô):Ñ;Ô;�Ý”w×'Ò'­¬¯ª°TÔ5E×5SÒ5SÑ5UÔ5UÐW[Ñ(\Ô(\Ñ]Ô]�Ø×"Ò" 4Ñ(Ô(Ð(Ø &×"?Ò"?ÀÑ"EÔ"EÑE�‘å&Ð'p°v×7JÒ7JÑ7LÔ7LÐ'pÐ'pÐ'pÑqÔqÐqÝ
Œ�D×3Ò3°FÑ;Ô;ÀdÐKÑKÔKÐKØ×3Ò3Ñ5Ô5ˆØ˜×4Ò4°V×5FÒ5FÅyÐQ_ÑG`ÔG`Ñ5aÔ5aÑbÔbÑbˆØ˜×-Ò-¨f×.?Ò.?Å	È'Ñ@RÔ@RÑ.SÔ.SÑTÔTÑTˆØ˜×.Ò.¨{Ñ;Ô;Ñ;ˆØ˜œ
×3Ò3°F¸FÔ<MÈvÔOaÑbÔbÑbˆØ˜œ
×2Ò2°6¸6Ô;MÑNÔNÑNˆÝ˜&×1Ò1Ñ3Ô3Ñ4Ô4ð 		&ð 		&ˆAØ—l’l‘n”nˆGØ—]’]‘_”_ð &ð &�Ø˜IÐ%Ð%ÝœWŸ\š\¨'°1Ñ5Ô5�F�Fà$�FÝœW×-Ò-­b¬g¯lªl¸4Ô;K×;YÒ;YÑ;[Ô;[Ð]aÔ]nÐpvÑ.wÔ.wÑxÔx�
Ø×/Ò/°
¸EÑBÔB�Ø Ñ%��ð&ð ×*Ò*­2¬7¯<ª<¸Ô8H×8VÒ8VÑ8XÔ8XÐZ^×ZrÒZrÐsyÑZzÔZzÑ+{Ô+{Ñ|Ô|ˆ	Ø�T”Z×5Ò5°f¸fÔ>OÐQWÔQcÑdÔdÑdˆ	Ø�T”Z×4Ò4°V¸VÔ=OÑPÔPÑPˆ	Ø×,Ò,¨VÑ4Ô4ˆØ×5Ò5°fÑ=Ô=ˆØ×:Ò:¸6ÑBÔBˆØ×7Ò7¸Ñ?Ô?ˆØˆØ ð 	Að 	AˆAØ˜v×6Ò6°q¸%Ñ@Ô@Ñ@ˆOˆOØ×,Ò,¨VÑ4Ô4ˆ	Ø^Ð^Ð^Ð^ÐT]Ð^Ñ^Ô^ˆØÔ$ð 	jð 	jˆAØ×(Ò(¨Ñ+Ô+ˆFØ˜Š|ˆ|Ø�Ø˜$¥¤× 0Ò 0µ´·²¸dÔ>N×>\Ò>\Ñ>^Ô>^Ð`fÑ1gÔ1gÑ hÔ hÐiÑiˆIˆIØ!×?Ò?ÀÑGÔGÑˆ˜ØbÐbÐbÐbÐTaÐbÑbÔbˆð ˆØˆØ˜-Ñ'ð 	Yð 	YˆAÝ”7×#Ò# AÑ&Ô&ˆDÝ”G×$Ò$ TÑ*Ô*¨1Ô-°Ñ4ˆEØ�NŠN˜5Ñ!Ô!Ð!Ø×Ò�rœwŸ|š|¨D×,GÒ,GÈÑ,OÔ,OÐQVÑWÔWÑXÔXÐXÐXà×-Ò-¨fÑ5Ô5ˆõ ! Ô!1°;ÀÈ&ÑQÔQˆØ�Š�_ }Ñ4Ñ5Ô5Ð5Ø�Š�[Ñ!Ô!Ð!Ø�Š�f˜l¨^Ñ;¸mÑKÈoÑ]Ñ^Ô^Ð^Ø�Š�h Ñ'Ô'Ð'Ø�Š�tÑÔÐÝ  Ô!1°?ÀHÈfÑUÔUˆØ�Š�_ }Ñ4Ñ5Ô5Ð5Ø�Š�f˜l¨]Ñ:¸_ÑLÈv×OfÒOfÑOhÔOhÑhÑiÔiÐiØ�Š�h Ñ'Ô'Ð'Ø�Š�tÑÔÐÝ�f�eÔ1Ñ2Ô2ð 	_Ø×%Ò% f¨d×.FÒ.FÀvÑ.NÔ.NØ&1°4´:Ô3KÈFÔL^Ô3_ñaô aˆDà�NŠN˜4Ñ Ô Ð Ð Ý˜¥Ô 0Ñ1Ô1ð 	_Ý$ TÔ%5°t×7OÒ7OÐPVÑ7WÔ7WÐYaÐceÑfÔfˆDØ�LŠL˜Ñ%Ô%Ð%Ø�LŠL˜Ñ#Ô#Ð#Ø�MŠM˜& )¨f×.JÒ.JÑ.LÔ.LÑ"LÈwÑ"VÐYfÑ"fÑgÔgÐgØ�MŠM˜( FÑ+Ô+Ð+Ø�NŠN˜4Ñ Ô Ð Ð å Ð!]Ñ^Ô^Ð^à×/Ò/°¸ÀÈ~Ñ@]Ð`oÑ@oÐqwð  zGñ  	Hô  	Hð  	Hð  	Hð  	Hr>   Útoolú4T.Union['Compiler', 'StaticLinker', 'DynamicLinker']ú)T.Dict[str, T.Union[bool, RSPFileSyntax]]c                óp   — d|                      ¦   «         i}|d         r|                     ¦   «         |d<   |S )z›Helper method to get rsp options.

        rsp_file_syntax() is only guaranteed to be implemented if
        can_linker_accept_rsp() returns True.
        r°   r›   )Úcan_linker_accept_rspÚrsp_file_syntax)rs   r(  rŠ  s      r<   Ú_rsp_optionszNinjaBackend._rsp_optionsŠ  sD   € ð ˜d×8Ò8Ñ:Ô:Ð;ˆØ�9Ôð 	DØ-1×-AÒ-AÑ-CÔ-CˆGÐ)Ñ*Øˆr>   c           	     ó  — | j         j        j        t          d¦  «                 j        }d| j         j        j        j        v r|                      ¦   «          t          D �]'}| j	        j
        |         }|€Œd                     |                      |¦  «        ¦  «        }g }dg}t          |t          ¦  «        r,t          j        ¦   «         st"          d„ t$          D ¦   «         z   }||                     ¦   «         z  }|dgz  }|t(                               |                     d¦  «        t.          j        ¦  «        z  }d}|d	k    rd
}nd }|                      |¦  «        }	|                      t7          ||||fi |	¤d|i¤Ž¦  «         �Œ)d S )Nrw  r  zSTATIC_LINKER{}rí  c                ó8   — g | ]}|                      d ¦  «        ‘ŒS )rî  )rÅ   r²  s     r<   rŒ   z;NinjaBackend.generate_static_link_rules.<locals>.<listcomp>¨  s$   € Ð,UÐ,UÐ,UÀ!¨Q¯XªX°fÑ-=Ô-=Ð,UÐ,UÐ,Ur>   ú
$LINK_ARGSrî  zLinking static target $outr   úpool = link_poolr¯   )r   r^  rŠ  r$   rÖ   r   r_  rR  r   r   r	  rÅ   râ  rŸ   r   r   rS   Úexecute_wrapperÚrmfile_prefixri  r�   rŽ   r4  rz   r   r.  r÷  rš   )
rs   r¤  rÊ  r	  r³   Úcmdlistr¬   r^   r[   rŠ  s
             r<   rõ  z'NinjaBackend.generate_static_link_rules•  sŸ  € ØÔ$Ô-Ô5µiÐ@SÑ6TÔ6TÔUÔ[ˆ	Ø�TÔ%Ô.Ô8Ô=Ð=Ð=Ø×#Ò#Ñ%Ô%Ð%Ý(ð 	^ñ 	^ˆKØ œJÔ4°[ÔAˆMØÐ$ØØ$×+Ò+¨D×,@Ò,@ÀÑ,MÔ,MÑNÔNˆDØˆGØ�7ˆDõ
 ˜-­Ñ2Ô2ð V½8Ô;NÑ;PÔ;Pð Võ *Ð,UÐ,UÅ}Ð,UÑ,UÔ,UÑU�Ø�}×0Ò0Ñ2Ô2Ñ2ˆGØ˜�~Ñ%ˆGØ•×+Ò+¨M×,IÒ,IÈ&Ñ,QÔ,QÕSZÔS_Ñ`Ô`Ñ`ˆGØ6ˆKØ˜1Š}ˆ}Ø)��à�à×'Ò'¨Ñ6Ô6ˆGØ�MŠM�) D¨'°4¸Ð\Ð\ÈÐ\Ð\ÐW[Ð\Ð\Ð\Ñ]Ô]Ð]Ñ]ð5	^ð 	^r>   c           
     óB  — | j         j        j        t          d¦  «                 j        }t
          D �] }| j         j        j        |         }|                     ¦   «         D ]Ñ\  }}|dv rŒ
d                     ||  	                    |¦  «        ¦  «        }| 
                    ¦   «         }dgt                               |                     d¦  «        t          j        ¦  «        z   ddgz   }d}	|d	k    rd
}
nd }
|                      |¦  «        }|                      t%          ||||	fi |¤d|
i¤Ž¦  «         ŒÒ�Œ| j                              ¦   «         dd| j                              ¦   «         dddgz   }d}|dgz   }d}d}|                      t%          ||g ||¬¦  «        ¦  «         d S )Nrw  >   r  r  r°  rÐ  r  z{}_LINKER{}rQ  rî  rí  r1  zLinking target $outr   r2  r¯   rÉ  Úsymbolextractorz$IMPLIBÚSHSYMz$CROSSzGenerating symbol file $outré  rê  )r   r^  rŠ  r$   rÖ   r   r   re  rÅ   râ  Úget_linker_exelistr�   rŽ   Úget_linker_output_argsrz   r   r.  r÷  rš   rÍ  r‚  )rs   r¤  rÊ  ÚcomplistÚlangnamerm  r³   r«   r¬   r^   r[   rŠ  ÚsymruleÚsymcmdÚsyndescÚsynstats                   r<   rö  z(NinjaBackend.generate_dynamic_link_rulesµ  sá  € ØÔ$Ô-Ô5µiÐ@SÑ6TÔ6TÔUÔ[ˆ	Ý(ð 	bñ 	bˆKØÔ'Ô0Ô:¸;ÔGˆHØ&.§n¢nÑ&6Ô&6ð bð bÑ"�˜(ØÐGÐGÐGØØ$×+Ò+¨H°d×6JÒ6JÈ;Ñ6WÔ6WÑXÔX�Ø"×5Ò5Ñ7Ô7�Ø�y¥?×#7Ò#7¸×8WÒ8WÐX^Ñ8_Ô8_ÕahÔamÑ#nÔ#nÑnÐrwð  zFð  rGñ  G�Ø3�Ø˜q’=�=Ø-�D�Dà�Dà×+Ò+¨HÑ5Ô5�Ø—’�i¨¨g°t¸[Ð`Ð`ÈGÐ`Ð`Ð[_Ð`Ð`Ð`ÑaÔaÐaÐañbð Ô×1Ò1Ñ3Ô3ØØØÔ×+Ò+Ñ-Ô-ØØØðñˆð ˆØ˜˜
Ñ"ˆØ/ˆØˆØ�Š•i ¨°°WÀGÐLÑLÔLÑMÔMÐMÐMÐMr>   c                ó°   — |                       |¦  «        }|                     ¦   «         ddgz   }d}|                      t          ||g |¦  «        ¦  «         d S )NrQ  rí  zCompiling Java object $in©rÅ  ri  r÷  rš   ©rs   rm  r³   r«   r^   s        r<   Úgenerate_java_compile_rulez'NinjaBackend.generate_java_compile_ruleÕ  s[   € Ø×)Ò)¨(Ñ3Ô3ˆØ×&Ò&Ñ(Ô(¨G°UÐ+;Ñ;ˆØ1ˆØ�Š•i  g¨r°;Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@r>   ú'CsCompiler'c                óú   — |                       |¦  «        }|                     ¦   «         }ddg}d}|                      t          ||||t	          j        ¦   «         |                     ¦   «         ¬¦  «        ¦  «         d S )NrQ  rí  zCompiling C Sharp target $out)r°   r›   )rÅ  ri  r÷  rš   r   rS   r-  )rs   rm  r³   r«   r¬   r^   s         r<   Úgenerate_cs_compile_rulez%NinjaBackend.generate_cs_compile_ruleÛ  s‘   € Ø×)Ò)¨(Ñ3Ô3ˆØ×&Ò&Ñ(Ô(ˆØ˜ÐˆØ5ˆØ�Š•i  g¨t°[Ý(0Ô(;Ñ(=Ô(=Ø4<×4LÒ4LÑ4NÔ4NðPñ Pô Pñ 	Qô 	Qð 	Qð 	Qð 	Qr>   c           	     ó´   — |                       |¦  «        }|                     ¦   «         ddgz   }d}|                      t          ||g |d¬¦  «        ¦  «         d S )NrQ  rí  zCompiling Vala source $inré  rê  rB  rC  s        r<   Úgenerate_vala_compile_rulesz(NinjaBackend.generate_vala_compile_rulesä  s`   € Ø×)Ò)¨(Ñ3Ô3ˆØ×&Ò&Ñ(Ô(¨G°UÐ+;Ñ;ˆØ1ˆØ�Š•i  g¨r°;ÀlÐSÑSÔSÑTÔTÐTÐTÐTr>   ú
'Compiler'c           
     ón  — |                       |¦  «        }d}|                     ¦   «         }|                     dd¦  «        }|rdnd }|ddgz   }|t                               |                     d¦  «        t          j        ¦  «        z  }|                      t          |||z   g ||d¬¦  «        ¦  «         d S )	NzCompiling Cython source $inrî  r¨   z$out.deprQ  rí  ré  )r®   r¯   )
rÅ  ri  Úget_dependency_gen_argsr�   rŽ   r4  rz   r   r÷  rš   )rs   rm  r³   r^   r«   Údepargsr®   r¬   s           r<   Úgenerate_cython_compile_rulesz*NinjaBackend.generate_cython_compile_rulesê  sË   € Ø×)Ò)¨(Ñ3Ô3ˆØ3ˆØ×&Ò&Ñ(Ô(ˆà×2Ò2°6¸:ÑFÔFˆØ 'Ð1�*�*¨Tˆà˜' 5Ð)Ñ)ˆØ•×$Ò$ X×%=Ò%=¸fÑ%EÔ%EÅwÄ|ÑTÔTÑTˆØ�Š•i  g°¡n°bØ +Ø(/Ø&2ð4ñ 4ô 4ñ 	5ô 	5ð 	5ð 	5ð 	5r>   c           
     ó¾   — |                       |¦  «        }|                     ¦   «         ddgz   }d}d}d}|                      t          ||g |||¬¦  «        ¦  «         d S )NrQ  rí  zCompiling Rust source $inz
$targetdeprë  ©r­   r®   rB  )rs   rm  r³   r«   r^   r®   Údepstyles          r<   Úgenerate_rust_compile_rulesz(NinjaBackend.generate_rust_compile_rulesù  s}   € Ø×)Ò)¨(Ñ3Ô3ˆØ×&Ò&Ñ(Ô(¨G°UÐ+;Ñ;ˆØ1ˆØˆØˆØ�Š•i  g¨r°;ÀXØ(/ð1ñ 1ô 1ñ 	2ô 	2ð 	2ð 	2ð 	2r>   c                óö   — |                       |¦  «        }| j                             ¦   «         g d¢z   }||                     ¦   «         z   }|ddgz   }d}|                      t          ||g |¦  «        ¦  «         d S )N)rÉ  Ú
dirchangerz$RUNDIRrQ  rí  zCompiling Swift source $in)rÅ  r   rÍ  ri  r÷  rš   )rs   rm  r³   Úfull_exeÚinvocr«   r^   s          r<   Úgenerate_swift_compile_rulesz)NinjaBackend.generate_swift_compile_rules	  s�   € Ø×)Ò)¨(Ñ3Ô3ˆØÔ#×5Ò5Ñ7Ô7ð ;
ð ;
ð ;
ñ 
ˆð
 ˜8×/Ò/Ñ1Ô1Ñ1ˆØ˜7 EÐ*Ñ*ˆØ2ˆØ�Š•i  g¨r°;Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@r>   c                ó6   — t          j        | j        d¦  «        S )z»Use the new Ninja feature for scanning dependencies during build,
        rather than up front. Remove this and all old scanning code once Ninja
        minimum version is bumped to 1.10.r|  )r   rœ  rˆ  r…   s    r<   Úuse_dyndeps_for_fortranz$NinjaBackend.use_dyndeps_for_fortran	  s   € õ Ô'¨Ô(:¸JÑGÔGÐGr>   Úcrstrc           	     ó  — |                       ¦   «         rd S d|› �}t          j        ¦   «         rddg}ndg}|                      t	          d¦  «        ¦  «         |                      t          ||g dd¬¦  «        ¦  «         d S )	NÚFORTRAN_DEP_HACKrK   z/CÚtruez�Workaround for these issues:
https://groups.google.com/forum/#!topic/ninja-build/j-2RfBIOd_8
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485zDep hackré  rê  )rY  r   rS   rò  r‘   r÷  rš   )rs   rZ  r³   rK   s       r<   Úgenerate_fortran_dep_hackz&NinjaBackend.generate_fortran_dep_hack	  s¡   € Ø×'Ò'Ñ)Ô)ð 	ØˆFØ) %Ð)Ð)ˆÝÔÑ Ô ð 	Ø˜$�-ˆCˆCà�(ˆCØ×Ò�lð ,6ñ 7ô 7ñ 	8ô 	8ð 	8ð 	�Š•i  c¨2¨zÀÐNÑNÔNÑOÔOÐOÐOÐOr>   c                óÈ  — | j         |j                 rd S |                      d|j        ¦  «        }|                     ¦   «         }dgt                               |                     d¦  «        t          j        ¦  «        z   | 	                    ¦   «         z   dgz   }d}|  
                    |¦  «        }|                      t          ||||fi |¤Ž¦  «         d| j         |j        <   d S )NÚllvm_irrQ  rî  rí  zCompiling LLVM IR object $inT)r>  rÊ  rç  ri  r�   rŽ   r4  rz   r   r  r.  r÷  rš   )rs   rm  r³   r«   r¬   r^   rŠ  s          r<   Úgenerate_llvm_ir_compile_rulez*NinjaBackend.generate_llvm_ir_compile_rule!	  s   € ØÔ$ XÔ%9Ô:ð 	ØˆFØ×*Ò*¨9°hÔ6JÑKÔKˆØ×&Ò&Ñ(Ô(ˆØˆy�?×/Ò/°×0HÒ0HÈÑ0PÔ0PÕRYÔR^Ñ_Ô_Ñ_Ðbj÷  cAò  cAñ  cCô  cCñ  Cð  GLð  FMñ  MˆØ4ˆà×#Ò# HÑ-Ô-ˆà�Š•i  g¨t°[ÐLÐLÀGÐLÐLÑMÔMÐMØ:>ˆÔ! (Ô"6Ñ7Ð7Ð7r>   c           	     ó¼  — |dk    r|                       |¦  «         d S |dk    r;| j        j                             |j        ¦  «        r|                      |¦  «         d S |dk    r|                      |¦  «         d S |dk    r|                      |¦  «         d S |dk    r;| j        j                             |j        ¦  «        r|                      |¦  «         d S |dk    r|  	                    |¦  «         d S |  
                    |j        ¦  «        }|dk    r|                      |¦  «         |                      |¦  «        }t                               |                     dd	¦  «        t           j        ¦  «        }|                     ¦   «         }d
g|z   t                               |                     d¦  «        t           j        ¦  «        z   |                     ¦   «         z   dgz   }d|                     ¦   «         › d�}|                     ¦   «         dk    rd}	d }
nd}	d	}
|                      |¦  «        }|                      t3          ||||fi |¤|	|
dœ¤Ž¦  «         d S )Nr  r  rÐ  r°  r  r  rK  rî  r¨   rQ  rí  z
Compiling z object $outrP  rë  rP  )rD  r   ÚmachinesÚmatches_build_machinerÊ  rG  rI  rR  rW  rN  râ  r^  rÅ  r�   rŽ   rL  rz   r   ri  r4  r  Úget_display_languagerc  r.  r÷  rš   )rs   r<  rm  rZ  r³   rM  r«   r¬   r^   r­   r®   rŠ  s               r<   Úgenerate_compile_rule_forz&NinjaBackend.generate_compile_rule_for.	  s¸  € Ø�vÒÐØ×+Ò+¨HÑ5Ô5Ð5ØˆFØ�tÒÐØÔÔ(×>Ò>¸xÔ?SÑTÔTð 8Ø×-Ò-¨hÑ7Ô7Ð7ØˆFØ�vÒÐØ×,Ò,¨XÑ6Ô6Ð6ØˆFØ�vÒÐØ×,Ò,¨XÑ6Ô6Ð6ØˆFØ�wÒÐØÔÔ(×>Ò>¸xÔ?SÑTÔTð <Ø×1Ò1°(Ñ;Ô;Ð;ØˆFØ�xÒÐØ×.Ò.¨xÑ8Ô8Ð8ØˆFØ×$Ò$ XÔ%9Ñ:Ô:ˆØ�yÒ Ð Ø×*Ò*¨5Ñ1Ô1Ð1Ø×)Ò)¨(Ñ3Ô3ˆÝ!×&Ò& x×'GÒ'GÈÐPZÑ'[Ô'[Õ]dÔ]iÑjÔjˆØ×&Ò&Ñ(Ô(ˆØˆy˜7Ñ"¥_×%9Ò%9¸(×:RÒ:RÐSYÑ:ZÔ:ZÕ\cÔ\hÑ%iÔ%iÑiÐlt÷  mKò  mKñ  mMô  mMñ  Mð  QVð  PWñ  WˆØP 8×#@Ò#@Ñ#BÔ#BÐPÐPÐPˆØ×'Ò'Ñ)Ô)¨VÒ3Ð3ØˆDØˆGˆGàˆDØ ˆGØ×#Ò# HÑ-Ô-ˆØ�Š•i  g¨t°[ð <ð <ÀGð <Ø%)°7ð<ð <ð <ð <ñ 	=ô 	=ð 	=ð 	=ð 	=r>   c           
     ó  — |dvrd S |                       |¦  «        }|                     dd¦  «        }|                     ¦   «         dk    rg }n8t                               |                     d¦  «        t          j        ¦  «        }|                     ¦   «         dgz   |z   |z   | 	                    ¦   «         z   dgz   }d}|                     ¦   «         dk    rd}d }	nd}d}	|  
                    t          ||g |||	¬	¦  «        ¦  «         d S )
N>   r¢   rt  rî  r¨   rP  rQ  rí  zPrecompiling header $inrë  rP  )rÆ  rL  rc  r�   rŽ   r4  rz   r   ri  r  r÷  rš   )
rs   r<  rm  r³   rM  rœ  r«   r^   r­   r®   s
             r<   Úgenerate_pch_rule_forz"NinjaBackend.generate_pch_rule_forU	  s)  € Ø˜<Ð'Ð'ØˆFØ×-Ò-¨hÑ7Ô7ˆØ×2Ò2°6¸:ÑFÔFˆà×'Ò'Ñ)Ô)¨VÒ3Ð3ØˆFˆFå$×)Ò)¨(×*BÒ*BÀ6Ñ*JÔ*JÍGÌLÑYÔYˆFØ×&Ò&Ñ(Ô(¨G¨9Ñ4°wÑ>ÀÑGÈ(×JhÒJhÑJjÔJjÑjÐnsÐmtÑtˆØ/ˆØ×'Ò'Ñ)Ô)¨VÒ3Ð3ØˆDØˆGˆGàˆDØ ˆGØ�Š•i  g¨r°;ÀTØ(/ð1ñ 1ô 1ñ 	2ô 	2ð 	2ð 	2ð 	2r>   c                ó¶   — d}|| j         v rd S | j                             ¦   «         ddgz   }g d¢}d}t          ||||¦  «        }|                      |¦  «         d S )Nr�  rÉ  )z$picklefilerî  rí  zModule scanner.)rñ  r   rÍ  rš   r÷  )rs   râ   r«   r¬   r^   r³   s         r<   ró  z#NinjaBackend.generate_scanner_rulesj	  su   € ØˆØ�t”}Ð$Ð$àˆFØÔ"×4Ò4Ñ6Ô6Ø˜9Ð%ñ&ˆà-Ð-Ð-ˆØ'ˆÝ˜ 7¨D°+Ñ>Ô>ˆØ�Š�dÑÔÐÐÐr>   c                óˆ  — t           D ]¹}| j        j        j        |         }|                     ¦   «         D ]‹\  }}|                     ¦   «         dk    r|                      |¦  «         |                      ||¦  «         |                      ||¦  «         | 	                    ¦   «         D ]}|                      ||¦  «         ŒŒŒŒºd S )NrÈ  )
r   r   r^  r   re  r  ra  rf  rh  Ú	get_modes)rs   rÊ  Úclistr<  rm  rä  s         r<   rô  z#NinjaBackend.generate_compile_rulesv	  sç   € Ý(ð 	Cð 	CˆKØÔ$Ô-Ô7¸ÔDˆEØ&+§k¢k¡m¤mð Cð CÑ"�˜(Ø—?’?Ñ$Ô$¨Ò/Ð/Ø×6Ò6°xÑ@Ô@Ð@Ø×.Ò.¨x¸ÑBÔBÐBØ×*Ò*¨8°XÑ>Ô>Ð>Ø$×.Ò.Ñ0Ô0ð Cð C�DØ×2Ò2°8¸TÑBÔBÐBÐBðCðCð	Cð 	Cr>   c                ó®   — |                      ¦   «         D ]?}t          |t          j        t          j        f¦  «        rŒ)|                      ||¦  «         Œ@d S rr   )rÒ  rŸ   r   rÓ  rÔ  r˜  )rs   rã  rå  s      r<   r@  z*NinjaBackend.generate_generator_list_rules�	  sb   € ð ×3Ò3Ñ5Ô5ð 	>ð 	>ˆGÝ˜'¥EÔ$6½Ô8OÐ#PÑQÔQð ØØ×,Ò,¨W°fÑ=Ô=Ð=Ð=ð	>ð 	>r>   c                ó  ‡ ‡‡— |r&t           j                             ‰ j        |¦  «        Šn‰                      |¦  «        Š‰                      |¦  «        Šˆˆ fd„|D ¦   «         }ˆfd„|D ¦   «         }ˆ fd„|D ¦   «         }d„ |D ¦   «         }|S )Nc                ón   •— g | ]1}|                      d ‰j        ¦  «                              d‰¦  «        ‘Œ2S )z@SOURCE_DIR@z@BUILD_DIR@©rG   ró  )r‰   rµ   Úreloutrs   s     €€r<   rŒ   z.NinjaBackend.replace_paths.<locals>.<listcomp>�	  sK   ø€ ð ð ð Øð —	’	˜.¨$Ô*;Ñ<Ô<×DÒDÀ]ÐTZÑ[Ô[ð ð ð r>   c                ó<   •— g | ]}|                      d ‰¦  «        ‘ŒS )z@CURRENT_SOURCE_DIR@©rG   )r‰   rµ   Úsource_target_dirs     €r<   rŒ   z.NinjaBackend.replace_paths.<locals>.<listcomp>’	  s)   ø€ ÐSÐSÐSÈ�—	’	Ð0Ð2CÑDÔDÐSÐSÐSr>   c                ón   •— g | ]1}|                      d ‰j        ¦  «                              dd¦  «        ‘Œ2S )z@SOURCE_ROOT@z@BUILD_ROOT@r  rp  rÀ   s     €r<   rŒ   z.NinjaBackend.replace_paths.<locals>.<listcomp>“	  sK   ø€ ð ð ð Øð —	’	˜/¨4Ô+<Ñ=Ô=×EÒEÀnÐVYÑZÔZð ð ð r>   c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r5   r  rs  r  s     r<   rŒ   z.NinjaBackend.replace_paths.<locals>.<listcomp>•	  s&   € Ð3Ð3Ð3¨�—	’	˜$ Ñ$Ô$Ð3Ð3Ð3r>   )rU   re  rÆ   ró  Úget_target_source_dirr+  )rs   rã  r¬   Úoverride_subdirrq  rt  s   `   @@r<   Úreplace_pathszNinjaBackend.replace_pathsŠ	  s×   øøø€ Øð 	CÝ "¤§¢¨TÔ->ÀÑ PÔ PÐÐà $× :Ò :¸6Ñ BÔ BÐØ×,Ò,¨VÑ4Ô4ˆðð ð ð ð Øðñ ô ˆàSÐSÐSÐSÈdÐSÑSÔSˆðð ð ð Øðñ ô ˆà3Ð3¨dÐ3Ñ3Ô3ˆØˆr>   rå  úbuild.GeneratedListc                óÞ  ‡ ‡‡‡‡— |                      ¦   «         }|j        }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }‰                      |¦  «        }t          |¦  «        D �]j\  }	}
t          |j        ¦  «        dk    r:t          j
                             ‰                      ‰¦  «        ||	         ¦  «        Šn|
› Š|
                     ‰ j        ¦  «        Š|                     ‰¦  «        }|                     |
¦  «        }ˆ ˆfd„|D ¦   «         }|j        €d}|}nXd}|                     ‰¦  «        }t          j
                             ‰                      ‰¦  «        |¦  «        Šˆfd„|D ¦   «         }ˆˆfd„|D ¦   «         }‰                      |‰                      ‰¦  «        |¦  «        }t          |j        ¦  «        dk    r|t          |j        ¦  «        d …         }‰                      ‰||¬¦  «        }‰                      |‰                      ||¦  «        |j        r|d         nd ¬	¦  «        \  }}t          j
                             ‰ j                             ¦   «         ‰                      ‰¦  «        ¦  «        }t          j        |d
¬¦  «         t9          ‰ j        ||‰¦  «        }|                     ˆ fd„|j        D ¦   «         ¦  «         |j        �|                      d‰¦  «         t          |¦  «        dk    r|                     |¦  «         t          |j        ¦  «        dk    r‰›}nd‰›d�}|rd|› d�}|                      dd|› |› d�¦  «         tC          |tD          j#        ¦  «        r(|                     ‰  $                    |¦  «        ¦  «         |                      d|¦  «         ‰  %                    |¦  «         �Œld S )Nr   c                óv   •— g | ]5}t           j                             ‰                     ‰¦  «        |¦  «        ‘Œ6S rx   r  )r‰   Úofrs   rã  s     €€r<   rŒ   z<NinjaBackend.generate_genlist_for_target.<locals>.<listcomp>§	  s8   ø€ ÐaÐaÐaÐRT�œŸš T×%@Ò%@ÀÑ%HÔ%HÈ"ÑMÔMÐaÐaÐar>   r   r¡  c                ó<   •— g | ]}|                      d ‰¦  «        ‘ŒS )z	@DEPFILE@rs  )r‰   rµ   r®   s     €r<   rŒ   z<NinjaBackend.generate_genlist_for_target.<locals>.<listcomp>¯	  s'   ø€ ÐKÐKÐK¸A˜Ÿ	š	 +¨wÑ7Ô7ÐKÐKÐKr>   c                ód   •— g | ],}|                      d ‰¦  «                              d‰¦  «        ‘Œ-S )z@INPUT@z@OUTPUT@rs  )r‰   rµ   Ú
infilenameÚsole_outputs     €€r<   rŒ   z<NinjaBackend.generate_genlist_for_target.<locals>.<listcomp>°	  sG   ø€ ð #ð #ð #Øð —I’I˜i¨Ñ4Ô4×<Ò<¸ZÈÑUÔUð #ð #ð #r>   )rx  r   )r£  Tr©  c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   r%  rÀ   s     €r<   rŒ   z<NinjaBackend.generate_genlist_for_target.<locals>.<listcomp>¾	  s'   ø€ ÐQÐQÐQ¸!˜$×2Ò2°1Ñ5Ô5ÐQÐQÐQr>   rñ   zfrom r  r§  r¨  rZ   r­  r¬  )&Úget_generatorrµ  Úget_exeÚ
get_inputsrÕ  r¯  Ú	enumerater8   rÑ  rU   re  rÆ   r+  rò  ró  Úget_arglistÚget_outputs_forr®   r´  Úreplace_outputsry  r²  Úreplace_extra_argsr£  r   r‚  rÚ  r.  rÝ   rå   rí   Údependsrô   rŸ   r   r-  r&  rC  )rs   rå  rã  Ú	generatorrµ  ÚexeÚ
infilelistÚoutfilelistÚextra_dependenciesrŠ   ÚcurfileÚ	base_argsrÒ   râ   r¬   Údepfilenamer5  r¸  r»  rG  Úwhatr®   r€  r�  s   ` `                  @@@r<   r˜  z(NinjaBackend.generate_genlist_for_target˜	  s  øøøøø€ Ø×)Ò)Ñ+Ô+ˆ	Ø”ˆØ×ÒÑ!Ô!ˆØ×'Ò'Ñ)Ô)ˆ
Ø×)Ò)Ñ+Ô+ˆØ!×@Ò@ÀÑIÔIÐÝ# JÑ/Ô/ð 1	!ñ 1	!‰JˆAˆwÝ�9Ô$Ñ%Ô%¨Ò*Ð*Ý œgŸlšl¨4×+FÒ+FÀvÑ+NÔ+NÐP[Ð\]ÔP^Ñ_Ô_��à!(˜l�Ø ×0Ò0°Ô1BÑCÔCˆJØ!×-Ò-¨jÑ9Ô9ˆIØ×.Ò.¨wÑ7Ô7ˆHØaÐaÐaÐaÐaÐX`ÐaÑaÔaˆHØÔ Ð(Ø+�Ø ��à/�Ø'×7Ò7¸
ÑCÔC�Ýœ'Ÿ,š, t×'BÒ'BÀ6Ñ'JÔ'JÈKÑXÔX�ØKÐKÐKÐKÀÐKÑKÔK�ð#ð #ð #ð #ð #Ø!ð#ñ #ô #ˆDà×'Ò'¨¨d×.IÒ.IÈ&Ñ.QÔ.QÐS^Ñ_Ô_ˆDå�9Ô$Ñ%Ô%¨Ò)Ð)Ø)­#¨iÔ.?Ñ*@Ô*@Ð*AÐ*AÔB�Ø×%Ò% f¨dÀFÐ%ÑKÔKˆDØ"×7Ò7¸Ø8<×8OÒ8OÐPTÐV]Ñ8^Ô8^ØOXÔO`Ð@jÀÈÄÀÐfjð 8ñ lô l‰OˆG�Võ ”w—|’| DÔ$4×$BÒ$BÑ$DÔ$DÀd×FYÒFYÐZ`ÑFaÔFaÑbÔbˆHÝŒK˜¨4Ð0Ñ0Ô0Ð0å$ TÔ%5°xÀÈ:ÑVÔVˆDØ�LŠLÐQÐQÐQÐQ¸yÔ?PÐQÑQÔQÑRÔRÐRØÔ Ð,Ø—’˜i¨Ñ1Ô1Ð1ÝÐ%Ñ&Ô&¨Ò*Ð*Ø—’Ð/Ñ0Ô0Ð0å�9Ô$Ñ%Ô%¨Ò*Ð*Ø%Ð)��ð 0˜{Ð/Ð/Ð/�Øð 9Ø8¨vÐ8Ð8Ð8�Ø�MŠM˜&Ð"?°Ð"?°fÐ"?Ð"?Ð"?Ñ@Ô@Ð@å˜#�uÔ0Ñ1Ô1ð <Ø—’˜T×5Ò5°cÑ:Ô:Ñ;Ô;Ð;Ø�MŠM˜) WÑ-Ô-Ð-Ø�NŠN˜4Ñ Ô Ð Ñ ðc1	!ð 1	!r>   c                ó.  — |                       ¦   «         rdS d}| j        j        j        j                             ¦   «         D ]\  }}|dk    r|} nŒ|€i | j        |                     ¦   «         <   dS t          j	        t          t          j        ¦  «        }t          j	        t          t          j        ¦  «        }i }i }|                     ¦   «         D �]¢}	|                     |	¦  «        sŒ|	                     | j                             ¦   «         | j                             ¦   «         ¦  «        }
t%          |
dd¬¦  «        5 }|D �]}|                     |¦  «        }|�P|                     d¦  «                             ¦   «         }||v rt-          d|› d||         › d	|	› d
�¦  «        ‚|	||<   Œj|                     |¦  «        }|�•|                     d¦  «                             ¦   «                              d¦  «        }|d         dz   |                     d¦  «                             ¦   «         z   }||v rt-          d|› d||         › d	|	› d
�¦  «        ‚|	||<   �Œ	 ddd¦  «         n# 1 swxY w Y   �Œ¤i |¥|¥| j        |                     ¦   «         <   dS )zV
        Find all module and submodule made available in a Fortran code file.
        NrK  ÚasciiÚignore©rO  Úerrorsr   zNamespace collision: module z defined in two files z and r  r¼  r   r«  r   zNamespace collision: submodule )rY  r   r^  r   r_  re  r<  rÃ  r@   rl  ÚFORTRAN_MODULE_PATÚ
IGNORECASEÚFORTRAN_SUBMOD_PATrñ  rÂ  r  rÎ  r‚  rY  rX  r9   rú  r'   r–   )rs   rã  rm  rÿ  r¢   ÚmodreÚsubmodreÚmodule_filesÚsubmodule_filesrC   ro  rp  r  ÚmodmatchÚmodnameÚsubmodmatchÚparentsÚ
submodnames                     r<   r?  z(NinjaBackend.scan_fortran_module_outputsÒ	  sR  € ð ×'Ò'Ñ)Ô)ð 	ØˆFØˆàÔ'Ô0Ô:Ô?×EÒEÑGÔGð 	ð 	‰GˆD�!Ø�yÒ Ð Ø�Ø�ð !ð ÐØ79ˆDÔ˜f×1Ò1Ñ3Ô3Ñ4ØˆFå”
Õ-­r¬}Ñ=Ô=ˆÝ”:Õ0µ"´-Ñ@Ô@ˆØˆØˆØ×#Ò#Ñ%Ô%ð 	<ñ 	<ˆAð ×'Ò'¨Ñ*Ô*ð ØØ—’ tÔ'7×'FÒ'FÑ'HÔ'HØ'+Ô'7×'EÒ'EÑ'GÔ'GñIô IˆHõ �h¨¸ÐBÑBÔBð <ÀaØð <ñ <�DØ$Ÿ{š{¨4Ñ0Ô0�HØÐ+Ø"*§.¢.°Ñ"3Ô"3×"9Ò"9Ñ";Ô";˜Ø" lÐ2Ð2Ý"2ð!N¸wð !Nð !NØ-9¸'Ô-Bð!Nð !NØIJð!Nð !Nð !Nñ#Oô #Oð Oð 12˜ WÑ-Ð-à&.§n¢n°TÑ&:Ô&:˜Ø&Ð2à&1×&7Ò&7¸Ñ&:Ô&:×&@Ò&@Ñ&BÔ&B×&HÒ&HÈÑ&MÔ&M˜GØ)0°¬°cÑ)9¸K×<MÒ<MÈaÑ<PÔ<P×<VÒ<VÑ<XÔ<XÑ)X˜Jà)¨_Ð<Ð<Ý&6ð%XÀjð %Xð %XØ1@ÀÔ1Lð%Xð %XØSTð%Xð %Xð %Xñ'Yô 'Yð !Yð ;<˜O¨JÑ7ùð)<ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ùð. 4W°lÐ3VÀoÐ3VˆÔ˜&×-Ò-Ñ/Ô/Ñ0Ð0Ð0s   Å DI(É(I,	É/I,	r/   c                ó  — |                       ¦   «         rg S t          |                      |¦  «        ¦  «        }| j        |                     ¦   «                  }t          | j        ¦  «        }t          |||||¦  «        }|S )zJ
        Find all module and submodule needed by a Fortran target
        )rY  r
   r+  r<  rÃ  r  Ú_scan_fortran_file_deps)rs   rm  ræ  rã  r  ÚtdepsÚsrcdirÚ	mod_filess           r<   Úget_fortran_depszNinjaBackend.get_fortran_deps
  s{   € ð ×'Ò'Ñ)Ô)ð 	ØˆIå�t×2Ò2°6Ñ:Ô:Ñ;Ô;ˆØÔ! &×"5Ò"5Ñ"7Ô"7Ô8ˆÝ�d”oÑ&Ô&ˆå+¨C°¸À%ÈÑRÔRˆ	ØÐr>   c                óŠ   — t          |d¦  «        r2|j        | j        j        |j                 v r|                     ¦   «         S g S )Nra  )rÑ  ra  r   ÚstdlibsrÊ  Úget_no_stdlib_link_args)rs   rã  rp  s      r<   r®  z$NinjaBackend.get_no_stdlib_link_args
  sE   € Ý�6˜:Ñ&Ô&ð 	4¨6¬?¸d¼jÔ>PÐQWÔQcÔ>dÐ+dÐ+dØ×1Ò1Ñ3Ô3Ð3Øˆ	r>   c                ó°   — |                      ¦   «         r,|                      |¦  «        }|                     |d¬¦  «        S |                     |d¬¦  «        S )NT)ÚpchF)rM  Úget_target_filename_absÚget_compile_debugfile_args)rs   rm  rã  ÚobjfileÚ	tfilenames        r<   r²  z'NinjaBackend.get_compile_debugfile_args
  s]   € ðb �>Š>ÑÔð 	KØ×4Ò4°VÑ<Ô<ˆIØ×6Ò6°yÀdÐ6ÑKÔKÐKà×6Ò6°wÀEÐ6ÑJÔJÐJr>   c                ó,   — |                      |¦  «        S rr   )Úget_link_debugfile_name©rs   rp  rã  r\  s       r<   r¶  z$NinjaBackend.get_link_debugfile_nameR
  ó   € Ø×-Ò-¨gÑ6Ô6Ð6r>   c                ó,   — |                      |¦  «        S rr   )Úget_link_debugfile_argsr·  s       r<   rº  z$NinjaBackend.get_link_debugfile_argsU
  r¸  r>   c                ó   — |                      ¦   «         }t          |j                             ¦   «         |¦  «        }|                     ¦   «         }|t          j        ||¦  «        z  }t          |t          ¦  «        r:|j        r+t          j
                             |j        |j        ¦  «        }nI|j        }nAt          j
                             |¦  «        r t          j
                             |¦  «        }n|}|                      |¦  «        }t          j
                             |                      |¦  «        |¦  «        }|d| j        j        |j                                      ¦   «         z   z  }||                      |||¦  «        z  }t          |t          ¦  «        r|j        r|j        }	nBt          |t          ¦  «        r|                     | j        ¦  «        }	nt3          d|›�¦  «        ‚|                      d|j        ¦  «        }
t7          | j        ||
|	¦  «        }|                     d|¦  «         |                      |¦  «         ||	fS )Nr  úInvalid source type: r`  r  )r‹  r"   r   r`  r0  r¿  rŸ   r   rf  rU   re  rÆ   rµ  rö  Úisabsr'  Úcanonicalize_filenamer+  r   rc  rÊ  Úget_object_suffixr²  rò  ró  r'   rç  rÝ   rå   rô   rC  )rs   rã  ræ  rÒ  rm  r$  Úsrc_filenameÚobj_basenamerM  rí  rß  rN  s               r<   rK  z%NinjaBackend.generate_llvm_ir_compileX
  s  € Ø×'Ò'Ñ)Ô)ˆ
Ý*¨6Ô+;×+BÒ+BÑ+DÔ+DÀcÑJÔJˆØ×)Ò)Ñ+Ô+ˆà•IÔ3°JÀÑIÔIÑIˆÝ�c�4Ñ Ô ð 	ØŒ|ð )Ý!œwŸ|š|¨C¬J¸¼	ÑBÔB��à"œy��ÝŒW�]Š]˜3ÑÔð 	Ýœ7×+Ò+¨CÑ0Ô0ˆLˆLàˆLØ×1Ò1°,Ñ?Ô?ˆÝ”'—,’,˜t×:Ò:¸6ÑBÔBÀLÑQÔQˆØ�3˜Ô)Ô2°6Ô3EÔF×XÒXÑZÔZÑZÑZˆØ�D×3Ò3°H¸fÀgÑNÔNÑNˆÝ�c�4Ñ Ô ð 	D S¤\ð 	DØ”iˆGˆGÝ˜�TÑ"Ô"ð 	DØ×)Ò)¨$Ô*;Ñ<Ô<ˆGˆGå"Ð#B¸3Ð#BÐ#BÑCÔCÐCà×3Ò3°I¸xÔ?SÑTÔTˆÝ# DÔ$4°g¸}ÈgÑVÔVˆØ×Ò˜ Ñ*Ô*Ð*Ø�Š�wÑÔÐØ˜Ð!Ð!r>   )Úmaxsizer0  r  r)  úCT.Tuple['ImmutableListProtocol[str]', 'ImmutableListProtocol[str]']c                ó  — |dvr>t           j                             t           j                             ||¦  «        ¦  «        }n|}t           j                             t           j                             | j        |¦  «        ¦  «        }|                     ||¦  «        }t           j                             t           j                             | j                             ¦   «         |¦  «        ¦  «        r|                     ||¦  «        }ng }||fS )Nrû  )	rU   re  r  rÆ   ró  r*  Úisdirr   r‚  )	rs   rm  r0  r  r)  r  r  r  Úbargss	            r<   Úgenerate_inc_dirzNinjaBackend.generate_inc_dirx
  sÕ   € ð �IÐÐÝ”W×%Ò%¥b¤g§l¢l°7¸AÑ&>Ô&>Ñ?Ô?ˆFˆFàˆFÝ”W×%Ò%¥b¤g§l¢l°4Ô3DÀfÑ&MÔ&MÑNÔNˆ
Ø×)Ò)¨*°iÑ@Ô@ˆõ Œ7�=Š=�œŸš dÔ&6×&DÒ&DÑ&FÔ&FÈÑOÔOÑPÔPð 	Ø×-Ò-¨f°iÑ@Ô@ˆEˆEàˆEØ�uˆ~Ðr>   FÚis_generatedú'CompilerArgs'c                óf   — |                       ||¦  «        }||                      |||¦  «        z  }|S rr   )Ú"_generate_single_compile_base_argsÚ$_generate_single_compile_target_args)rs   rã  rm  rÈ  r$  s        r<   Ú_generate_single_compilez%NinjaBackend._generate_single_compileŽ
  s9   € à×:Ò:¸6À8ÑLÔLˆØ�D×=Ò=¸fÀhÐP\Ñ]Ô]Ñ]ˆØˆr>   c                óÀ   — |                      ¦   «         }|                     ¦   «         }||                     |j        ¦  «        z  }|t	          j        ||¦  «        z  }|S rr   )r‹  r0  Úgnu_symbol_visibility_argsÚgnu_symbol_visibilityr   r¿  )rs   rã  rm  rÒ  r$  s        r<   rË  z/NinjaBackend._generate_single_compile_base_args”
  sf   € Ø×'Ò'Ñ)Ô)ˆ
ð ×)Ò)Ñ+Ô+ˆà�H×7Ò7¸Ô8TÑUÔUÑUˆð 	•IÔ3°JØ4<ñ>ô >ñ 	>ˆàˆr>   ú'ImmutableListProtocol[str]'c                ó¤  — |dk    }|                       |||¦  «        }|j        r||                      ||¦  «        z  }t          |                     ¦   «         ¦  «        D ]™}|                     ¦   «         }t          |                     ¦   «         ¦  «        D ],}|                      ||||j        ¦  «        \  }	}
||	z  }||
z  }Œ-| 	                    ¦   «         D ] }|| 
                    ||j        ¦  «        z  }Œ!Œš||                      |                     |                     ¦   «         ¦  «        ¦  «        z  }|j        dk    r#||                     |j        | j        ¦  «        z  }|j        r||                      ||¦  «        z  }|j        r||                      ||¦  «        z  }|| 
                    |                      |¦  «        d¦  «        z  }|S )NrÐ  r0  F)rj  Úimplicit_include_directoriesÚ"get_custom_target_dir_include_argsr¥  r  r  rE  rÇ  r)  Úget_extra_build_dirsr*  Úescape_extra_argsrŒ  r  ra  Úget_feature_argsÚ
d_featuresró  Úget_source_dir_include_argsÚget_build_dir_include_argsr+  )rs   rã  rm  rÈ  Úno_warn_argsr$  rŠ   r  r0  Úcompile_objÚincludeargss              r<   rÌ  z1NinjaBackend._generate_single_compile_target_args¢
  s   € ð
 $ vÒ-ˆð ×4Ò4°V¸XÀ|ÑTÔTˆð Ô.ð 	RØ˜×?Ò?ÀÈÑQÔQÑQˆHõ ˜&×1Ò1Ñ3Ô3Ñ4Ô4ð 	Fð 	FˆAØ—l’l‘n”nˆGõ ˜aŸmšm™oœoÑ.Ô.ð (ð (�à-1×-BÒ-BÀ8ÈQÐPWÐYZÔYdÑ-eÔ-eÑ*�˜kØ˜KÑ'�Ø˜KÑ'��Ø×+Ò+Ñ-Ô-ð Fð F�Ø˜H×5Ò5°a¸¼ÑEÔEÑE��ðFð 	�D×*Ò*¨6×+@Ò+@À×AVÒAVÑAXÔAXÑ+YÔ+YÑZÔZÑZˆð Ô Ò#Ð#Ø˜×1Ò1°&Ô2CÀTÔEVÑWÔWÑWˆHð Ô.ð 	KØ˜×8Ò8¸ÀÑJÔJÑJˆHØÔ.ð 	JØ˜×7Ò7¸ÀÑIÔIÑIˆHð 	�H×-Ò-¨d×.IÒ.IÈ&Ñ.QÔ.QÐSXÑYÔYÑYˆØˆr>   r  úT.Optional[T.List[str]]ry  c                ó
  — |�|ng }|�|ng }t          |t          ¦  «        r'|                     d¦  «        rt          d|›�¦  «        ‚t	          |j                             ¦   «         |¦  «        }|                      ||¦  «        }| j        j	        j
                             t          d¦  «        ¦  «        r|dk    r||                      ||¦  «        z  }||                      |||¦  «        z  }|j                             |¦  «        }|du r|                      ||||gg ¦  «         n|                      |||g |g¦  «         | j                             ¦   «         }	t          |t&          ¦  «        rr|                     | j        ¦  «        }
t,          j                             |
¦  «        r8|j        r1|
                     |	¦  «        sJ ‚|
t7          |	¦  «        dz   d…         }
n&|rt          d|›�¦  «        ‚t9          d	|›�¦  «        ‚|                      ||¦  «        }t,          j                             |                      |¦  «        |¦  «        }|                      |¦  «        }||  !                    |||¦  «        z  }| j        j	        j
                             t          d¦  «        ¦  «        r| "                    |j#        ¦  «        }ng }|sg }ns|j$        d
k    rg }neg }t,          j                             |                      |¦  «        | %                    |d         ¦  «        ¦  «        }| &                    |¦  «         |}|  '                    |¦  «        }g }| (                    ¦   «         dk    �r9|s,tS          |	¦  «        |
z  }||  *                    |||¦  «        z  }|  +                    ¦   «         sÌ| j,        | -                    ¦   «                   .                    ¦   «         D ]š\  }}t,          j                             |                      |¦  «        | /                    |¦  «        ¦  «        }||k    rI|  0                    |j1        ¦  «        }te          | j3        |d|z   |¦  «        }|  4                    |¦  «         Œ›|| 5                    |                      |¦  «        ¦  «        z  }|�| 6                    |¦  «         te          | j3        |||
¦  «        }|  7                    |||¦  «         |D ]}| 8                    |¦  «         Œ|D ]�}t          |t&          ¦  «        r|                     | j        ¦  «        }nH|  9                    |¦  «        s3t,          j                             |                      |¦  «        |¦  «        }| :                    |¦  «         Œ�| 8                    |¦  «         |  ;                    ||¦  «        D ]}| :                    |¦  «         Œ|r| <                    d|¦  «         | <                    d|¦  «         |  =                    ||||¦  «         |  4                    |¦  «         t          |t          ¦  «        sJ ‚t          |
t          ¦  «        sJ ‚||
 >                    dd¦  «        fS )zE
        Compiles C/C++, ObjC/ObjC++, Fortran, and D sources
        Nz.hz(BUG: sources should not contain headers r   r°  Fr   z/BUG: broken generated source file handling for r¼  Úintelr   rK  r\  rñ   r  r5   r  )?rŸ   ra   r  rB  r"   r   r`  rË  r   r^  rŠ  rW   r$   Úget_pch_include_argsrÌ  rm  r0  r  r‚  r   rò  ró  rU   re  r½  rf  r    r8   r'   Úobject_filename_from_sourcerÆ   r+  Údepfile_for_objectr²  Úget_pchra  rb  Úget_pch_nameró   rÅ  r  r
   r«  rY  r<  rÃ  re  Úmodule_name_to_filenamerâ  rÊ  rÝ   rå   rC  Úget_module_outdir_argsrP  Úadd_header_depsrí   Úhas_dir_partrï   Úget_fortran_orderdepsrô   Ú)add_dependency_scanner_entries_to_elementrG   )rs   rã  ræ  rÈ  rä  r  ry  rm  r$  r  rí  rÁ  rM  Údep_fileÚpchlistÚpch_depÚarrrŠ   rß  Ú
extra_depsrf  r¢  ÚsrcfileÚmodfilerZ  ÚdepelemrN  r0  s                               r<   rL  z$NinjaBackend.generate_single_compileÞ
  s�  € ð &1Ð%<�k�kÀ"ˆØ#-Ð#9�Z�Z¸rˆ
å�c�3ÑÔð 	U C§L¢L°Ñ$6Ô$6ð 	UÝ Ð!SÈCÐ!SÐ!SÑTÔTÐTå*¨6Ô+;×+BÒ+BÑ+DÔ+DÀcÑJÔJˆØ×:Ò:¸6À8ÑLÔLˆð ÔÔ$Ô,×0Ò0µ¸7Ñ1CÔ1CÑDÔDð 	DÈÐY^ÒI^ÐI^Ø˜×1Ò1°(¸FÑCÔCÑCˆHà�D×=Ò=¸fÀhÐP\Ñ]Ô]Ñ]ˆØÔ$×2Ò2°8Ñ<Ô<ˆð ˜5Ð Ð Ø×3Ò3°F¸HÀhÐQTÐPUÐWYÑZÔZÐZÐZà×3Ò3°F¸HÀhÐPRÐUXÐTYÑZÔZÐZàÔ$×2Ò2Ñ4Ô4ˆ	Ý�c�4Ñ Ô ð 	DØ×)Ò)¨$Ô*;Ñ<Ô<ˆGÝŒw�}Š}˜WÑ%Ô%ð ;ð ”<ð ;Ø"×-Ò-¨iÑ8Ô8Ð8Ð8Ð8Ø%¥c¨)¡n¤n°qÑ&8Ð&9Ð&9Ô:�GøØð 	DÝ Ð!ZÐSVÐ!ZÐ!ZÑ[Ô[Ð[å"Ð#B¸3Ð#BÐ#BÑCÔCÐCØ×7Ò7¸ÀÑDÔDˆÝ”'—,’,˜t×:Ò:¸6ÑBÔBÀLÑQÔQˆØ×.Ò.¨wÑ7Ô7ˆð 	�D×3Ò3°H¸fÀgÑNÔNÑNˆð ÔÔ$Ô,×0Ò0µ¸7Ñ1CÔ1CÑDÔDð 	Ø—n’n XÔ%6Ñ7Ô7ˆGˆGàˆGØð 	ØˆGˆGØŒ[˜GÒ#Ð#ØˆGˆGàˆCÝ”—’˜T×8Ò8¸Ñ@Ô@À(×BWÒBWÐX_Ð`aÔXbÑBcÔBcÑdÔdˆAØ�JŠJ�q‰MŒMˆMØˆGà×2Ò2°8Ñ<Ô<ˆØˆ
Ø× Ò Ñ"Ô" iÒ/Ñ/ð
  ð OÝ˜y™/œ/¨GÑ3�Ø˜d×3Ò3°H¸gÀvÑNÔNÑN�
Ø×/Ò/Ñ1Ô1ð 0ð )-Ô(9¸&×:MÒ:MÑ:OÔ:OÔ(P×(VÒ(VÑ(XÔ(Xð 
0ð 
0Ñ$�G˜WÝ œgŸlšl¨4×+FÒ+FÀvÑ+NÔ+NØ+3×+KÒ+KÈGÑ+TÔ+TñVô V�Gð  #’~�~Ø $× 4Ò 4°VÔ5GÑ HÔ H˜Ý"3°DÔ4DØ4;Ø4FÈÑ4NØ4;ñ#=ô #=˜ð Ÿš wÑ/Ô/Ð/øØ˜×7Ò7¸×8SÒ8SÐTZÑ8[Ô8[Ñ\Ô\Ñ\ˆHØÐ!Ø�OŠO˜JÑ'Ô'Ð'å# DÔ$4°g¸}ÈgÑVÔVˆØ×Ò˜V W¨kÑ:Ô:Ð:Øð 	ð 	ˆAØ�OŠO˜AÑÔÐÐØð 	$ð 	$ˆAÝ˜!�TÑ"Ô"ð IØ×%Ò% dÔ&7Ñ8Ô8��Ø×&Ò& qÑ)Ô)ð IÝ”G—L’L ×!<Ò!<¸VÑ!DÔ!DÀaÑHÔH�Ø× Ò  Ñ#Ô#Ð#Ð#Ø�Š˜Ñ Ô Ð Ø×+Ò+¨F°HÑ=Ô=ð 	$ð 	$ˆAØ× Ò  Ñ#Ô#Ð#Ð#Øð 	2Ø×Ò˜Y¨Ñ1Ô1Ð1Ø×Ò˜ Ñ*Ô*Ð*à×6Ò6°v¸xÈÐRUÑVÔVÐVØ�Š�wÑÔÐÝ˜'¥3Ñ'Ô'Ð'Ð'Ð'Ý˜'¥3Ñ'Ô'Ð'Ð'Ð'Ø˜Ÿš¨¨sÑ3Ô3Ð4Ð4r>   c                ó   — |                       |¦  «        sd S t          j                             |j        ¦  «        d         dd …         }|dk    r|                     ¦   «         }|t          j        d         v s|t          j        d         v sd S |                      |¦  «        }| 	                    d|¦  «         | 
                    |¦  «         d S )Nr   r’  rK  rt  r\   )r}  rU   re  rù  rö  rú  r   rd  rƒ  rô   rï   )rs   rã  rm  rN  ræ  Ú	extensionÚdep_scan_files          r<   rë  z6NinjaBackend.add_dependency_scanner_entries_to_elementR  sË   € Ø×1Ò1°&Ñ9Ô9ð 	ØˆFÝ”G×$Ò$ S¤YÑ/Ô/°Ô2°1°2°2Ô6ˆ	Ø˜ÒÐØ!ŸšÑ)Ô)ˆIØ�YÔ4°YÔ?Ð?Ð?À9ÕPYÔPgÐhmÔPnÐCnÐCnØˆFØ×2Ò2°6Ñ:Ô:ˆØ×Ò˜ =Ñ1Ô1Ð1Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+r>   c                óh   — t           j                             |                      |¦  «        d¦  «        S )Nz
depscan.ddr  rî  s     r<   rƒ  z"NinjaBackend.get_dep_scan_file_for^  s&   € ÝŒw�|Š|˜D×7Ò7¸Ñ?Ô?ÀÑNÔNÐNr>   c                ó*  — |D ]�}t          |t          ¦  «        r|                     | j        ¦  «        }nH|                      |¦  «        s3t
          j                             |                      |¦  «        |¦  «        }| 	                    |¦  «         Œ�d S rr   )
rŸ   r   rò  ró  ré  rU   re  rÆ   r+  rí   )rs   rã  Úninja_elementrä  r0  s        r<   rè  zNinjaBackend.add_header_depsa  s—   € Øð 	%ð 	%ˆAÝ˜!�TÑ"Ô"ð IØ×%Ò% dÔ&7Ñ8Ô8��Ø×&Ò& qÑ)Ô)ð IÝ”G—L’L ×!<Ò!<¸VÑ!DÔ!DÀaÑHÔH�Ø×!Ò! !Ñ$Ô$Ð$Ð$ð	%ð 	%r>   c                ó`   — t          |t          ¦  «        r|j        dk    S t          |¦  «        S rß   )rŸ   r   rµ  r#   )rs   rö  s     r<   ré  zNinjaBackend.has_dir_parti  s/   € å�e�TÑ"Ô"ð 	&Ø”< 2Ò%Ð%Ý˜EÑ"Ô"Ð"r>   c                ót   ‡ — |j         dk    rg S ˆ fd„t          j        |j        |j        ¦  «        D ¦   «         S )NrK  c                óš   •— g | ]G}t           j                             ‰                     |¦  «        |                     ¦   «         ¦  «        ‘ŒHS rx   r  )r‰   Últrs   s     €r<   rŒ   z6NinjaBackend.get_fortran_orderdeps.<locals>.<listcomp>x  sQ   ø€ ð 
ð 
ð 
àõ ŒG�LŠL˜×,Ò,¨RÑ0Ô0°"·/²/Ñ2CÔ2CÑDÔDð
ð 
ð 
r>   )ra  rÜ  rÝ  rÞ  rß  )rs   rã  rm  s   `  r<   rê  z"NinjaBackend.get_fortran_orderdepsu  sS   ø€ ØÔ 	Ò)Ð)ØˆIð
ð 
ð 
ð 
å”o fÔ&9¸6Ô;TÑUÔUð
ñ 
ô 
ð 	
r>   c                óÜ  — |d         }|                      |¦  «        }t          j                             |                      |¦  «        |¦  «        }g }||                      ||¦  «        z  }t          |¦  «        dk    rž|                      ||                     ¦   «         |d         ¦  «        }t          j         	                    t          j                             | j
        |                     ¦   «         |¦  «        ¦  «        }	||                     |	d¦  «        z  }n>t          j                             | j
        |                     ¦   «         |d         ¦  «        }t          j                             |¦  «        }
|                     |
||¦  «        \  }}||z  }||                      ||¦  «        z  }||                      |||¦  «        z  }|dz   |                     ¦   «         z   }||||g|fS )Nr   r   Fr  )rå  rU   re  rÆ   r+  rj  r8   Úcreate_msvc_pch_implementationr  r  ró  Úget_source_subdirr*  r'  Úgen_pch_argsrÍ  r²  Úget_depfile_suffix)rs   rã  rm  r°  ÚheaderÚpchnameÚdstr$  rý  Úpch_header_dirÚ	just_nameÚobjnameÚpch_argsrì   s                 r<   Úgenerate_msvc_pch_commandz&NinjaBackend.generate_msvc_pch_command}  sµ  € Ø�Q”ˆØ×'Ò'¨Ñ/Ô/ˆÝŒg�lŠl˜4×6Ò6°vÑ>Ô>ÀÑHÔHˆàˆØ�D×5Ò5°f¸hÑGÔGÑGˆåˆs‰8Œ8�qŠ=ˆ=à×8Ò8¸À×AVÒAVÑAXÔAXÐZ]Ð^_ÔZ`ÑaÔaˆFÝœWŸ_š_­R¬W¯\ª\¸$Ô:KÈV×MeÒMeÑMgÔMgÐioÑ-pÔ-pÑqÔqˆNØ˜×1Ò1°.À%ÑHÔHÑHˆHˆHå”W—\’\ $Ô"3°V×5MÒ5MÑ5OÔ5OÐQTÐUVÔQWÑXÔXˆFå”G×$Ò$ VÑ,Ô,ˆ	Ø&×3Ò3°I¸vÀsÑKÔKÑˆ�(Ø�HÑˆØ�D×1Ò1°&¸(ÑCÔCÑCˆØ�D×3Ò3°H¸fÀgÑNÔNÑNˆØ�C‰i˜(×5Ò5Ñ7Ô7Ñ7ˆØ˜˜c G 9¨fÐ4Ð4r>   c                ó   — |                       ||¦  «        }|                     d¦  «        d         dk    r|j        dk    r|ddgz  }t          j                             |                      |¦  «        t          j                             |¦  «        dz   |                     ¦   «         z   ¦  «        }|dz   | 	                    ¦   «         z   }|||g fS )Nr  rÌ   Úhrt  rÁ  z
c++-header)
rÍ  r–   ra  rU   re  rÆ   r+  r'  Úget_pch_suffixr  )rs   rã  rm  r°  r$  r  rì   s          r<   Úgenerate_gcc_pch_commandz%NinjaBackend.generate_gcc_pch_command•  sÈ   € Ø×0Ò0°¸ÑBÔBˆØ�9Š9�S‰>Œ>˜"Ô Ò$Ð$¨Ô):¸eÒ)CÐ)Cð ˜˜|Ð,Ñ,ˆHÝŒg�lŠl˜4×6Ò6°vÑ>Ô>Ýœ7×+Ò+¨CÑ0Ô0°3Ñ6¸×9PÒ9PÑ9RÔ9RÑRñTô Tˆà�C‰i˜(×5Ò5Ñ7Ô7Ñ7ˆØ˜˜c 2Ð%Ð%r>   c                ó  — |�|ng }g }dD �]û}|                      |¦  «        }|sŒt          |d         ¦  «        rt          |d         ¦  «        s'd|                     ¦   «         ›d�}t          |¦  «        ‚|j        |         }|                     ¦   «         dk    r\|                      |||¦  «        \  }}	}
}}t          j         	                    | j
        |                     ¦   «         |d         ¦  «        }nn|j        dk    rŒùt          j         	                    | j
        |                     ¦   «         |d         ¦  «        }|                      |||d         ¦  «        \  }}	}
}d }||z  }|                      |¦  «        }t          | j        |
||¦  «        }|�|                     |¦  «         |                      |||¦  «         |                     d|¦  «         |                     d	|	¦  «         |                      |¦  «         �Œý|S )
N)r¢   rt  r   rÌ   zPrecompiled header of zN must not be in the same directory as source, please put it in a subdirectory.rP  rà  r  rñ   )rä  r#   rÃ  r'   r   rc  r
  rU   re  rÆ   ró  r   rb  r  rÆ  rÝ   rå   rí   rè  rô   rC  )rs   rã  rä  rj  rÿ  r°  rc  rm  r$  rì   r  Úobjsræ  Úextradeprâ   rG  s                   r<   rN  zNinjaBackend.generate_pch   s%  € Ø%0Ð%<�k�kÀ"ˆØˆØ ð 	!ñ 	!ˆDØ—.’. Ñ&Ô&ˆCØð ØÝ  A¤Ñ'Ô'ð ,­|¸CÀ¼GÑ/DÔ/Dð ,ðN¨v×/BÒ/BÑ/DÔ/Dð Nð Nð N�å& sÑ+Ô+Ð+Ø!'Ô!1°$Ô!7ˆHØ×+Ò+Ñ-Ô-°Ò7Ð7Ø26×2PÒ2PÐQWÐYaÐcfÑ2gÔ2gÑ/�˜3  T¨3Ýœ7Ÿ<š<¨Ô(9¸6×;SÒ;SÑ;UÔ;UÐWZÐ[\ÔW]Ñ^Ô^��Ø” Ò'Ð'àå”g—l’l 4Ô#4°f×6NÒ6NÑ6PÔ6PÐRUÐVWÔRXÑYÔY�Ø-1×-JÒ-JÈ6ÐS[Ð]`ÐabÔ]cÑ-dÔ-dÑ*�˜3  TØ�Ø˜4ÑˆKØ×5Ò5°hÑ?Ô?ˆHÝ$ TÔ%5°s¸HÀcÑJÔJˆDØÐ#Ø—’˜XÑ&Ô&Ð&Ø× Ò  ¨¨{Ñ;Ô;Ð;Ø�MŠM˜& (Ñ+Ô+Ð+Ø�MŠM˜) SÑ)Ô)Ð)Ø�NŠN˜4Ñ Ô Ð Ñ ØÐr>   c                ó–   — |                       |¦  «        }t          j                             ||                     ¦   «         dz   ¦  «        S )Nz.symbols)r+  rU   re  rÆ   r	  )rs   rã  Ú	targetdirs      r<   Úget_target_shsym_filenamez&NinjaBackend.get_target_shsym_filenameÁ  s<   € à×/Ò/°Ñ7Ô7ˆ	ÝŒw�|Š|˜I v×':Ò':Ñ'<Ô'<¸zÑ'IÑJÔJÐJr>   c                óœ  — |                       |¦  «        }|                      |¦  «        }t          | j        |d|¦  «        }|                     d|                      |¦  «        ¦  «         | j                             ¦   «         r3|                     dd| j        j        |j	                 j
        z   ¦  «         |                      |¦  «         d S )Nr8  ÚIMPLIBÚCROSSz--cross-host=)r&  r  rÝ   rå   rô   rÈ  r   Úis_cross_buildrc  rÊ  ÚsystemrC  )rs   rã  Útarget_fileÚsymnamerG  s        r<   rÐ  zNinjaBackend.generate_shsymÆ  sº   € Ø×.Ò.¨vÑ6Ô6ˆØ×0Ò0°Ñ8Ô8ˆÝ  Ô!1°7¸GÀ[ÑQÔQˆà�Š�h × DÒ DÀVÑ LÔ LÑMÔMÐMØÔ×*Ò*Ñ,Ô,ð 	kØ�MŠM˜' ?°TÔ5EÔ5NÈvÔOaÔ5bÔ5iÑ#iÑjÔjÐjØ�Š�tÑÔÐÐÐr>   c                ór   — t           j                             |                      |¦  «        |j        ¦  «        S rr   )rU   re  rÆ   rÚ  Úimport_filenamerî  s     r<   Úget_import_filenamez NinjaBackend.get_import_filenameÐ  s)   € ÝŒw�|Š|˜D×/Ò/°Ñ7Ô7¸Ô9OÑPÔPÐPr>   c           	     óÞ  — g }t          |t          j        ¦  «        r�||                     ¦   «         z  }|j        r||                     | j        ¦  «        z  }|j        r+||                     |  	                    |¦  «        ¦  «        z  }|j
        r||                     ¦   «         z  }�nÃt          |t          j        ¦  «        �rMt          |t          j        ¦  «        r*| j        j        j        }||                     |¦  «        z  }n||                     ¦   «         z  }||                     ¦   «         z  }t          |t          j        ¦  «        r|j        r;||                     | j        |j        |j        |j        |j        |j        ¦  «        z  }|j        rEt7          |d¦  «        r5||                     |j                             | j        ¦  «        ¦  «        z  }|j        r+||                     |  	                    |¦  «        ¦  «        z  }n[t          |t          j        ¦  «        r2||                      | j        | !                    ¦   «          ¦  «        z  }ntE          d¦  «        ‚|S )NÚgen_vs_module_defs_argszUnknown build target type.)#rŸ   r   rØ  r
  Úexport_dynamicÚgen_export_dynamic_link_argsr   r  Úgen_import_library_argsr  ÚpieÚget_pie_link_argsrá  ÚSharedModuler^  rŠ  Úget_std_shared_module_link_argsÚget_std_shared_lib_link_argsÚget_pic_argsÚforce_sonameÚget_soname_argsÚprefixrª   rþ  Ú	soversionÚdarwin_versionsÚvs_module_defsrÑ  r   rò  ró  rà  Úget_std_link_argsÚshould_installrÄ  )rs   rã  rp  r$  rŠ  s        r<   Úget_target_type_link_argsz&NinjaBackend.get_target_type_link_argsÓ  s]  € ØˆÝ�f�eÔ.Ñ/Ô/ð !	=à˜×4Ò4Ñ6Ô6Ñ6ˆHàÔ$ð RØ˜F×?Ò?ÀÔ@PÑQÔQÑQ�àÔ%ð ]Ø˜F×:Ò:¸4×;SÒ;SÐTZÑ;[Ô;[Ñ\Ô\Ñ\�ØŒzð 7Ø˜F×4Ò4Ñ6Ô6Ñ6�ùÝ˜¥Ô 3Ñ4Ô4ñ 	=Ý˜&¥%Ô"4Ñ5Ô5ð BØÔ*Ô3Ô;�Ø˜F×BÒBÀ7ÑKÔKÑK��à˜F×?Ò?ÑAÔAÑA�à˜×+Ò+Ñ-Ô-Ñ-ˆHÝ˜f¥eÔ&8Ñ9Ô9ð >¸VÔ=Pð >à˜F×2Ò2ØÔ$ f¤m°V´[À&Ä-ØÔ$ fÔ&<ñ>ô >ñ >�ð Ô$ð u­°Ð9RÑ)SÔ)Sð uØ˜F×:Ò:¸6Ô;P×;`Ò;`ÐaeÔarÑ;sÔ;sÑtÔtÑt�àÔ%ð ]Ø˜F×:Ò:¸4×;SÒ;SÐTZÑ;[Ô;[Ñ\Ô\Ñ\�øÝ˜¥Ô 3Ñ4Ô4ð 	=Ø˜×0Ò0°Ô1AÀv×G\ÒG\ÑG^ÔG^ÐC^Ñ_Ô_Ñ_ˆHˆHåÐ;Ñ<Ô<Ð<Øˆr>   c                ó@  — g }t          |t          j        ¦  «        r�| j        j        |j                 }|                     ¦   «         s|                     ¦   «         rB|j        �|| 	                    |j        ¦  «        z  }n|| 
                    |j        ¦  «        z  }|S rr   )rŸ   r   rØ  r   rc  rÊ  rS   Ú	is_cygwinÚgui_appÚget_gui_app_argsÚget_win_subsystem_argsÚwin_subsystem)rs   rã  rp  r$  r;   s        r<   Ú+get_target_type_link_args_post_dependenciesz8NinjaBackend.get_target_type_link_args_post_dependenciesù  s—   € ØˆÝ�f�eÔ.Ñ/Ô/ð 
	Tð Ô Ô)¨&Ô*<Ô=ˆAà�|Š|‰~Œ~ð T §¢¡¤ð TØ”>Ð-Ø × 7Ò 7¸¼Ñ GÔ GÑG�H�Hà × =Ò =¸fÔ>RÑ SÔ SÑS�HØˆr>   c                ó”  — d}|j         dk    rt          j        |j        d¦  «        rd}|rjg }|j        D ]^}|                     d¦  «        }||                      |d¦  «        z  }|                     |                      |¦  «        d         ¦  «         Œ_|S |  	                    ||j        ¦  «        }|r| 
                    |¦  «        ng S )NFrP  z<19.00.23918Trº   r   )rb  r   rœ  r{  rß  Úextract_all_objectsÚdetermine_ext_objsrP  rO  Úbuild_target_link_argumentsrÉ  )rs   rp  rã  Ú
use_customÚobjects_from_static_libsrì   r�   Útarget_argss           r<   Úget_link_whole_argsz NinjaBackend.get_link_whole_args  sé   € Øˆ
ØŒ9˜ÒÐõ Ô'¨¬¸ÑGÔGð "Ø!�
àð 
	QØACÐ$ØÔ0ð Rð R�Ø×+Ò+¨EÑ2Ô2�Ø(¨D×,CÒ,CÀAÀrÑ,JÔ,JÑJÐ(Ø(×/Ò/°×0HÒ0HÈÑ0MÔ0MÈaÔ0PÑQÔQÐQÐQà+Ð+à×:Ò:¸6À6ÔC\Ñ]Ô]ˆKØ=HÐP�6×,Ò,¨[Ñ9Ô9Ð9ÈbÐPr>   c                ó    — ddl m} |D ]D}|D ]?}|                     |||¦  «        }|sŒ|                     | j        |¦  «        }|sŒ:|c c S ŒEd S )Nr   )Ú	CCompiler)Úcompilers.crC  Ú_get_trials_from_patternÚ_get_file_from_listr   )	rs   rp  ÚlibnameÚsearch_dirsÚpatternsrC  r0  r�  Útrials	            r<   Úguess_library_absolute_pathz(NinjaBackend.guess_library_absolute_path  s“   € à+Ð+Ð+Ð+Ð+Ð+Øð 		ð 		ˆAØð ð �Ø!×:Ò:¸1¸aÀÑIÔI�Øð ØØ!×5Ò5°dÔ6FÈÑNÔN�Øð Øà�����ðð		ð 		r>   c                ó*  — t          ¦   «         }t          ¦   «         }g }| j                             ¦   «         }t          |                     |¦  «        ¦  «        }	|	D �]É}
|
|v r|
                     d¦  «        sŒ|
                     d¦  «        rªt          |
¦  «        dk    r|
dd …         }n7	 t          |	¦  «        }n&# t          $ r t          j
        d¦  «         Y  �nHw xY wt          j                             |¦  «        s t          j                             ||¦  «        }|                     |¦  «         ŒÜ|
                     d¦  «        rkt          |
¦  «        dk    r|
dd …         }n6	 t          |	¦  «        }n%# t          $ r t          j
        d¦  «         Y  nŠw xY w|                     |¦  «         �Œ\t          j                             |
¦  «        rN| j                             |
¦  «        r4t          j                             |
¦  «        r|                     |
¦  «         �ŒËg }	 |                     | j        t(          j        d¬¦  «        }|                     | j        t(          j        d¬¦  «        }t/          |¦  «        t/          |                     | j        ¦  «        ¦  «        z   }|D ]¨}|                      ||||¦  «        }|                      ||||¦  «        }|r9|                     |                     ¦   «                              ¦   «         ¦  «         |r9|                     |                     ¦   «                              ¦   «         ¦  «         Œ©n5# t8          j        t<          f$ r}d	t?          |¦  «        vr‚ Y d }~nd }~ww xY w||z   S )
Nr´  rº  r   z?Generated linker command has -L argument without following pathr·  zIGenerated linker command has '-l' argument without following library nameT)ÚstrictÚget_library_naming) r   r   r‚  r¦  Únative_args_to_unixr    r8   r§  ÚStopIterationr   r–  rU   re  r½  rÆ   rê   rI  Úisfileró   rN  r   ÚSTATICÚSHAREDr  Úget_library_dirsrK  Úresolver¶  r   r   ÚAttributeErrorra   )rs   rp  rã  r$  ÚinternalrH  ÚlibsÚabsolute_libsr  ÚitÚitemre  r¹  Úguessed_dependenciesÚstatic_patternsÚshared_patternsrG  Ú
staticlibsÚ
sharedlibsrÕ   s                       r<   Ú guess_external_link_dependenciesz-NinjaBackend.guess_external_link_dependencies*  s©  € õ !‘l”lˆÝ‰|Œ|ˆØˆàÔ$×2Ò2Ñ4Ô4ˆ	å�&×,Ò,¨XÑ6Ô6Ñ7Ô7ˆØð 	+ñ 	+ˆDØ�xÐÐ¨¯ª¸Ñ(<Ô(<ÐØà�Š˜tÑ$Ô$ð +Ý�t‘9”9˜q’=�=Ø   œ8�D�DðÝ# B™xœx˜˜øÝ(ð ð ð ÝœÐ%fÑgÔgÐgØ˜™ðøøøõ ”w—}’} TÑ*Ô*ð 9Ýœ7Ÿ<š<¨	°4Ñ8Ô8�DØ—’ Ñ%Ô%Ð%Ð%Ø—’ Ñ&Ô&ð +Ý�t‘9”9˜q’=�=Ø˜q˜r˜rœ(�C�CðÝ" 2™hœh˜˜øÝ(ð ð ð ÝœÐ%pÑqÔqÐqØ˜˜ðøøøð —’˜‘”�‘Ý”—’˜tÑ$Ô$ð +¨Ô)9×)DÒ)DÀTÑ)JÔ)Jð +ÍrÌwÏ~Ê~Ð^bÑOcÔOcð +Ø×$Ò$ TÑ*Ô*Ð*ùà!Ðð	Ø$×7Ò7¸Ô8HÍ'Ì.ÐaeÐ7ÑfÔfˆOØ$×7Ò7¸Ô8HÍ'Ì.ÐaeÐ7ÑfÔfˆOÝ Ñ,Ô,­u°V×5LÒ5LÈTÔM]Ñ5^Ô5^Ñ/_Ô/_Ñ_ˆKØð 
Qð 
Q�ð "×=Ò=¸fÀgØ>IÈ?ñ\ô \�
à!×=Ò=¸fÀgØ>IÈ?ñ\ô \�
àð QØ(×/Ò/°
×0BÒ0BÑ0DÔ0D×0MÒ0MÑ0OÔ0OÑPÔPÐPØð QØ(×/Ò/°
×0BÒ0BÑ0DÔ0D×0MÒ0MÑ0OÔ0OÑPÔPÐPøð
Qøõ Ô'­Ð8ð 	ð 	ð 	Ø#­3¨q©6¬6Ð1Ð1Øð 2Ð1Ð1Ð1Ð1øøøøð	øøøð $ mÑ3Ð3s=   Â-B=Â=C ÃC Å,E<Å<FÆFÈ*D0M ÍNÍ1NÎNc                ó  — t          |t          j        ¦  «        sJ ‚t          j                             |                      |¦  «        |j        dz   ¦  «        }t          | j	        |gd|¦  «        }| 
                    ¦   «         }|j        d d …         }||                     ||¦  «        z  }|                      ||¦  «        }|                     d|¦  «         |                     dd|› d�¦  «         |                      |¦  «         |gS )Nz
-prelink.or   r¬  r^   zPrelinking r  )rŸ   r   rà  rU   re  rÆ   r+  rª   rÝ   rå   Úget_prelinkerÚexelistÚget_prelink_argsry  rô   rC  )rs   rã  r]  Úprelink_namerG  Ú	prelinkerrK   s          r<   rV  zNinjaBackend.generate_prelinkl  sÿ   € Ý˜&¥%Ô"5Ñ6Ô6Ð6Ð6Ð6Ý”w—|’| D×$?Ò$?ÀÑ$GÔ$GÈÌÐWcÑIcÑdÔdˆÝ  Ô!1°L°>ÐCSÐU]Ñ^Ô^ˆà×(Ò(Ñ*Ô*ˆ	ØÔ   Ô"ˆØˆy×)Ò)¨,¸ÑAÔAÑAˆà× Ò  ¨Ñ-Ô-ˆØ�Š�i Ñ%Ô%Ð%Ø�Š�mÐ%B°<Ð%BÐ%BÐ%BÑCÔCÐCØ�Š�tÑÔÐØˆ~Ðr>   rp  ú#T.Union['Compiler', 'StaticLinker']c           	     óF  ‡ — |�|ng }|�|ng }g }t          |t          j        ¦  «        rd}n|                     ¦   «         }t          |t          j        ¦  «        r‰                      |¦  «         ‰                      |j        ¦  «        }	|dz   |	z   }
|                     ¦   «         }t          |t          j        ¦  «        r+|| 	                    | 
                    ¦   «         ¦  «        z  }n[|t          j	        | 
                    ¦   «         |t          |t          j        ¦  «        ‰ j                             ¦   «         ¦  «        z  }|‰                      ||¦  «        z  }||                     ¦   «         z  }||                     |                     t'          d¦  «        ¦  «        ¦  «        z  }|                     t'          d¦  «        ¦  «        r9|‰                      |||¦  «        z  }‰                      |||¦  «        }|�||gz  }|‰                      ||¦  «        z  }t          |t          j        ¦  «        s|‰                      ||¦  «        z  }t          |t          j        ¦  «        s†|‰ j                             ||j        |j        ¦  «        z  }|‰ j                             ||j        ¦  «        z  }|‰ j        j                             |j        |                     ¦   «         ¦  «        z  }t;          |j        ¦  «        rVt>          j          !                    t>          j          "                    |j        ¦  «        ‰  #                    |¦  «        ¦  «        }n‰  #                    |¦  «        }| $                    ‰ j        ‰ j                             ¦   «         |‰  %                    |¦  «        |j&        |j'        ¦  «        \  }|_(        ||z  }|dk    rg }n| )                    ¦   «         }‰  *                    ||¦  «        }||z  }t          |t          j        ¦  «        sÇ|| +                    |¦  «        z  }| ,                    ¦   «         D ]*}| -                    | .                    |¦  «        ¦  «         Œ+| )                    ¦   «         D ][}t          |t          j        ¦  «        r?| ,                    ¦   «         D ]*}| -                    | .                    |¦  «        ¦  «         Œ+Œ\|‰  /                    ||¦  «        z  }t          |t`          ¦  «        r'|| 1                    ‰ j        j        j2        ¦  «        z  }g }| 3                    ‰  4                    ||||¦  «        ¦  «         ‰  5                    |¦  «        }||z  }||z  }||z  }| 3                    ˆ fd„|D ¦   «         ¦  «         | 3                    ˆ fd„|j6        D ¦   «         ¦  «         to          ‰ j8        ||
||¬¦  «        }| 9                    ||z   ¦  «         | :                    d|¦  «         |S )	NrR  Ú_LINKERr-  r
  c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   ©Úget_dependency_filenamer'  s     €r<   rŒ   z.NinjaBackend.generate_link.<locals>.<listcomp>  s'   ø€ ÐRÐRÐRÀ˜D×8Ò8¸Ñ;Ô;ÐRÐRÐRr>   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rx   rl  r'  s     €r<   rŒ   z.NinjaBackend.generate_link.<locals>.<listcomp>  s7   ø€ ð :ð :ð :Ø !ð !×8Ò8¸Ñ;Ô;ð :ð :ð :r>   )rç   Ú	LINK_ARGS);rŸ   r   rà  r  rá  rÐ  râ  rÊ  r0  Úget_base_link_argsr‹  r   r&  r   r‚  r®  rÅ  Úget_buildtype_linker_argsræ  r$   rº  r¶  r2  rA  r  r¾  r  r^  Úget_external_link_argsr#   rª   rU   re  rÆ   r  rÚ  rÊ  rË  rÌ  rÍ  rÎ  r–  r=  Úget_target_link_argsr6  Úextend_preserving_lflagsÚget_dependency_link_argsr9  r   Úget_option_link_argsrŠ  rP  ra  Ú$get_custom_target_provided_librariesÚlink_dependsrÝ   rå   rí   rô   )rs   rã  r\  r]  rp  ry  r,  rç   Úlinker_baserZ  Úlinker_ruler$  Ú	debugfilerÜ  rÝ  ÚdependenciesrW  rì   r0  Údep_targetsÚcustom_target_librariesrG  s   `                     r<   rW  zNinjaBackend.generate_link{  sL  ø€ Ø#-Ð#9�Z�Z¸rˆ
Ø%0Ð%<�k�kÀ"ˆØˆÝ�f�eÔ1Ñ2Ô2ð 	0Ø"ˆKˆKà ×-Ò-Ñ/Ô/ˆKÝ�f�eÔ1Ñ2Ô2ð 	(Ø×Ò Ñ'Ô'Ð'Ø×$Ò$ VÔ%7Ñ8Ô8ˆØ! IÑ-°Ñ5ˆð ×'Ò'Ñ)Ô)ˆõ �f�eÔ1Ñ2Ô2ð 	WØ˜×1Ò1°&×2DÒ2DÑ2FÔ2FÑGÔGÑGˆHˆHà�	Ô4°V×5GÒ5GÑ5IÔ5IØ5;Ý5?ÀÍÔHZÑ5[Ô5[Ø59Ô5E×5SÒ5SÑ5UÔ5UñWô Wñ WˆHð
 	�D×0Ò0°¸Ñ@Ô@Ñ@ˆà�F×1Ò1Ñ3Ô3Ñ3ˆà�F×4Ò4°V×5FÒ5FÅyÐQ\ÑG]ÔG]Ñ5^Ô5^Ñ_Ô_Ñ_ˆà×Ò�Y wÑ/Ô/Ñ0Ô0ð 	-Ø˜×4Ò4°V¸VÀWÑMÔMÑMˆHØ×4Ò4°V¸VÀWÑMÔMˆIØÐ$Ø ) Ñ,�ð 	�D×2Ò2°6¸6ÑBÔBÑBˆõ ˜&¥%Ô"5Ñ6Ô6ð 	AØ˜×0Ò0°¸Ñ@Ô@Ñ@ˆHå˜&¥%Ô"5Ñ6Ô6ð 	tà˜œ
×8Ò8¸ÀÔARÐTZÔTfÑgÔgÑgˆHð ˜œ
×7Ò7¸ÀÔ@RÑSÔSÑSˆHð ˜Ô(Ô1×HÒHÈÔI[Ð]c×]pÒ]pÑ]rÔ]rÑsÔsÑsˆHõ ˜œÑ$Ô$ð 	Jõ /1¬g¯lªlÝ”—’ ¤Ñ,Ô,Ø×#Ò# FÑ+Ô+ñ/-ô /-Ð+Ð+ð /3×.AÒ.AÀ&Ñ.IÔ.IÐ+à×#Ò# DÔ$4Ø$(Ô$4×$BÒ$BÑ$DÔ$DØ$CØ$(×$=Ò$=¸fÑ$EÔ$EØ$*Ô$6Ø$*Ô$8ñ:ô :ñ 	2ˆ�VÔ0ð 	�JÑˆð ˜(Ò"Ð"ð ˆLˆLà!×2Ò2Ñ4Ô4ˆLØ×3Ò3°F¸LÑIÔIˆØ�HÑˆå˜&¥%Ô"5Ñ6Ô6ð 	`ð ˜×3Ò3°FÑ;Ô;Ñ;ˆHà×/Ò/Ñ1Ô1ð Xð X�ð ×1Ò1°&×2QÒ2QÐRUÑ2VÔ2VÑWÔWÐWÐWØ×,Ò,Ñ.Ô.ð `ð `�Ý˜a¥Ô!4Ñ5Ô5ð `Ø ×2Ò2Ñ4Ô4ð `ð `˜Ø ×9Ò9¸&×:YÒ:YÐZ]Ñ:^Ô:^Ñ_Ô_Ð_Ð_øð 	�D×DÒDÀVÈVÑTÔTÑTˆõ �f�hÑ'Ô'ð 	Wð ˜×3Ò3°DÔ4DÔ4MÔ4UÑVÔVÑVˆHàˆØ×Ò˜4×@Ò@ÀÈÐQYÐ[cÑdÔdÑeÔeÐeð #'×"KÒ"KÈFÑ"SÔ"SÐØ�JÑˆØÐ+Ñ+ˆØ�KÑˆØ×ÒÐRÐRÐRÐRÀ\ÐRÑRÔRÑSÔSÐSØ×Òð :ð :ð :ð :Ø%+Ô%8ð:ñ :ô :ñ 	;ô 	;ð 	;å  Ô!1°7¸KÈÐanÐoÑoÔoˆØ�Š�[Ð#:Ñ:Ñ;Ô;Ð;Ø�Š�k 8Ñ,Ô,Ð,Øˆr>   c                ó|  — t          |t          j        ¦  «        r|                      |¦  «        S t          |t          j        ¦  «        r_|j        r|                     ¦   «         S |                     | j	         
                    ¦   «         | j	                             ¦   «         ¦  «        S |                      |¦  «        S rr   )rŸ   r   rá  r  r   r   rf  r…  r  r   rÎ  r‚  r&  )rs   r¥  s     r<   rm  z$NinjaBackend.get_dependency_filename
  s¬   € Ý�a�Ô,Ñ-Ô-ð 	IØ×1Ò1°!Ñ4Ô4Ð4Ý˜�8œ=Ñ)Ô)ð 	IØŒzð IØ—’Ñ(Ô(Ð(à—’ tÔ'7×'FÒ'FÑ'HÔ'HØ'+Ô'7×'EÒ'EÑ'GÔ'GñIô Ið Ià×'Ò'¨Ñ*Ô*Ð*r>   c                óª  — |                      ¦   «         D ]½\  }}}t          j                             | j                             ¦   «         ||¦  «        }	 t          j        |¦  «         n# t          $ r Y nw xY w	 t          j        ||¦  «         Œ{# t          $ r t          j        d¦  «         Y Œ›t          $ r t          j        d¦  «         Y Œºw xY wd S )Nz?Library versioning disabled because symlinks are not supported.zOLibrary versioning disabled because we do not have symlink creation privileges.)Úget_aliasesrU   re  rÆ   r   r‚  ÚremoverÈ  ÚsymlinkÚNotImplementedErrorr   r
  ÚOSError)rs   rã  ÚoutdirÚaliasÚtoÚtagÚ	aliasfiles          r<   r6  z#NinjaBackend.generate_shlib_aliases  s  € Ø$×0Ò0Ñ2Ô2ð 	nð 	n‰NˆE�2�sÝœŸš TÔ%5×%CÒ%CÑ%EÔ%EÀvÈuÑUÔUˆIðÝ”	˜)Ñ$Ô$Ð$Ð$øÝð ð ð Ø�ðøøøðnÝ”
˜2˜yÑ)Ô)Ð)Ð)øÝ&ð ^ð ^ð ^Ý”
Ð\Ñ]Ô]Ð]Ð]Ð]Ýð nð nð nÝ”
ÐlÑmÔmÐmÐmÐmðnøøøð	nð 	ns*   ÁA)Á)
A6Á5A6Á:BÂCÂ0CÃCÚtreesc                ó2  — |                       | j        ddd¦  «        }t          | j                             ¦   «         |¦  «        }t
          j                             | j                             ¦   «         d¦  «        }| 	                    d| j         
                    ¦   «         dd|gz   ¦  «         | 	                    dd	¦  «         |                      |¦  «         t          |d
¦  «        5 }t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   dS )Nzclean-ctlistr   rŸ  zcleantrees.datr¬  rÉ  Ú
cleantreesr^   z"Cleaning custom target directoriesrÃ  )rH  rå   r%   r   r‚  rU   re  rÆ   rf  rô   rÍ  rC  rY  r†  r¸  )rs   r‹  rÕ   r0  Úd_fileÚofiles         r<   Úgenerate_custom_target_cleanz)NinjaBackend.generate_custom_target_clean#  s4  € Ø×$Ò$ TÔ%5°~ÐGWÐY`ÑaÔaˆÝ�tÔ'×5Ò5Ñ7Ô7¸Ñ?Ô?ˆÝ”—’˜dÔ.×>Ò>Ñ@Ô@ÐBRÑSÔSˆØ	�
Š
�9˜dÔ.×@Ò@ÑBÔBÀlÐT`ÐbhÐEiÑiÑjÔjÐjØ	�
Š
�=Ð"FÑGÔGÐGØ�Š�qÑÔÐå�&˜$ÑÔð 	" 5ÝŒK˜˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"àˆ~s   Ã*DÄDÄDc                óÖ  — |                       | j        ddd¦  «        }|                     dt          j        ¦   «         g d¢z   ¦  «         |                     dd¦  «         |                      |¦  «         |                       | j        ddd¦  «        }|                     dt          j        ¦   «         g d	¢z   ¦  «         |                     dd
¦  «         |                      |¦  «         d S )Nú
clean-gcnor   rŸ  r¬  )rÉ  Údelwithsuffixr  Úgcnor^   zDeleting gcno filesú
clean-gcda)rÉ  r“  r  ÚgcdazDeleting gcda files)rH  rå   rô   r   r†  rC  )rs   Ú	gcno_elemÚ	gcda_elems      r<   Úgenerate_gcov_cleanz NinjaBackend.generate_gcov_clean/  sì   € Ø×,Ò,¨TÔ-=¸|ÐM]Ð_fÑgÔgˆ	Ø×Ò˜9¥hÔ&@Ñ&BÔ&BÐEqÐEqÐEqÑ&qÑrÔrÐrØ×Ò˜=Ð*?Ñ@Ô@Ð@Ø�Š�yÑ!Ô!Ð!à×,Ò,¨TÔ-=¸|ÐM]Ð_fÑgÔgˆ	Ø×Ò˜9¥hÔ&@Ñ&BÔ&BÐEqÐEqÐEqÑ&qÑrÔrÐrØ×Ò˜=Ð*?Ñ@Ô@Ð@Ø�Š�yÑ!Ô!Ð!Ð!Ð!r>   c                ó~  — g }| j         j        j                             ¦   «         D ]‰\  }}|                     ¦   «         rp|                     dt          |¦  «        z   dz   t          |j        t          ¦  «        r|j        n%t          |j        ¦  «         	                    ¦   «         z   ¦  «         ŒŠt          |¦  «        S )Nz-Dr£  )r   r^  rŠ  re  Ú
is_projectró   ra   rŸ   rÖ   rú  r  )rs   ÚcmdsÚkÚvs       r<   Úget_user_option_argsz!NinjaBackend.get_user_option_args:  s¨   € ØˆØÔ&Ô/Ô7×=Ò=Ñ?Ô?ð 	sð 	s‰FˆQ�Ø�|Š|‰~Œ~ð sØ—’˜D¥3 q¡6¤6™M¨CÑ/½jÈÌÕRUÑ>VÔ>VÐ3p°1´7°7Õ\_Ð`aÔ`gÑ\hÔ\h×\nÒ\nÑ\pÔ\pÑqÑrÔrÐrøõ �d‰|Œ|Ðr>   c                ó$  — |                       | j        ddd¦  «        }|                     dd¦  «         |                     d| j                             ¦   «         dgz   ¦  «         |                     dd¦  «         |                      |¦  «         d S )	NÚdistr   rŸ  rZ   zCreating source packagesr¬  r[   r«  )rH  rå   rô   r   rÍ  rC  rÞ  s     r<   r“  zNinjaBackend.generate_distD  s‹   € Ø×'Ò'¨Ô(8¸&ÐBRÐT[Ñ\Ô\ˆØ�Š�fÐ8Ñ9Ô9Ð9Ø�Š�i Ô!1×!CÒ!CÑ!EÔ!EÈÈÑ!PÑQÔQÐQØ�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                óÈ  — t          j        ¦   «         sd S d| j        v rd S | j                              ¦   «         dd| j         j        | j         j        gz   | j                              ¦   «         z   |                      ¦   «         z   }|                      | j        ddd¦  «        }|                     d|¦  «         |                     dd¦  «         |  	                    |¦  «         d S )	Nz
scan-buildrÉ  Ú	scanbuildr   rŸ  r¬  r[   r«  )
r   Údetect_scanbuildrå   rÍ  r  r  rŸ  rH  rô   rC  rç  s      r<   Úgenerate_scanbuildzNinjaBackend.generate_scanbuildK  sé   € ÝÔ+Ñ-Ô-ð 	ØˆFØ˜4Ô+Ð+Ð+ØˆFØÔ×0Ò0Ñ2Ô2Ø˜;¨Ô(8Ô(CÀTÔEUÔE_Ð`ñaàÔ×.Ò.Ñ0Ô0ñ1à37×3LÒ3LÑ3NÔ3NñOˆð ×'Ò'¨Ô(8¸,ÐHXÐZaÑbÔbˆØ�Š�i Ñ%Ô%Ð%Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                óÊ  — d|z   }g }|r |d|› �z  }|                      d|› �¦  «         t          j                             t          j                             | j        j        d|z   ¦  «        ¦  «        sLt          j                             t          j                             | j        j        d|z   ¦  «        ¦  «        sd S || j        v rd S | j                             ¦   «         dd|z   | j        j        | j        j	        gz   |z   }|  
                    | j        |dd	¦  «        }|                     d
|¦  «         |                     dd¦  «         |                      |¦  «         d S )Nzclang-r´  z--z.clang-z_clang-rÉ  rÈ  r   rŸ  r¬  r[   r«  )ró   rU   re  r�  rÆ   r   r  rå   rÍ  r  rH  rô   rC  )rs   rª   Ú	extra_argrÄ  ry  rK   rG  s          r<   Úgenerate_clangtoolzNinjaBackend.generate_clangtoolX  s_  € Ø ‘oˆØˆ
Øð 	0Ø˜?˜y˜?˜?Ñ*ˆKØ×ÒÐ. 9Ð.Ð.Ñ/Ô/Ð/ÝŒw�~Š~�bœgŸlšl¨4Ô+;Ô+FÈ	ÐTXÑHXÑYÔYÑZÔZð 	Ý”G—N’N¥2¤7§<¢<°Ô0@Ô0KÈYÐY]ÑM]Ñ#^Ô#^Ñ_Ô_ð	àˆFØ˜$Ô*Ð*Ð*ØˆFØÔ×0Ò0Ñ2Ô2Ø˜7 T™>¨4Ô+;Ô+FÈÔHXÔHbÐcñdàñˆð ×'Ò'¨Ô(8¸+ÐGWÐY`ÑaÔaˆØ�Š�i Ñ%Ô%Ð%Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                ó†   — t          j        ¦   «         sd S |                      d¦  «         |                      dd¦  «         d S )NrÅ   Úcheck)r   Údetect_clangformatr¨  r…   s    r<   Úgenerate_clangformatz!NinjaBackend.generate_clangformatk  sH   € ÝÔ-Ñ/Ô/ð 	ØˆFØ×Ò Ñ)Ô)Ð)Ø×Ò ¨'Ñ2Ô2Ð2Ð2Ð2r>   c                óf   — dd l }|                     d¦  «        sd S |                      d¦  «         d S )Nr   z
clang-tidyÚtidy)ÚshutilÚwhichr¨  )rs   r¯  s     r<   Úgenerate_clangtidyzNinjaBackend.generate_clangtidyq  s>   € ØˆˆˆØ�|Š|˜LÑ)Ô)ð 	ØˆFØ×Ò Ñ'Ô'Ð'Ð'Ð'r>   c                ób  — dd l }|                     |¦  «        sd S || j        v rd S | j                             ¦   «         dd|| j        j        gz   }|                      | j        |dd¦  «        }|                     d|¦  «         |                     dd¦  «         |                      |¦  «         d S )	Nr   rÉ  Útagsr   rŸ  r¬  r[   r«  )	r¯  r°  rå   r   rÍ  r  rH  rô   rC  )rs   r(  rÄ  r¯  rK   rG  s         r<   Úgenerate_tagszNinjaBackend.generate_tagsw  sÁ   € ØˆˆˆØ�|Š|˜DÑ!Ô!ð 	ØˆFØ˜$Ô*Ð*Ð*ØˆFØÔ×0Ò0Ñ2Ô2Ø˜6 4¨Ô)9Ô)DÐEñFˆà×'Ò'¨Ô(8¸+ÐGWÐY`ÑaÔaˆØ�Š�i Ñ%Ô%Ð%Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c                óú  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         | j                             ¦   «         ddgz   }|                      | j        ddd¦  «        }|                     d	|¦  «         |                     d
d¦  «         |  	                    |¦  «         d S )NÚetagsÚTAGSÚctagsÚcscoperÉ  Ú	uninstallr   rŸ  r¬  r[   r«  )
r¥  r¬  r±  r´  r   rÍ  rH  rå   rô   rC  rç  s      r<   r—  zNinjaBackend.generate_utils…  sö   € Ø×ÒÑ!Ô!Ð!Ø×!Ò!Ñ#Ô#Ð#Ø×ÒÑ!Ô!Ð!Ø×Ò˜7 FÑ+Ô+Ð+Ø×Ò˜7 GÑ,Ô,Ð,Ø×Ò˜8 XÑ.Ô.Ð.ØÔ×0Ò0Ñ2Ô2°lÀKÐ5PÑPˆØ×'Ò'¨Ô(8¸+ÐGWÐY`ÑaÔaˆØ�Š�i Ñ%Ô%Ð%Ø�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐÐÐr>   c           	     ó  — d|                       ¦   «         fd|                      ¦   «         fd|                      d¦  «        ffD ]Å\  }}g }|dk    r|                     ddg¦  «         |                     ¦   «         D ]`}|                     t
          j                             |                      |¦  «        | 	                    ¦   «         d         ¦  «        ¦  «         Œat          | j        |d|¦  «        }|                      |¦  «         ŒÆ|                      | j        ddd	¦  «        }|                     d
| j        ddgz   ¦  «         |                     dd¦  «         g }| j                             ¦   «                              ¦   «         D ]y}t%          |t           j        ¦  «        r]| 	                    ¦   «         D ]H}|                     t
          j                             |                      |¦  «        |¦  «        ¦  «         ŒIŒz|r(|                     |                      |¦  «        ¦  «         t-          d¦  «        | j        j        j        v rg| j        j        j        t-          d¦  «                 j        r>|                      ¦   «          |                     d¦  «         |                     d¦  «         |                      |¦  «         |                      ¦   «         }t          | j        dd|¦  «        }|                     dd¦  «         |                      |¦  «         t          | j        ddd	¦  «        }|                     dd¦  «         |                      |¦  «         t          | j        |dd¦  «        }|                      |¦  «         d S )NrÛ  zmeson-test-prereqzmeson-benchmark-prereqTr   rö   Úcleanr   rŸ  r¬  r}  r^   ÚCleaningrz  r•  r’  r9  rð  r[   r«  Úreconfigurerº   )Úget_build_by_default_targetsÚget_testlike_targetsrP  r`  ró   rU   re  rÆ   rÚ  rÕ  rÝ   rå   rC  rH  rô   r‡  r   r�  rŸ   rÓ  rí   r�  r$   r   r^  rŠ  rÖ   r™  Úget_regen_filelist)rs   Útargr­   Ú
targetlistr¥  rG  Úctlistrh  s           r<   r˜  zNinjaBackend.generate_ending’  s]  € à˜×9Ò9Ñ;Ô;Ð<Ø$ d×&?Ò&?Ñ&AÔ&AÐBØ)¨4×+DÒ+DÀTÑ+JÔ+JÐKðMð 	!ð 	!‰JˆD�$ð ˆJð �uŠ}ˆ}Ø×!Ò!Ð#6Ð8PÐ"QÑRÔRÐRØ—[’[‘]”]ð \ð \�ð ×!Ò!¥"¤'§,¢,¨t×/BÒ/BÀ1Ñ/EÔ/EÀqÇ}Â}ÁÄÐWXÔGYÑ"ZÔ"ZÑ[Ô[Ð[Ð[å$ TÔ%5°t¸WÀjÑQÔQˆDØ�NŠN˜4Ñ Ô Ð Ð à×'Ò'¨Ô(8¸'ÐCSÐU\Ñ]Ô]ˆØ�Š�i Ô!3°t¸W°oÑ!EÑFÔFÐFØ�Š�m ZÑ0Ô0Ð0ð ˆØ”×'Ò'Ñ)Ô)×0Ò0Ñ2Ô2ð 	Kð 	KˆAÝ˜!�UÔ/Ñ0Ô0ð KàŸš™œð Kð K�AØ—M’M¥"¤'§,¢,¨t×/BÒ/BÀ1Ñ/EÔ/EÀqÑ"IÔ"IÑJÔJÐJÐJøØð 	DØ�LŠL˜×:Ò:¸6ÑBÔBÑCÔCÐCå�\Ñ"Ô" dÔ&6Ô&?Ô&GÐGÐGØÔÔ$Ô,­Y°|Ñ-DÔ-DÔEÔKð Hà×$Ò$Ñ&Ô&Ð&Ø�LŠL˜Ñ&Ô&Ð&Ø�LŠL˜Ñ&Ô&Ð&Ø�Š�tÑÔÐà×&Ò&Ñ(Ô(ˆÝ  Ô!1°=ÐBTÐVZÑ[Ô[ˆØ�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐå  Ô!1°=ÐBTÐV]Ñ^Ô^ˆØ�Š�f˜iÑ(Ô(Ð(Ø�Š�tÑÔÐå  Ô!1°4¸À"ÑEÔEˆØ�Š�tÑÔÐÐÐr>   Ú	target_idúkT.List[T.Dict[str, T.Union[bool, str, T.List[T.Union[str, T.Dict[str, T.Union[str, T.List[str], bool]]]]]]]c                óî   •— || j         vst          | j         |         ¦  «        dk    r"t          ¦   «                              ||¦  «        S g }| j         |                              ¦   «         D ]}||gz  }Œ	|S r›  )r=  r8   r:  Úget_introspection_datar`  )rs   rÅ  rã  rr  rŠ   r@  s        €r<   rÈ  z#NinjaBackend.get_introspection_dataÊ  s�   ø€ Ø˜DÔ3Ð3Ð3µs¸4Ô;RÐS\Ô;]Ñ7^Ô7^ÐbcÒ7cÐ7cÝ‘7”7×1Ò1°)¸VÑDÔDÐDàˆØÔ(¨Ô3×:Ò:Ñ<Ô<ð 	ð 	ˆAØ�q�c‰MˆFˆFØˆr>   )r   r4  r5  r6  rr   )rb   r®  )rã  rç  rb   rè  )rã  r  r  r  )rã  rr  rb   r(  )rd  r~  r  r&  rb   r®  )rã  rÁ  )r§  r+  r¨  r+  )rã  r  )rã  rç  )r¥  rç  rb   rY  )rã  rç  rb   ra  )ræ  r’  rœ  r
   rb   r®  )r–  r
   r—  r˜  rb   r™  )rª   ra   rŸ  ra   r¬   r   r   r(  r)  r(  rœ  ra   r­   r%  rb   r®  )rã  rç  rb   r®  )rÊ  r   rb   ra   )rã  )rÿ  ra   rÊ  r   rä  ra   rb   ra   )rm  r   rb   ra   )r(  r)  rb   r*  )rm  rE  rb   r®  )rm  rJ  rb   r®  )rb   r(  )rZ  ra   rb   r®  )rå  rz  rã  rç  rb   r®  )rm  r/   ræ  r
   rb   r&  )
rm  rJ  r0  ra   r  ra   r)  r(  rb   rÃ  ©F)rã  rç  rm  rJ  rÈ  r(  rb   rÉ  )rã  rç  rm  rJ  rb   rÉ  )rã  rç  rm  rJ  rÈ  r(  rb   rÑ  )FNNN)rã  rç  r  rÞ  ry  rÞ  rb   r®  )rb   r
   )NN)rã  rç  rp  rh  )r‹  r&  rb   ra   )rÅ  ra   rã  r  rb   rÆ  )€ru   rv   rw   rt   rH  rs  r­  r   rŸ  râ  rî  rô  r   r  r�  r}  rX  r„  r5  r™  r�  r1  rÀ  r3  rÔ  r•  rÖ  r’  r‘  r‹  rò  rŽ  r÷  rC  r™  rš  r�  r8  r+  r;  r  r  rR  rX  r`  r=  r>  r•  r  r«  r:  r�   râ  Úclassmethodrç  rÅ  rÆ  rï  rí  rô  rö  rù  r<  r.  rõ  rö  rD  rG  rI  rN  rR  rW  rY  r^  ra  rf  rh  ró  rô  r@  ry  r˜  r?  r«  r®  r²  r¶  rº  rK  r   rÇ  rÍ  rË  rÌ  rL  rë  rƒ  rè  ré  rê  r
  r  rN  r  rÐ  r  r2  r9  rA  rK  ra  rV  rW  rm  r6  r�  r™  rŸ  r“  r¥  r¨  r¬  r±  r´  r—  r˜  rÈ  Ú__classcell__)r@  s   @r<   r3  r3  ß  sz	  ø€ € € € € ð6ð 6ð 6ð 6ð 6ð 6ðbð bð bð bð"Apð Apð ApðFK*ð K*ð K*ðZð ð ð ðPð Pð Pð,ð ð ð*ð ð ð ð
ð 
ð 
ð 
ðð ð ð,<ð ,<ð ,<ð ,<ð\Oð Oð Oðbð ð ð ð,ð ð ð ð: ð  ð  ð(ð (ð (ð
<ð <ð <ð
	ð 	ð 	ð(4ð (4ð (4ðT3ð 3ð 3ð4ð 4ð 4ð 4ð.Dð Dð Dð(Fð Fð Fð Fð"ð "ð "ð "ð.ð ð ðð ð ð.8ð 8ð 8ð@#ð #ð #ð,ð ,ð ,ð(ð (ð (ð	xð 	xð 	xðð ð ðð ð ðð ð ð
7hð 7hð 7hð 7hðrð ð ð*0jð 0jð 0jð 0jðdð ð ð" ð  ð  ðAð Að Aðð ð ð*3/ð 3/ð 3/ð 3/ðjw6ð w6ð w6ð w6ðrGAð GAð GAð GAðRð ð ð ð%ð %ð %ð %ð('ð 'ð 'ð 'ð8i[ð i[ð i[ð i[ðV ð9ð 9ð 9ñ „\ð9ð ðBð Bð Bð Bñ „[ðBð ðhð hð hñ „[ðhð ð`ð `ð `ñ „[ð`ðSð Sð Sðð ð ðð ð ðð ð ð	ð 	ð 	ð^Hð ^Hð ^Hð@	ð 	ð 	ð 	ð^ð ^ð ^ð@Nð Nð Nð@Að Að AðQð Qð Qð QðUð Uð Uð5ð 5ð 5ð 5ð2ð 2ð 2ð
Að 
Að 
AðHð Hð Hð HðPð Pð Pð Pð?ð ?ð ?ð%=ð %=ð %=ðN2ð 2ð 2ð*
ð 
ð 
ð	Cð 	Cð 	Cð>ð >ð >ðð ð ð ð8!ð 8!ð 8!ð 8!ðt4Wð 4Wð 4Wðlð ð ð ðð ð ð
5Kð 5Kð 5Kðn7ð 7ð 7ð7ð 7ð 7ð"ð "ð "ð@ €Y�tÐÑÔðð ð ñ Ôðð, 7<ðð ð ð ð ðð ð ð ð €Y�tÐÑÔàBGð9ð 9ð 9ð 9ñ Ôð9ðx AEØFJØFJðr5ð r5ð r5ð r5ð r5ðh
,ð 
,ð 
,ðOð Oð Oð%ð %ð %ð#ð #ð #ð
ð 
ð 
ð5ð 5ð 5ð0	&ð 	&ð 	&ðð ð ð ðBKð Kð Kð
ð ð ðQð Qð Qð$ð $ð $ðLð ð ðQð Qð Qð( €Y�tÐÑÔðð ð ñ Ôðð@4ð @4ð @4ðDð ð ðMð Mð Mð Mð Mð^	+ð 	+ð 	+ðnð nð nð
ð 
ð 
ð 
ð	"ð 	"ð 	"ðð ð ðð ð ðð ð ðð ð ð ð&3ð 3ð 3ð(ð (ð (ðð ð ðð ð ð6ð 6ð 6ðpð ð ð ð ð ð ð ð ð r>   r3  ræ  r
   r©  r  r&  c                ó  — t          j        t          t           j        ¦  «        }t          j        t          t           j        ¦  «        }t          j        t
          t           j        ¦  «        }g }t          | ¦  «        } |                      dd¬¦  «        5 }	|	D �]Í}
|                     |
¦  «        }|�k| j	        | 
                    d¦  «        z  }|j                             ¦   «         dd…         |j        v r&|                     t          |||||¦  «        ¦  «         |                     |
¦  «        }|�½| 
                    d¦  «                             ¦   «         }|dk    rŒÊ||vrŒÏ|||         j        z  }|                     ¦   «         s|j        | j        k    rn�Œ|                     | ¦  «        r�Œ|                     |¦  «        }|                     t-          ||z  ¦  «        ¦  «         �ŒY|                     |
¦  «        }|��\| 
                    d¦  «                             ¦   «                              d¦  «        }t1          |¦  «        dv sJ d	|› �¦   «         ‚d
                     |¦  «        }||vrct5          d                     | 
                    d¦  «                             ¦   «         |                     d
d¬¦  «        d         ¦  «        ¦  «        ‚|||         j        z  }|                     ¦   «         s|j        | j        k    rn�Œ||                     | ¦  «        r�Œ“|                     |¦  «        }|                     t-          ||z  ¦  «        ¦  «         �ŒÏ	 ddd¦  «         n# 1 swxY w Y   |S )aÖ  
    scan a Fortran file for dependencies. Needs to be distinct from target
    to allow for recursion induced by `include` statements.er

    It makes a number of assumptions, including

    * `use`, `module`, `submodule` name is not on a continuation line

    Regex
    -----

    * `incre` works for `#include "foo.f90"` and `include "foo.f90"`
    * `usere` works for legacy and Fortran 2003 `use` statements
    * `submodre` is for Fortran >= 2008 `submodule`
    r–  r—  r˜  Nr   Ú	intrinsicr¼  >   r   r   zHsubmodule ancestry must be specified as ancestor:parent but Meson found r«  z=submodule {} relies on ancestor module {} that was not found.r   )Úmaxsplitr   )r@   rl  ÚFORTRAN_INCLUDE_PATr›  ÚFORTRAN_USE_PATrœ  r
   rY  rX  rh  r9   rþ  rú  rü  rP  r§  rö  Úis_filerª   Úsamefileræ  ró   ra   r–   r8   rÆ   r   rÅ   )ræ  r©  r  r¨  rm  ÚincreÚusererž  rª  rp  r  ÚincmatchÚincfileÚusematchÚusenamerñ  Úmod_namer£  r¤  Úancestor_childÚsubmodsrcfiles                        r<   r§  r§  Ô  sþ  € õ" ŒJÕ*­B¬MÑ:Ô:€EÝŒJ•­¬Ñ6Ô6€EÝŒzÕ,­b¬mÑ<Ô<€Hà€IÝ
ˆs‰)Œ)€CØ	�Š˜7¨8ˆÑ	4Ô	4ð ;>¸Øð :	>ñ :	>ˆDà—{’{ 4Ñ(Ô(ˆHØÐ#Øœ* x§~¢~°aÑ'8Ô'8Ñ8�ð ”>×'Ò'Ñ)Ô)¨!¨"¨"Ô-°Ô1GÐGÐGØ×$Ò$Õ%<¸WÀfÈgÐW\Ð^fÑ%gÔ%gÑhÔhÐhà—{’{ 4Ñ(Ô(ˆHØÐ#Ø"Ÿ.š.¨Ñ+Ô+×1Ò1Ñ3Ô3�Ø˜kÒ)Ð)ØØ %Ð'Ð'ð Ø  5¨¤>Ô#7Ñ7�Ø—’Ñ(Ô(ð Ø”| s¤xÒ/Ð/Øá Ø×%Ò% cÑ*Ô*ð Ùà#×;Ò;¸GÑDÔD�Ø× Ò ¥ W¨xÑ%7Ñ!8Ô!8Ñ9Ô9Ð9Ñ9à&Ÿnšn¨TÑ2Ô2�ØÑ*Ø)×/Ò/°Ñ2Ô2×8Ò8Ñ:Ô:×@Ò@ÀÑEÔE�GÝ˜w™<œ<¨6Ð1Ð1Ð1ðFØ<CðFð Fñ 2Ô1Ð1ð &)§X¢X¨gÑ%6Ô%6�NØ%¨UÐ2Ð2Ý,Ð-l×-sÒ-sÐt÷  uFò  uFð  GHñ  uIô  uI÷  uOò  uOñ  uQô  uQð  Sa÷  Sgò  Sgð  hkð  vwð  Sgñ  Sxô  Sxð  yzô  S{ñ  .|ô  .|ñ  }ô  }ð  }Ø$*¨U°>Ô-BÔ-HÑ$H�MØ(×0Ò0Ñ2Ô2ð !Ø(Ô-°´Ò9Ð9Ø á$Ø&×/Ò/°Ñ4Ô4ð !Ù Ø'×?Ò?ÀÑOÔO�HØ×$Ò$¥S¨°8Ñ);Ñ%<Ô%<Ñ=Ô=Ð=ùðu:	>ð;>ð ;>ð ;>ñ ;>ô ;>ð ;>ð ;>ð ;>ð ;>ð ;>ð ;>øøøð ;>ð ;>ð ;>ð ;>ðx Ðs   ÂKM4Í4M8Í;M8rÉ  )r`   ra   rb   ra   )ræ  r
   r©  r
   r  r
   rb   r&  )aÚ
__future__r   Úcollectionsr   Údataclassesr   Úenumr   r   Ú	functoolsr   Úpathlibr	   r
   Útextwrapr   rÜ  r·  rU   r†  r@   rH   rg  ÚtypingÚTrº   r   r   r   r   r   r   r   r   Úarglistr   r   Úlinkersr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   ÚTYPE_CHECKINGÚtyping_extensionsr(   Ú_typingr)   r*   r5  r+   r,   r-   Úcompilers.csr.   Úcompilers.fortranr/   r#  rÏ  rš  rœ  rÐ  rD   rJ   rS   rÛ   r3  r4  rY   rü   r¡   rl  re   rf   rk   rm   rz   r�   r‘   rš   rÝ   r  r  ÚBackendr3  r§  rx   r>   r<   ú<module>rí     s¤  ðð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à„?ð 
4Ø)Ð)Ð)Ð)Ð)Ð)à/Ð/Ð/Ð/Ð/Ð/Ø(Ð(Ð(Ð(Ð(Ð(Ø)Ð)Ð)Ð)Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø)Ð)Ð)Ð)Ð)Ð)Ø3Ð3Ð3Ð3Ð3Ð3àÐ2Ô3€Mð >Ð Ø;Ð ØBÐ ØE€ðð ð ðð ð ð €8ÔÑÔð -Ø€JØ˜d�m€OØ9Ð9Ð9€M€Mà€JØ€OØ,Ð,Ð,€Mð=ð =ð =ð& "Ð!Ñ#Ô#€ð WÐVÐV€	à"˜œ
 :Ñ.Ô.Ð Ø �b”j Ñ+Ô+Ð ð)ð )ð )ð )ð )ð"+ð +ð +ð +ð +ñ +ô +ð +ð
 ðð ð ð ð ˆdñ ô ñ „ðð
2ð 
2ð 
2ð 
2ð 
2ñ 
2ô 
2ð 
2ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðrð rð rð rð rñ rô rð rðh'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðB ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð ð ð  ð  ð  ð  ñ  ô  ñ „ð ðFr/ð r/ð r/ð r/ð r/�8Ô#ñ r/ô r/ð r/ðj_Sð Sð Sð Sð Sð Sr>   