§
    ‹ã÷c‹n ã                  óP  — 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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 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' ej(        rmddl)m*Z* ddl+m,Z, ddlm-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddlm5Z5m6Z6 d dl7m8Z8 ej9        ej:        e ej;        ej<        ej=        f                  Z> G d„ de8¦  «        Z?dZ@ ed¬¦  «         G d„ d¦  «        ¦   «         ZA G d„ d ejB        ¦  «        ZC ed¬¦  «         G d!„ d"¦  «        ¦   «         ZD ed¬¦  «         G d#„ d$¦  «        ¦   «         ZE ed¬¦  «         G d%„ d&¦  «        ¦   «         ZF ed¬¦  «         G d'„ d(¦  «        ¦   «         ZG ed¬¦  «         G d)„ d*¦  «        ¦   «         ZH ed¬¦  «         G d+„ d,¦  «        ¦   «         ZI G d-„ d.eH¦  «        ZJ ed¬¦  «         G d/„ d0¦  «        ¦   «         ZKd<d=d9„ZL G d:„ d;¦  «        ZMdS )>é    )Úannotations)ÚOrderedDict)Ú	dataclassÚInitVar)Ú	lru_cache)Úchain)ÚPathNé   )Úbuild)Údependencies)Úprograms)Úmesonlib)Úmlog)ÚLANGUAGES_USING_LDFLAGSÚdetect)ÚFileÚMachineChoiceÚMesonExceptionÚ
OrderedSetÚclassify_unity_sourcesÚ	OptionKeyÚ	join_argsÚExecutableSerialisation)ÚImmutableListProtocol)ÚCompilerArgs)ÚCompiler)ÚEnvironment)ÚInterpreterÚTest)ÚStaticLinker)ÚFileModeÚFileOrString)Ú	TypedDictc                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	ÚTargetIntrospectionDataÚstrÚlanguageúT.List[str]ÚcompilerÚ
parametersÚsourcesÚgenerated_sourcesN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú=/usr/lib/python3/dist-packages/mesonbuild/backend/backends.pyr%   r%   8   sK   € € € € € € àˆˆ‰ØÐÐÑØÐÐÑØÐÐÑØ&Ð&Ð&Ñ&Ð&Ð&r3   r%   )ÚdÚfortranÚvalaF)Úeqc                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú	RegenInfor&   Ú
source_dirÚ	build_dirr(   ÚdepfilesNr-   r2   r3   r4   r:   r:   F   s0   € € € € € € à€O€O�OØ€N€N�NØÐÐÑÐÐr3   r:   c                  ó>   — e Zd ZdZdZdZdZedd	„¦   «         Zdd
„Z	dS )ÚTestProtocolr   é   r
   é   Ústringr&   Úreturnú'TestProtocol'c                óŽ   — |dk    r| j         S |dk    r| j        S |dk    r| j        S |dk    r| j        S t	          d|› �¦  «        ‚)NÚexitcodeÚtapÚgtestÚrustzunknown test format )ÚEXITCODEÚTAPÚGTESTÚRUSTr   )ÚclsrB   s     r4   Úfrom_strzTestProtocol.from_strS   sa   € à�ZÒÐØ”<ÐØ�uŠ_ˆ_Ø”7ˆNØ�wÒÐØ”9ÐØ�vÒÐØ”8ˆOÝÐ<°FÐ<Ð<Ñ=Ô=Ð=r3   c                óf   — t          | ¦  «        }| |j        u rdS | |j        u rdS | |j        u rdS dS )NrF   rH   rI   rG   )ÚtyperJ   rL   rM   )ÚselfrN   s     r4   Ú__str__zTestProtocol.__str___   sH   € Ý�4‰jŒjˆØ�3”<ÐÐØ�:Ø�S”YÐÐØ�7Ø�S”XÐÐØ�6Øˆur3   N)rB   r&   rC   rD   )rC   r&   )
r.   r/   r0   rJ   rK   rL   rM   ÚclassmethodrO   rS   r2   r3   r4   r?   r?   L   sZ   € € € € € à€HØ
€CØ€EØ€Dàð	>ð 	>ð 	>ñ „[ð	>ðð ð ð ð ð r3   r?   c                  ó(   — e Zd ZU dZded<   ded<   dS )Ú
CleanTreesz•
    Directories outputted by custom targets that have to be manually cleaned
    because on Linux `ninja clean` only deletes empty directories.
    r&   r<   r(   ÚtreesN)r.   r/   r0   Ú__doc__r1   r2   r3   r4   rV   rV   j   s3   € € € € € € ðð ð €N€N�NØÐÐÑÐÐr3   rV   c                  óh   — 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d„ZdS )ÚInstallDatar&   r;   r<   ÚprefixÚlibdirr(   Ú	strip_binzT.Union[str, int]Úinstall_umaskÚmesonintrospectÚversionrC   ÚNonec                óv   — g | _         g | _        g | _        g | _        g | _        g | _        g | _        g | _        d S ©N)ÚtargetsÚheadersÚmanÚemptydirÚdataÚsymlinksÚinstall_scriptsÚinstall_subdirs©rR   s    r4   Ú__post_init__zInstallData.__post_init__€   sB   € Ø24ˆŒØ02ˆŒØ,.ˆŒØ13ˆŒØ-/ˆŒ	Ø46ˆŒØ@BˆÔØ:<ˆÔÐÐr3   N©rC   ra   ©r.   r/   r0   r1   rm   r2   r3   r4   rZ   rZ   s   s}   € € € € € € à€O€O�OØ€N€N�NØ€K€K�KØ€K€K�KØÐÐÑð %Ð$Ð$Ñ$Ø Ð Ð Ñ Ø€L€L�Lð=ð =ð =ð =ð =ð =r3   rZ   c                  óœ   — 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ed<   dZded<   dZded<   dZded<   dd„ZdS )ÚTargetInstallDatar&   ÚfnameÚoutdirzInitVar[T.Optional[str]]Úoutdir_nameÚboolÚstripzT.Mapping[str, str]Úinstall_name_mappingszT.Set[bytes]Úrpath_dirs_to_removeÚinstall_rpathzT.Optional['FileMode']Úinstall_modeÚ
subprojectFÚoptionalNúT.Optional[str]ÚtagÚ	can_striprC   ra   c                óâ   — |€%t           j                             d| j        ¦  «        }t           j                             |t           j                             | j        ¦  «        ¦  «        | _        d S )Nú{prefix})ÚosÚpathÚjoinrs   Úbasenamerr   Úout_name)rR   rt   s     r4   rm   zTargetInstallData.__post_init__š   sL   € ØÐÝœ'Ÿ,š, z°4´;Ñ?Ô?ˆKÝœŸš [µ"´'×2BÒ2BÀ4Ä:Ñ2NÔ2NÑOÔOˆŒˆˆr3   )rt   r}   rC   ra   )r.   r/   r0   r1   r|   r~   r   rm   r2   r3   r4   rq   rq   Š   sÃ   € € € € € € à€J€J�JØ€K€K�KØ)Ð)Ð)Ñ)Ø€K€K�KØ.Ð.Ð.Ñ.Ø&Ð&Ð&Ñ&ØÐÐÑà(Ð(Ð(Ñ(Ø€O€O�OØ€HÐÐÐÑØ€CÐÐÐÑØ€IÐÐÐÑðPð Pð Pð Pð Pð Pr3   rq   c                  ó<   — e Zd ZU ded<   ded<   ded<   dZded<   dS )	ÚInstallEmptyDirr&   rƒ   ú
'FileMode'rz   r{   Nr}   r~   )r.   r/   r0   r1   r~   r2   r3   r4   rˆ   rˆ   Ÿ   sA   € € € € € € à€I€I�IØÐÐÑØ€O€O�OØ€CÐÐÐÑÐÐr3   rˆ   c                  ó^   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dZd	ed
<   dZd	ed<   dS )ÚInstallDataBaser&   rƒ   Úinstall_pathÚinstall_path_namer‰   rz   r{   Nr}   r~   Ú	data_type)r.   r/   r0   r1   r~   rŽ   r2   r3   r4   r‹   r‹   ¦   sj   € € € € € € à€I€I�IØÐÐÑØÐÐÑØÐÐÑØ€O€O�OØ€CÐÐÐÑØ!%€IÐ%Ð%Ð%Ñ%Ð%Ð%r3   r‹   c                  óT   — e Zd ZU ded<   ded<   ded<   ded<   dZded<   d	Zd
ed<   dS )ÚInstallSymlinkDatar&   ÚtargetÚnamerŒ   r{   Nr}   r~   Fru   Úallow_missing)r.   r/   r0   r1   r~   r“   r2   r3   r4   r�   r�   °   s[   € € € € € € à€K€K�KØ€I€I�IØÐÐÑØ€O€O�OØ€CÐÐÐÑØ€MÐÐÐÑÐÐr3   r�   c                  ó$   ‡ — e Zd Z	 ddˆ fd„Zˆ xZS )ÚSubdirInstallDataNrƒ   r&   rŒ   r�   rz   r‰   ÚexcludeúT.Tuple[T.Set[str], T.Set[str]]r{   r~   r}   rŽ   c	           	     ód   •— t          ¦   «                              |||||||¦  «         || _        d S rc   )ÚsuperÚ__init__r–   )
rR   rƒ   rŒ   r�   rz   r–   r{   r~   rŽ   Ú	__class__s
            €r4   rš   zSubdirInstallData.__init__»   s7   ø€ õ 	‰Œ×Ò˜˜|Ð->ÀÈjÐZ]Ð_hÑiÔiÐiØˆŒˆˆr3   ©NN)rƒ   r&   rŒ   r&   r�   r&   rz   r‰   r–   r—   r{   r&   r~   r}   rŽ   r}   )r.   r/   r0   rš   Ú__classcell__)r›   s   @r4   r•   r•   º   sI   ø€ € € € € ð ]aðð ð ð ð ð ð ð ð ð ð r3   r•   c                  óê   — 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ed<   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ed<   ded<   ded<   ded<   d#d!„Zd"S )$ÚTestSerialisationr&   r’   Úproject_namer(   Úsuiterr   ru   Úis_cross_builtz$T.Optional[programs.ExternalProgram]Úexe_wrapperÚneeds_exe_wrapperÚis_parallelÚcmd_argsúbuild.EnvironmentVariablesÚenvÚshould_failzT.Optional[int]Útimeoutr}   ÚworkdirÚextra_pathsr?   ÚprotocolÚintÚpriorityÚcmd_is_builtÚ
cmd_is_exeÚdependsr`   ÚverboserC   ra   c                óZ   — | j         �!t          | j         t          j        ¦  «        sJ ‚d S d S rc   )r£   Ú
isinstancer   ÚExternalProgramrl   s    r4   rm   zTestSerialisation.__post_init__Ú   s5   € ØÔÐ'Ý˜dÔ.µÔ0HÑIÔIÐIÐIÐIð (Ð'ØIÐIr3   Nrn   ro   r2   r3   r4   rŸ   rŸ   Â   s   € € € € € € à€I€I�IØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ5Ð5Ð5Ñ5ØÐÐÑØÐÐÑØÐÐÑØ#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ€M€M�MØÐÐÑØÐÐÑØÐÐÑØ€L€L�LØ€M€M�MðJð Jð Jð Jð Jð Jr3   rŸ   Úbackendr&   r   úT.Optional[build.Build]ÚinterpreterúT.Optional['Interpreter']rC   úT.Optional['Backend']c                ó®  — | dk    rddl m} |                     ||¦  «        S | dk    rddl m} |                     ||¦  «        S | dk    rddl m} |                     ||¦  «        S | dk    rddl m} |                     ||¦  «        S | d	k    rdd
l m} | 	                    ||¦  «        S | dk    rddl m
} |                     ||¦  «        S | dk    rddl m} |                     ||¦  «        S | dk    rddl m}	 |	                     ||¦  «        S | dk    rddl m}
 |
                     ||¦  «        S | dk    rddl m} |                     ||¦  «        S d S )NÚninjar@   )ÚninjabackendÚvs)Úvs2010backendÚvs2010Úvs2012)Úvs2012backendÚvs2013)Úvs2013backendÚvs2015)Úvs2015backendÚvs2017)Úvs2017backendÚvs2019)Úvs2019backendÚvs2022)Úvs2022backendÚxcode)Úxcodebackend)Ú r¾   ÚNinjaBackendrÀ   Úautodetect_vs_versionÚVs2010BackendrÃ   ÚVs2012BackendrÅ   ÚVs2013BackendrÇ   ÚVs2015BackendrÉ   ÚVs2017BackendrË   ÚVs2019BackendrÍ   ÚVs2022BackendrÏ   ÚXCodeBackend)r·   r   r¹   r¾   rÀ   rÃ   rÅ   rÇ   rÉ   rË   rÍ   rÏ   s               r4   Úget_backend_from_namerÛ   ß   s  € Ø�'ÒÐØ"Ð"Ð"Ð"Ð"Ð"Ø×(Ò(¨°Ñ<Ô<Ð<Ø	�DŠˆØ#Ð#Ð#Ð#Ð#Ð#Ø×2Ò2°5¸+ÑFÔFÐFØ	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�HÒ	Ð	Ø#Ð#Ð#Ð#Ð#Ð#Ø×*Ò*¨5°+Ñ>Ô>Ð>Ø	�GÒ	Ð	Ø"Ð"Ð"Ð"Ð"Ð"Ø×(Ò(¨°Ñ<Ô<Ð<Øˆ4r3   c                  óx  — e Zd ZU ded<   dÏd„ZdÐd
„ZddœdÑd„ZdÒd„ZddœdÓd„ZddœdÓd„Z	dÔd„Z
 ed ¬!¦  «        dÒd"„¦   «         ZdÕd%„ZdÖd&„Zd×d(„Zd×d)„Z ed ¬!¦  «        dØd-„¦   «         ZdÙd2„ZdÚd5„ZedÛd8„¦   «         ZdÜdÝd<„ZdÜdÞd?„ZdßdA„ZedàdB„¦   «         ZdádC„Z	 	 	 	 	 	 	 dâdãdQ„Z	 	 	 	 	 	 	 dädådX„ZdædZ„Zdçd\„Zedèda„¦   «         Zdédc„Z edêde„¦   «         Z! ed ¬!¦  «        dëdìdh„¦   «         Z"dídj„Z#edîdl„¦   «         Z$dïdo„Z%dðdr„Z&dñds„Z'dòdv„Z(edódw„¦   «         Z)dôdy„Z*dõdöd|„Z+d÷d„Z,dád€„Z-dødƒ„Z.dùd†„Z/dùd‡„Z0dúd‹„Z1dûdŒ„Z2düd�„Z3dýd�„Z4dþd‘„Z5dÐd’„Z6dÿd•„Z7�d d˜„Z8�dd›„Z9�ddž„Z:�dd „Z;dõ�dd£„Z< ed ¬!¦  «        �dd¦„¦   «         Z= ed ¬!¦  «        �dd¨„¦   «         Z>�dd©„Z?dõ�dd«„Z@dÒd¬„ZA ed ¬!¦  «        �d	d­„¦   «         ZBddœ�d
d®„ZCddœ�d
d¯„ZD	 dõ�dd²„ZE�ddµ„ZFdÐd¶„ZG ed·¬!¦  «        �dd¸„¦   «         ZHdÐd¹„ZI�d�dd»„ZJdýd¼„ZKdýd½„ZLdýd¾„ZMdýd¿„ZNdýdÀ„ZOdýdÁ„ZPdýdÂ„ZQdýdÃ„ZR�ddÆ„ZS�ddÇ„ZT�ddÌ„ZU�ddÎ„ZVd S (  ÚBackendzT.Optional['Environment']Úenvironmentr   r¸   r¹   rº   c                ó  — |€	d | _         d S || _        || _        |j         | _         t          ¦   «         | _        d| _        | j                              ¦   «         | _        | j                              ¦   «         | _	        t          j        | j                              ¦   «         | j                              ¦   «         ¦  «        | _        t          j        | j                              ¦   «         | j                              ¦   «         ¦  «        | _        d S )Nz	<UNKNOWN>)rÞ   r   r¹   ÚsetÚprocessed_targetsr’   Úget_build_dirr<   Úget_source_dirr;   r   ÚrelpathÚbuild_to_srcÚsrc_to_build)rR   r   r¹   s      r4   rš   zBackend.__init__  sé   € ð ˆ=Ø#ˆDÔØˆFØˆŒ
Ø&ˆÔØ Ô,ˆÔÝ-0©U¬UˆÔØˆŒ	ØÔ)×7Ò7Ñ9Ô9ˆŒØÔ*×9Ò9Ñ;Ô;ˆŒÝ$Ô,¨TÔ-=×-LÒ-LÑ-NÔ-NØ-1Ô-=×-KÒ-KÑ-MÔ-MñOô OˆÔå$Ô,¨TÔ-=×-KÒ-KÑ-MÔ-MØ-1Ô-=×-LÒ-LÑ-NÔ-NñPô PˆÔÐÐr3   rC   ra   c                óJ   — t          dt          | ¦  «        j        › �¦  «        ‚)Nzgenerate is not implemented in )ÚRuntimeErrorrQ   r.   rl   s    r4   ÚgeneratezBackend.generate  s"   € ÝÐR½TÀ$¹Z¼ZÔ=PÐRÐRÑSÔSÐSr3   T©Úwarn_multi_outputÚtú.T.Union[build.Target, build.CustomTargetIndex]rë   ru   r&   c               ó4  — t          |t          j        ¦  «        r_|rBt          |                     ¦   «         ¦  «        dk    rt          j        d|j        ›d�¦  «         |                     ¦   «         d         }nmt          |t          j        ¦  «        r|                     ¦   «         d         }n8t          |t          j	        ¦  «        s
J |¦   «         ‚| 
                    ¦   «         }t          j                             |                      |¦  «        |¦  «        S )Nr@   zcustom_target z/ has more than one output! Using the first one.r   )rµ   r   ÚCustomTargetÚlenÚget_outputsr   Úwarningr’   ÚCustomTargetIndexÚBuildTargetÚget_filenamer‚   rƒ   r„   Úget_target_dir)rR   rì   rë   Úfilenames       r4   Úget_target_filenamezBackend.get_target_filename  sö   € Ý�a�Ô+Ñ,Ô,ð 		(Ø ð 5¥S¨¯ª©¬Ñ%9Ô%9¸QÒ%>Ð%>Ý”ð 4¨a¬fð 4ð 4ð 4ñ 5ô 5ð 5à—}’}‘” qÔ)ˆHˆHÝ˜�5Ô2Ñ3Ô3ð 	(Ø—}’}‘” qÔ)ˆHˆHå˜a¥Ô!2Ñ3Ô3Ð6Ð6°QÑ6Ô6Ð6Ø—~’~Ñ'Ô'ˆHÝŒw�|Š|˜D×/Ò/°Ñ2Ô2°HÑ=Ô=Ð=r3   r‘   c                ó–   — t           j                             | j                             ¦   «         |                      |¦  «        ¦  «        S rc   )r‚   rƒ   r„   rÞ   râ   rø   ©rR   r‘   s     r4   Úget_target_filename_abszBackend.get_target_filename_abs(  s6   € ÝŒw�|Š|˜DÔ,×:Ò:Ñ<Ô<¸d×>VÒ>VÐW]Ñ>^Ô>^Ñ_Ô_Ð_r3   F©Úabsolute_pathúbuild.BuildTargetr)   ú
'Compiler'rý   r(   c               óò   — |                      ¦   «         }|r| j        }n| j        }t          j                             t          j                             ||¦  «        ¦  «        }|                     |d¦  «        S )NF)Ú
get_subdirr;   rå   r‚   rƒ   Únormpathr„   Úget_include_args)rR   r‘   r)   rý   ÚcurdirÚleadÚtmppaths          r4   Úget_source_dir_include_argsz#Backend.get_source_dir_include_args+  sg   € Ø×"Ò"Ñ$Ô$ˆØð 	%Ø”?ˆDˆDàÔ$ˆDÝ”'×"Ò"¥2¤7§<¢<°°fÑ#=Ô#=Ñ>Ô>ˆØ×(Ò(¨°%Ñ8Ô8Ð8r3   c               óÚ   — |r8t           j                             | j        |                     ¦   «         ¦  «        }n|                     ¦   «         }|dk    rd}|                     |d¦  «        S )NrÐ   ú.F)r‚   rƒ   r„   r<   r  r  )rR   r‘   r)   rý   r  s        r4   Úget_build_dir_include_argsz"Backend.get_build_dir_include_args4  sd   € Øð 	Ý”W—\’\ $¤.°&×2CÒ2CÑ2EÔ2EÑFÔFˆFˆFà×&Ò&Ñ(Ô(ˆFØ˜Š|ˆ|Ø�Ø×(Ò(¨°Ñ7Ô7Ð7r3   r}   c                óÎ  — t          |t          j        ¦  «        r[|                     ¦   «         p|                     ¦   «         }t
          j                             |                      |¦  «        |¦  «        S t          |t          j	        ¦  «        rEt
          j                             |                      |¦  «        |                     ¦   «         ¦  «        S t          |t          j
        t          j        f¦  «        rq|                     ¦   «         st          d|j        › d�¦  «        ‚t
          j                             |                      |¦  «        |                     ¦   «         ¦  «        S t          |t          j        ¦  «        rN|j        rEt
          j                             |                      |¦  «        |                     ¦   «         ¦  «        S d S t#          d|›d�¦  «        ‚)Nz%Tried to link against custom target "z", which is not linkable.zBUG: Tried to link to z which is not linkable)rµ   r   ÚSharedLibraryÚget_import_filenamerõ   r‚   rƒ   r„   rö   ÚStaticLibraryrï   ró   Úis_linkable_targetr   r’   Ú
ExecutableÚimport_filenameÚAssertionError)rR   r‘   Úlink_libs      r4   Úget_target_filename_for_linkingz'Backend.get_target_filename_for_linking=  s‘  € õ
 �f�eÔ1Ñ2Ô2ð 	Ø×1Ò1Ñ3Ô3ÐL°v×7JÒ7JÑ7LÔ7LˆHÝ”7—<’< × 3Ò 3°FÑ ;Ô ;¸XÑFÔFÐFÝ˜¥Ô 3Ñ4Ô4ð 
	Ý”7—<’< × 3Ò 3°FÑ ;Ô ;¸V×=PÒ=PÑ=RÔ=RÑSÔSÐSÝ˜¥Ô!3µUÔ5LÐ MÑNÔNð 	Ø×,Ò,Ñ.Ô.ð uÝ$Ð%sÈVÌ[Ð%sÐ%sÐ%sÑtÔtÐtÝ”7—<’< × 3Ò 3°FÑ ;Ô ;¸V×=PÒ=PÑ=RÔ=RÑSÔSÐSÝ˜¥Ô 0Ñ1Ô1ð 	ØÔ%ð Ý”w—|’| D×$7Ò$7¸Ñ$?Ô$?À×A[ÒA[ÑA]ÔA]Ñ^Ô^Ð^à�tÝÐV°fÐVÐVÐVÑWÔWÐWr3   N)Úmaxsizec                óÎ   — t          |t          j        ¦  «        rd}nG| j        j                             t          d¦  «        ¦  «        dk    r|                     ¦   «         }nd}|S )NrÐ   ÚlayoutÚmirrorú	meson-out)rµ   r   Ú	RunTargetrÞ   ÚcoredataÚ
get_optionr   r  )rR   r‘   Údirnames      r4   rö   zBackend.get_target_dirR  sa   € å�f�eœoÑ.Ô.ð 	"àˆGˆGØÔÔ&×1Ò1µ)¸HÑ2EÔ2EÑFÔFÈ(ÒRÐRØ×'Ò'Ñ)Ô)ˆGˆGà!ˆGØˆr3   úbuild.TargetÚoc                ój  — t           j                             | j                             ¦   «         |                      |¦  «        ¦  «        }t           j                             | j                             ¦   «         |                      |¦  «        ¦  «        }t           j                             ||¦  «        S )z7Get a target dir relative to another target's directory)r‚   rƒ   r„   rÞ   râ   rö   rä   )rR   rì   r  Ú
target_dirÚ
othert_dirs        r4   Úget_target_dir_relative_toz"Backend.get_target_dir_relative_to]  s~   € å”W—\’\ $Ô"2×"@Ò"@Ñ"BÔ"BÀD×DWÒDWÐXYÑDZÔDZÑ[Ô[ˆ
Ý”W—\’\ $Ô"2×"@Ò"@Ñ"BÔ"BÀD×DWÒDWÐXYÑDZÔDZÑ[Ô[ˆ
ÝŒw�Š˜z¨:Ñ6Ô6Ð6r3   c                óˆ   — |                       |¦  «        }|r%t          j                             | j        |¦  «        S | j        S rc   )rö   r‚   rƒ   r„   rå   )rR   r‘   r!  s      r4   Úget_target_source_dirzBackend.get_target_source_dirc  s?   € à×(Ò(¨Ñ0Ô0ˆ
Øð 	?Ý”7—<’< Ô 1°:Ñ>Ô>Ð>ØÔ Ð r3   úGT.Union[build.BuildTarget, build.CustomTarget, build.CustomTargetIndex]c                óp   — t           j                             |                      |d¬¦  «        dz   ¦  «        S )NFrê   z.p)r‚   rƒ   r„   rø   rú   s     r4   Úget_target_private_dirzBackend.get_target_private_dirj  s/   € ÝŒw�|Š|˜D×4Ò4°VÈuÐ4ÑUÔUÐX\Ñ\Ñ]Ô]Ð]r3   c                ó–   — t           j                             | j                             ¦   «         |                      |¦  «        ¦  «        S rc   )r‚   rƒ   r„   rÞ   râ   r(  rú   s     r4   Úget_target_private_dir_absz"Backend.get_target_private_dir_absm  s6   € ÝŒw�|Š|˜DÔ,×:Ò:Ñ<Ô<¸d×>YÒ>YÐZ`Ñ>aÔ>aÑbÔbÐbr3   ÚgensrcúIT.Union[build.CustomTarget, build.CustomTargetIndex, build.GeneratedList]Úsrcc                ó  — t          |t          j        t          j        f¦  «        r3t          j                             |                      |¦  «        |¦  «        S t          j                             |                      |¦  «        |¦  «        S )zÔ
        Takes a BuildTarget, a generator source (CustomTarget or GeneratedList),
        and a generated source filename.
        Returns the full path of the generated source relative to the build root
        )	rµ   r   rï   ró   r‚   rƒ   r„   rö   r(  )rR   r‘   r+  r-  s       r4   Úget_target_generated_dirz Backend.get_target_generated_dirp  sl   € õ �f�uÔ1µ5Ô3JÐKÑLÔLð 	BÝ”7—<’< × 3Ò 3°FÑ ;Ô ;¸SÑAÔAÐAõ Œw�|Š|˜D×7Ò7¸Ñ?Ô?ÀÑEÔEÐEr3   ÚsuffixÚnumberr®   úmesonlib.Filec                ó†   — |j         › d|› d|› �}t          j                             |                      |¦  «        |¦  «        S )Nz-unityr	  )r’   r   r   Úfrom_built_filer(  )rR   r‘   r0  r1  Úosrcs        r4   Úget_unity_source_filezBackend.get_unity_source_file�  sH   € ð ”+Ð6Ð6 VÐ6Ð6¨fÐ6Ð6ˆÝŒ}×,Ò,¨T×-HÒ-HÈÑ-PÔ-PÐRVÑWÔWÐWr3   Ú	unity_srcúT.List[mesonlib.File]c                ól  ‡ ‡‡‡— g Šg Št          ‰j                             ¦   «         |¦  «        }‰                     t	          d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚dˆˆˆ ˆfd	„}|                     ¦   «         D ]ˆ\  }}|d
z   }d}	d }
|D ]a}||k    r;|
r|
                     ¦   «           || 	                    ¦   «         |	¦  «        }
|	d
z  }	d}|
 
                    d|› d�¦  «         |d
z  }Œb|
r|
                     ¦   «          Œ‰‰D ]}t          j        ||dz   ¦  «         Œ‰S )NÚ
unity_sizeúfor mypyr0  r&   Úunity_file_numberr®   rC   úT.TextIOc                óà  •— ‰                      ‰	| |¦  «        }|                     ‰j                             ¦   «         ‰j                             ¦   «         ¦  «        }|dz   }‰                     |¦  «         t          j                             |¦  «        }t          j         	                    |¦  «        st          j
        |¦  «         ‰                     |¦  «         t          |dd¬¦  «        S )Nú.tmpÚwúutf-8©Úencoding)r6  rý   rÞ   rã   râ   Úappendr‚   rƒ   r  ÚexistsÚmakedirsÚopen)
r0  r<  r7  Ú
outfileabsÚoutfileabs_tmpÚoutfileabs_tmp_dirÚ	abs_filesÚresultrR   r‘   s
         €€€€r4   Úinit_language_filez8Backend.generate_unity_files.<locals>.init_language_file�  sÖ   ø€ Ø×2Ò2°6¸6ÐCTÑUÔUˆIØ"×0Ò0°Ô1A×1PÒ1PÑ1RÔ1RØ15Ô1A×1OÒ1OÑ1QÔ1QñSô SˆJà'¨&Ñ0ˆNØ×Ò˜ZÑ(Ô(Ð(Ý!#¤§¢°Ñ!@Ô!@ÐÝ”7—>’>Ð"4Ñ5Ô5ð 0Ý”Ð.Ñ/Ô/Ð/Ø�MŠM˜)Ñ$Ô$Ð$Ý˜¨°gÐ>Ñ>Ô>Ð>r3   r@   r   z	#include<z>
r?  )r0  r&   r<  r®   rC   r=  )r   Ú	compilersÚvaluesr  r   rµ   r®   ÚitemsÚcloseÚget_default_suffixÚwriter   Úreplace_if_different)rR   r‘   r7  Úcompsrcsr:  rM  ÚcompÚsrcsÚfiles_in_currentr<  Úofiler-  ÚxrK  rL  s   ``           @@r4   Úgenerate_unity_fileszBackend.generate_unity_filesˆ  s™  øøøø€ Ø!#ˆ	Ø(*ˆÝ)¨&Ô*:×*AÒ*AÑ*CÔ*CÀYÑOÔOˆØ×&Ò&¥y°Ñ'>Ô'>Ñ?Ô?ˆ
Ý˜*¥cÑ*Ô*Ð6Ð6¨JÑ6Ô6Ð6ð
	?ð 
	?ð 
	?ð 
	?ð 
	?ð 
	?ð 
	?ð 
	?ð 
	?ð #Ÿ.š.Ñ*Ô*ð 	ð 	‰JˆD�$Ø)¨A™~ÐØ !Ðð ˆEØð &ð &�Ø# zÒ1Ð1Øð &ØŸš™œ˜Ø.Ð.¨t×/FÒ/FÑ/HÔ/HÐJ[Ñ\Ô\�EØ%¨Ñ*Ð%Ø'(Ð$Ø—’Ð0¨Ð0Ð0Ð0Ñ1Ô1Ð1Ø  AÑ%Ð Ð Øð Ø—’‘”�øàð 	9ð 	9ˆAÝÔ)¨!¨Q°©ZÑ8Ô8Ð8Ð8Øˆr3   ÚtodirÚfromdirc                óº   — t           j                             t           j                             d| ¦  «        t           j                             d|¦  «        ¦  «        S )NÚdummyprefixdir)r‚   rƒ   rä   r„   )r\  r]  s     r4   rä   zBackend.relpath²  sD   € åŒw�Š�rœwŸ|š|Ð,<¸eÑDÔDÝ!œwŸ|š|Ð,<¸gÑFÔFñHô Hð 	Hr3   rÐ   Úproj_dir_to_build_rootú4T.Tuple[T.List[str], T.List[build.BuildTargetTypes]]c                ó¬   — |                       ||                     ¦   «         |¦  «        \  }}t          t                               |¦  «        ¦  «        |fS rc   )Ú_flatten_object_listÚget_objectsÚlistÚdictÚfromkeys)rR   r‘   r`  Úobj_listÚdepss        r4   Úflatten_object_listzBackend.flatten_object_list·  sI   € à×2Ò2°6¸6×;MÒ;MÑ;OÔ;OÐQgÑhÔh‰ˆ�$Ý•D—M’M (Ñ+Ô+Ñ,Ô,¨dÐ2Ð2r3   Úobjectsúbuild.ExtractedObjectsc                ó�   — |                       |j        |g|¦  «        \  }}t          t                               |¦  «        ¦  «        S rc   )rc  r‘   re  rf  rg  )rR   rk  r`  rh  Ú_s        r4   Údetermine_ext_objszBackend.determine_ext_objs¼  s<   € Ø×/Ò/°´ÀÀ	ÐKaÑbÔb‰ˆ�!Ý•D—M’M (Ñ+Ô+Ñ,Ô,Ð,r3   ú8T.Sequence[T.Union[str, 'File', build.ExtractedObjects]]c                óæ  — g }g }|D �]æ}t          |t          ¦  «        rOt          j                             || j        |                     ¦   «         |¦  «        }|                     |¦  «         Œgt          |t          j	        ¦  «        r¤|j
        rNt          j                             ||                     | j        ¦  «        ¦  «        }|                     |¦  «         ŒÖt          j                             || j        ¦  «        }|                     |                     |¦  «        ¦  «         �Œ%t          |t          j        ¦  «        rš|j        rN|                      |j        |j        |¦  «        \  }}	|                     |¦  «         |                     |	¦  «         |                     |                      ||¦  «        ¦  «         |                     |j        ¦  «         �ŒÙt)          d¦  «        ‚||fS )Nz!Unknown data type in object list.)rµ   r&   r‚   rƒ   r„   rå   r  rD  r   r   Úis_builtÚrel_to_builddirr   ÚExtractedObjectsÚ	recursiverc  r‘   ÚobjlistÚextendÚ_determine_ext_objsr   )
rR   r‘   rk  r`  rh  ri  Úobjr  Úobjsr5   s
             r4   rc  zBackend._flatten_object_listÀ  sÎ  € ð !#ˆØ/1ˆØð 	Jñ 	JˆCÝ˜#�sÑ#Ô#ð JÝ”G—L’LÐ!7Ø!%Ô!2°F×4EÒ4EÑ4GÔ4GÈñNô N�à—’ Ñ"Ô"Ð"Ð"Ý˜C¥¤Ñ/Ô/ð JØ”<ð <ÝœŸšÐ%;Ø%(×%8Ò%8¸Ô9JÑ%KÔ%KñMô M�Aà—O’O AÑ&Ô&Ð&Ð&åœŸšÐ%;Ø%)Ô%6ñ8ô 8�Aà—O’O C×$7Ò$7¸Ñ$:Ô$:Ñ;Ô;Ð;Ñ;Ý˜C¥Ô!7Ñ8Ô8ð JØ”=ð #Ø"×7Ò7¸¼
ÀCÄKÐQgÑhÔh‘G�D˜!Ø—O’O DÑ)Ô)Ð)Ø—K’K ‘N”N�NØ—’ × 8Ò 8¸Ð>TÑ UÔ UÑVÔVÐVØ—’˜CœJÑ'Ô'Ð'Ñ'å$Ð%HÑIÔIÐIØ˜ˆ~Ðr3   c                óJ   — | j         D ]}|                     d¦  «        r dS ŒdS )NÚswiftTF)r+   Úendswith)r‘   Úss     r4   Úis_swift_targetzBackend.is_swift_targetÞ  s8   € à”ð 	ð 	ˆAØ�zŠz˜'Ñ"Ô"ð Ø�t�tðàˆur3   c                ón   — g }|j         D ]*}|                     |                      |¦  «        ¦  «         Œ+|S rc   )Úlink_targetsrD  r*  )rR   r‘   rL  Úls       r4   Údetermine_swift_dep_dirsz Backend.determine_swift_dep_dirså  sA   € Ø ˆØÔ$ð 	>ð 	>ˆAØ�MŠM˜$×9Ò9¸!Ñ<Ô<Ñ=Ô=Ð=Ð=Øˆr3   Úcmdú_T.Sequence[T.Union[programs.ExternalProgram, build.BuildTarget, build.CustomTarget, File, str]]r«   Úextra_bdepsú%T.Optional[T.List[build.BuildTarget]]ÚcaptureúT.Optional[bool]Úfeedr¨   ú&T.Optional[build.EnvironmentVariables]r~   r³   ú'ExecutableSerialisation'c	                ó@  — |^}	}
t          |	t          j        ¦  «        r|	                     ¦   «         }|	j        }nËt          |	t
          j        ¦  «        r|                      |	¦  «        g}|	j        }n“t          |	t
          j        ¦  «        r#|                      |	¦  «        g}t          j
        }nVt          |	t          j        ¦  «        r-|	                     | j        j        ¦  «        g}t          j
        }n|	g}t          j
        }g }|
D �]}t          |t          j        ¦  «        rA|                     ¦   «         }t          |t"          ¦  «        sJ ‚|                     |¦  «         Œ^t          |t
          j        t
          j        f¦  «        r)|                     |                      |¦  «        ¦  «         Œ­t          |t          j        ¦  «        r3|                     |                     | j        j        ¦  «        ¦  «         Œú|                     |¦  «         �Œ| j        j        |         }|                     ¦   «         s|                     ¦   «         r|                      |	|pg ¦  «        }ng }| j        j                             |¦  «         }|rZ| j                             ¦   «         rA| j                             ¦   «         }|r|                     ¦   «         sd}t7          |¦  «        ‚n|d                              d¦  «        rddg|z   }nZ|d                              d¦  «        r?t          j        ¦   «         s,t          j        ¦   «         st          j        ¦   «         sdg|z   }d }|p| j                             ¦   «         }t?          ||z   ||||||||¦	  «	        S )NzxAn exe_wrapper is needed but was not found. Please define one in cross file and check the command and/or add it to PATH.r   z.jarÚjavaz-jarz.exeÚmono) rµ   r   r¶   Úget_commandÚfor_machiner   rô   rû   rï   r   ÚBUILDr   r   rs  rÞ   r;   Úget_pathr&   rD  ÚmachinesÚ
is_windowsÚ	is_cygwinÚdetermine_windows_extra_pathsÚmatches_build_machineÚneed_exe_wrapperÚget_exe_wrapperÚfoundr   r}  Úis_wslrâ   r   )rR   r„  r«   r†  rˆ  rŠ  r¨   r~   r³   ÚexeÚraw_cmd_argsÚexe_cmdÚexe_for_machiner¦   ÚcÚpÚmachiner¬   r¢   r£   Úmsgs                        r4   Úget_executable_serialisationz$Backend.get_executable_serialisationë  s�  € ð !ÐˆˆlÝ�c�8Ô3Ñ4Ô4ð 	2Ø—o’oÑ'Ô'ˆGØ!œoˆOˆOÝ˜�UÔ.Ñ/Ô/ð 	2Ø×3Ò3°CÑ8Ô8Ð9ˆGØ!œoˆOˆOÝ˜�UÔ/Ñ0Ô0ð 	2ð ×3Ò3°CÑ8Ô8Ð9ˆGÝ+Ô1ˆOˆOÝ˜�Xœ]Ñ+Ô+ð 	2Ø×*Ò*¨4Ô+;Ô+FÑGÔGÐHˆGÝ+Ô1ˆOˆOà�eˆGÝ+Ô1ˆOà "ˆØð 
	#ñ 
	#ˆAÝ˜!�XÔ5Ñ6Ô6ð 	#Ø—J’J‘L”L�Ý! !¥SÑ)Ô)Ð)Ð)Ð)Ø—’ Ñ"Ô"Ð"Ð"Ý˜A¥Ô 1µ5Ô3EÐFÑGÔGð #Ø—’ × <Ò <¸QÑ ?Ô ?Ñ@Ô@Ð@Ð@Ý˜A�xœ}Ñ-Ô-ð #Ø—’ × 1Ò 1°$Ô2BÔ2MÑ NÔ NÑOÔOÐOÐOà—’ Ñ"Ô"Ð"Ñ"àÔ"Ô+¨OÔ<ˆØ×ÒÑÔð 	 7×#4Ò#4Ñ#6Ô#6ð 	Ø×<Ò<¸SÀ+ÐBSÐQSÑTÔTˆKˆKàˆKà!Ô-Ô6×LÒLÈ_Ñ]Ô]Ð]ˆØð 	˜dÔ.×?Ò?ÑAÔAð 	ØÔ*×:Ò:Ñ<Ô<ˆKØð * k×&7Ò&7Ñ&9Ô&9ð *ðS�å$ SÑ)Ô)Ð)ð*ð
 �qŒz×"Ò" 6Ñ*Ô*ð -Ø! 6Ð*¨WÑ4��Ø˜”×$Ò$ VÑ,Ô,ð -µhÔ6IÑ6KÔ6Kð -ÍxÔOaÑOcÔOcð -ÕgoÔgvÑgxÔgxð -Ø!˜( WÑ,�ØˆKàÐ=˜TÔ-×;Ò;Ñ=Ô=ˆÝ& w°Ñ'9¸3Ø'2°GØ'2°G¸TÀ3ÈñQô Qð 	Qr3   r�  ú\T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, programs.ExternalProgram]r¦   úhT.Sequence[T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, programs.ExternalProgram]]Úforce_serializeúTT.Tuple[T.Sequence[T.Union[str, File, build.Target, programs.ExternalProgram]], str]c
           	     ó(	  — g }
|
                      |¦  «         |
                     |¦  «         |                      |
||||||	¬¦  «        }g }|j        r|                      d¦  «         |j        r|                      d¦  «         |r|                      d¦  «         t          d„ |j        D ¦   «         ¦  «        r|                      d¦  «         |r|j        r|                      d¦  «         | }|pt          |¦  «        }|r|                      d¦  «         |r|                      d	¦  «         |r‡|dgk    r€t          j
        d
¦  «        rlg }|                     i ¦  «                             ¦   «         D ]\  }}|                      |› d|› �¦  «         Œ d
g|z   |j        z   d                     |¦  «        fS |s}|s|s	|j        dfS g }|r|dt          |¦  «        gz  }|r|dt          |¦  «        gz  }| j                             ¦   «         ddgz   |z   dgz   |j        z   d                     |¦  «        fS t#          |t$          j        t(          j        t(          j        f¦  «        r|j        }n^t#          |t0          j        ¦  «        r%t4          j                             |j        ¦  «        }nt4          j                             |¦  «        }t=          j        ¦   «         }|j         r|j          !                    |¦  «         | "                    tG          t          |j        ¦  «        d¬¦  «        ¦  «         | "                    tG          t          |j$        ¦  «        d¬¦  «        ¦  «         | "                    tG          t          |¦  «        d¬¦  «        ¦  «         | "                    tG          t          |¦  «        d¬¦  «        ¦  «         | %                    ¦   «         }d|› d|› d�}t4          j                             | j         &                    ¦   «         |¦  «        }tO          |d¦  «        5 }tQ          j)        ||¦  «         ddd¦  «         n# 1 swxY w Y   | j                             ¦   «         ddd|gz   d                     |¦  «        fS )zY
        Serialize an executable for running with a generator or a custom target
        )r³   zto set PATHzto use exe_wrapperzto set workdirc              3  ó   K  — | ]}d |v V — Œ	dS )ú
Nr2   )Ú.0r¡  s     r4   ú	<genexpr>z/Backend.as_meson_exe_cmdline.<locals>.<genexpr>L  s&   è è € Ð.Ð.˜Qˆt�qˆyÐ.Ð.Ð.Ð.Ð.Ð.r3   z!because command contains newlinesz
to set envzto capture outputzto feed inputr¨   ú=z, rÐ   z	--capturez--feedz
--internalr�  z--rA  rB  Ú
meson_exe_rn  z.datÚwbNz
--unpickle)*rD  rw  r¥  r¬   r£   Úanyr¦   Úvarnamesru   ÚshutilÚwhichÚget_envrP  r„   r&   rÞ   Úget_build_commandrµ   r   r¶   r   rô   rï   r’   r   r   r‚   rƒ   r…   rr   ÚhashlibÚsha1r¨   ÚhashÚupdateÚbytesr«   Ú	hexdigestÚget_scratch_dirrG  ÚpickleÚdump)rR   r�  r¦   r«   r†  rˆ  rŠ  r¨  r¨   r³   r„  ÚesÚreasonsÚcan_use_envÚenvlistÚkÚvÚargsr…   ÚhasherÚdigestÚscratch_fileÚexe_dataÚfs                           r4   Úas_meson_exe_cmdlinezBackend.as_meson_exe_cmdline2  sÐ  € ð uwˆØ�
Š
�3‰ŒˆØ�
Š
�8ÑÔÐØ×.Ò.¨s°G¸[È'ÐSWÐY\ÐfmÐ.ÑnÔnˆØ!ˆØŒ>ð 	*Ø�NŠN˜=Ñ)Ô)Ð)àŒ>ð 	1Ø�NŠNÐ/Ñ0Ô0Ð0àð 	-Ø�NŠNÐ+Ñ,Ô,Ð,åÐ.Ð. "¤+Ð.Ñ.Ô.Ñ.Ô.ð 	@Ø�NŠNÐ>Ñ?Ô?Ð?àð 	)�3”<ð 	)Ø�NŠN˜<Ñ(Ô(Ð(ð *Ð)ˆØ)Ð:­T°'©]¬]ˆàð 	0Ø�NŠNÐ.Ñ/Ô/Ð/Øð 	,Ø�NŠN˜?Ñ+Ô+Ð+àð 	G˜7 | nÒ4Ð4½¼ÀeÑ9LÔ9LÐ4ØˆGØŸš B™œ×-Ò-Ñ/Ô/ð +ð +‘��1Ø—’ !˜z˜z a˜z˜zÑ*Ô*Ð*Ð*Ø�7˜WÑ$ r¤{Ñ2°D·I²I¸gÑ4FÔ4FÐFÐFàð 	Øð ' 4ð 'Ø”{ B�Ð&Ø "ˆDØð 4Ø˜¥c¨'¡l¤lÐ3Ñ3�Øð .Ø˜¥3 t¡9¤9Ð-Ñ-�ð Ô ×2Ò2Ñ4Ô4¸ÀeÐ7LÑLÈtÑSÐW[ÐV\Ñ\Ð_aÔ_jÑjØ—	’	˜'Ñ"Ô"ðð õ
 �c�HÔ4Ý!Ô-­uÔ/AðCñ Dô Dð 	-à”xˆHˆHÝ˜�Xœ]Ñ+Ô+ð 	-Ý”w×'Ò'¨¬	Ñ2Ô2ˆHˆHå”w×'Ò'¨Ñ,Ô,ˆHõ ”‘”ˆØŒ6ð 	 ØŒF�KŠK˜ÑÔÐØ�Š•e�C ¤Ñ,Ô,°wÐ?Ñ?Ô?Ñ@Ô@Ð@Ø�Š•e�C ¤
™OœO°gÐ>Ñ>Ô>Ñ?Ô?Ð?Ø�Š•e�C ™LœL°7Ð;Ñ;Ô;Ñ<Ô<Ð<Ø�Š•e�C ™IœI°Ð8Ñ8Ô8Ñ9Ô9Ð9Ø×!Ò!Ñ#Ô#ˆØ; HÐ;Ð;¨vÐ;Ð;Ð;ˆÝ”7—<’< Ô 0× @Ò @Ñ BÔ BÀLÑQÔQˆÝ�(˜DÑ!Ô!ð 	 QÝŒK˜˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àÔ ×2Ò2Ñ4Ô4¸ÀeÈ\Ð[cÐ7dÑdØ—	’	˜'Ñ"Ô"ð$ð 	$s   Ð2QÑQÑQúT.Tuple[str, str]c                óÚ  — t           j                             | j                             ¦   «         d¦  «        }t          |d¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   t           j                             | j                             ¦   «         d¦  «        }t          |d¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   ||fS )Nzmeson_test_setup.datr±  zmeson_benchmark_setup.dat)r‚   rƒ   r„   rÞ   r¾  rG  Úwrite_test_fileÚwrite_benchmark_file)rR   Ú	test_dataÚdatafileÚbenchmark_datas       r4   Úserialize_testszBackend.serialize_tests“  sC  € Ý”G—L’L Ô!1×!AÒ!AÑ!CÔ!CÐE[Ñ\Ô\ˆ	Ý�)˜TÑ"Ô"ð 	+ hØ× Ò  Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åœŸš dÔ&6×&FÒ&FÑ&HÔ&HÐJeÑfÔfˆÝ�. $Ñ'Ô'ð 	0¨8Ø×%Ò% hÑ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0à˜.Ð(Ð(s$   ÁA*Á*A.Á1A.Â<CÃC"Ã%C"ú9T.Tuple[T.Union['Compiler', 'StaticLinker'], T.List[str]]c                óž   — t          |t          j        ¦  «        r| j        j        |j                 g fS |                     ¦   «         \  }}||fS )z•
        If we're building a static library, there is only one static linker.
        Otherwise, we query the target for the dynamic linker.
        )rµ   r   r  Ústatic_linkerr‘  Ú$get_clink_dynamic_linker_and_stdlibs)rR   r‘   r‚  Ústdlib_argss       r4   Ú determine_linker_and_stdlib_argsz(Backend.determine_linker_and_stdlib_argsœ  sQ   € õ
 �f�eÔ1Ñ2Ô2ð 	DØ”:Ô+¨FÔ,>Ô?ÀÐCÐCØ×DÒDÑFÔF‰ˆˆ;Ø�+ˆ~Ðr3   r\   rN  úT.Mapping[str, 'Compiler']ú'Environment'c                ó¦   — t           j                             | ¦  «        } |                     ¦   «         D ]}| |                     |¦  «        v r dS ŒdS )NTF)r‚   rƒ   r  rO  Úget_library_dirs)r\   rN  r¨   Úccs       r4   Ú_libdir_is_systemzBackend._libdir_is_system¦  s\   € å”×!Ò! &Ñ)Ô)ˆØ×"Ò"Ñ$Ô$ð 	ð 	ˆBØ˜×,Ò,¨SÑ1Ô1Ð1Ð1Ø�t�tð 2àˆur3   ú
T.Set[str]c                ó0  — g }t           D ]x}	 | j        j                             |j        |¦  «        }t          |t          ¦  «        r|                     |¦  «         n|                     |¦  «         Œi# t          $ r Y Œuw xY w|  
                    |¦  «        S rc   )r   rÞ   r  Úget_external_link_argsr‘  rµ   r&   rD  rw  Ú	ExceptionÚget_rpath_dirs_from_link_args)rR   r‘   rÇ  ÚlangÚes        r4   Úget_external_rpath_dirszBackend.get_external_rpath_dirs®  s¡   € ØˆÝ+ð 	ð 	ˆDðØÔ$Ô-×DÒDÀVÔEWÐY]Ñ^Ô^�Ý˜a¥Ñ%Ô%ð #Ø—K’K ‘N”N�N�Nà—K’K ‘N”N�NøøÝð ð ð Ø�ðøøøà×1Ò1°$Ñ7Ô7Ð7s   �A%A3Á3
B Á?B rÇ  c                ó2  — t          ¦   «         }t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }| D �]H}|                     |¦  «        }|r@|                     d¦  «                             d¦  «        D ]}|                     |¦  «         Œ|                     |¦  «        }|ra|                     d¦  «                             d¦  «        D ]8}t          |¦  «                             ¦   «         r|                     |¦  «         Œ9|                     |¦  «        }	|	r_|	                     d¦  «                             d¦  «        D ]6}t          |¦  «                             ¦   «         rt          d|› d�¦  «        ‚Œ7�ŒJ|S )Nz-Wl,-rpath[=,]([^,]+)z-Wl,-R[,]?([^,]+)z-Wl,--just-symbols[=,]([^,]+)r@   ú:z Invalid arg for --just-symbols, z is a directory.)
rà   ÚreÚcompileÚmatchÚgroupÚsplitÚaddr	   Úis_dirr   )
rÇ  ÚdirsÚrpath_regexÚrunpath_regexÚsymbols_regexÚargÚrpath_matchÚdirÚrunpath_matchÚsymbols_matchs
             r4   ræ  z%Backend.get_rpath_dirs_from_link_args»  s¤  € å™5œ5ˆõ ”jÐ!9Ñ:Ô:ˆõ œ
Ð#7Ñ8Ô8ˆõ œ
Ð#CÑDÔDˆØð 	gñ 	gˆCØ%×+Ò+¨CÑ0Ô0ˆKØð "Ø&×,Ò,¨QÑ/Ô/×5Ò5°cÑ:Ô:ð "ð "�CØ—H’H˜S‘M”M�M�MØ)×/Ò/°Ñ4Ô4ˆMØð &Ø(×.Ò.¨qÑ1Ô1×7Ò7¸Ñ<Ô<ð &ð &�Cå˜C‘y”y×'Ò'Ñ)Ô)ð &ØŸš ™œ˜øØ)×/Ò/°Ñ4Ô4ˆMØð gØ(×.Ò.¨qÑ1Ô1×7Ò7¸Ñ<Ô<ð gð g�Cå˜C‘y”y×'Ò'Ñ)Ô)ð gÝ,Ð-eÐPSÐ-eÐ-eÐ-eÑfÔfÐfðgùàˆr3   Úexclude_systemú'ImmutableListProtocol[str]'c                óÌ  — t          ¦   «         }|j        D �]ß}t          |t          j        t          j        f¦  «        sŒ*|j        D �]}t          j         	                    |¦  «        sŒ#t          j         
                    |¦  «        }|r"|                      ||j        | j        ¦  «        rŒf||                      |¦  «        v rŒ~t          j                             |¦  «        d         dvrŒ¦|                     | j                             ¦   «         ¦  «        r˜|t%          | j                             ¦   «         ¦  «        dz   d …         }t          j         	                    |¦  «        rJ d|› d�¦   «         ‚|                     t          j                             | j        |¦  «        ¦  «         �Œj|                     |¦  «         �Œ�|                     |                      |j        ¦  «        ¦  «         �Œát1          |j        |j        ¦  «        D ]E}t          |t6          j        ¦  «        r)|                     |                      ||¦  «        ¦  «         ŒFt?          |¦  «        S )Nr@   )ú.dllz.libú.soz.dylibzrel_to_src: z is absolute) r   Úexternal_depsrµ   r   ÚExternalLibraryÚPkgConfigDependencyÚ	link_argsr‚   rƒ   Úisabsr  rá  rN  rÞ   ré  ÚsplitextÚ
startswithrã   rð   rñ  r„   rå   Údifference_updateræ  r   r�  Úlink_whole_targetsr   rô   r»  Ú/rpaths_for_non_system_absolute_shared_librariesre  )	rR   r‘   rü  ÚpathsÚdepÚlibpathr\   Ú
rel_to_srcÚis	            r4   r
  z7Backend.rpaths_for_non_system_absolute_shared_librariesÝ  s5  € å!+¡¤ˆØÔ'ð 	Wñ 	WˆCÝ˜c¥LÔ$@Å,ÔBbÐ#cÑdÔdð ØØœ=ð &ñ &�å”w—}’} WÑ-Ô-ð ØÝœŸš¨Ñ1Ô1�Ø!ð  d×&<Ò&<¸VÀVÔEUÐW[ÔWgÑ&hÔ&hð àà˜T×9Ò9¸&ÑAÔAÐAÐAØõ ”7×#Ò# GÑ,Ô,¨QÔ/Ð7XÐXÐXØØ×$Ò$ TÔ%5×%DÒ%DÑ%FÔ%FÑGÔGð &Ø!'­¨DÔ,<×,KÒ,KÑ,MÔ,MÑ(NÔ(NÐQRÑ(RÐ(SÐ(SÔ!T�JÝ!œwŸ}š}¨ZÑ8Ô8ÐaÐaÐ:aÈÐ:aÐ:aÐ:aÑaÔaÐaØ—I’I�bœgŸlšl¨4Ô+<¸jÑIÔIÑJÔJÐJÑJà—I’I˜fÑ%Ô%Ð%Ñ%à×#Ò# D×$FÒ$FÀsÄ}Ñ$UÔ$UÑVÔVÐVÑVÝ�vÔ*¨FÔ,EÑFÔFð 	fð 	fˆAÝ˜!�UÔ.Ñ/Ô/ð fØ—’˜T×QÒQÐRSÐUcÑdÔdÑeÔeÐeøÝ�E‰{Œ{Ðr3   úT.Tuple[str, ...]c                óÖ  — | j         j                             t          d¦  «        ¦  «        dk    r"t	          |                     ¦   «         ¦  «        }n#t	          ¦   «         }|                     d¦  «         t          |t          j	        ¦  «        rL| 
                    |                      |¦  «        ¦  «         |j         
                    d„ |D ¦   «         ¦  «         t          |¦  «        S )Nr  r  r  c                ó8   — g | ]}|                      d ¦  «        ‘ŒS )rA  )Úencode)r­  r5   s     r4   ú
<listcomp>z0Backend.determine_rpath_dirs.<locals>.<listcomp>  s$   € Ð/RÐ/RÐ/RÀa°·²¸Ñ0AÔ0AÐ/RÐ/RÐ/Rr3   )rÞ   r  r  r   r   Úget_link_dep_subdirsrñ  rµ   r   rô   r»  r
  rx   Útuple)rR   r‘   rL  s      r4   Údetermine_rpath_dirszBackend.determine_rpath_dirs   sÉ   € ð ÔÔ$×/Ò/µ	¸(Ñ0CÔ0CÑDÔDÈÒPÐPå × ;Ò ;Ñ =Ô =Ñ>Ô>ˆFˆFå‘\”\ˆFØ�JŠJ�{Ñ#Ô#Ð#Ý�f�eÔ/Ñ0Ô0ð 	TØ�MŠM˜$×NÒNÈvÑVÔVÑWÔWÐWØÔ'×.Ò.Ð/RÐ/RÈ6Ð/RÑ/RÔ/RÑSÔSÐSÝ�V‰}Œ}Ðr3   rr   c                ó�  — t          | ¦  «        j        }d}t          |¦  «        dk    r~d                     |dd …         ¦  «        }t          | ¦  «        t          |¦  «        dz   k    r>t	          j        |                      d¦  «        ¦  «                             ¦   «         dz   }|} dD ]}|                      |d¦  «        } Œ|| z   S )	NrÐ   é   ú/éûÿÿÿé)   rA  rn  )r  ú\rë  )	r	   Úpartsrð   r„   r¸  r¹  r  r½  Úreplace)rr   r  ÚhashedÚtempÚchs        r4   Úcanonicalize_filenamezBackend.canonicalize_filename  s·   € å�U‘”Ô!ˆØˆÝˆu‰:Œ:˜Š>ˆ>Ø—8’8˜E " # #œJÑ'Ô'ˆDå�5‰zŒz�C ™IœI¨™NÒ*Ð*Ý œ e§l¢l°7Ñ&;Ô&;Ñ<Ô<×FÒFÑHÔHÈ3ÑN�Ø�Ø"ð 	+ð 	+ˆBØ—M’M " cÑ*Ô*ˆEˆEØ˜‰~Ðr3   Úsourceú'FileOrString'c                ó*  — t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «        r|j        |         S | j                             ¦   «         }|                     | j	        ¦  «        }| 
                    d¦  «        r¥|j        rmt          j                             |¦  «        r|t          |¦  «        dz   d …         }t          j                             ||                      |¦  «        ¦  «        }nt          j                             |¦  «        }d|d d…         z   dz   }�n |j        rrt          j                             |¦  «        r|t          |¦  «        dz   d …         }|                      |¦  «        }dt          j                             ||¦  «        z   }n§t          j                             |¦  «        r|}n…t          j                             t          j                             ||¦  «        t          j                             | j                             ¦   «         |                     ¦   «         ¦  «        ¦  «        }| j        j        |j                 }|                      |¦  «        dz   |                     ¦   «         z   S )N)z.valaz.gsr@   zmeson-generated_r  z.cr	  )rµ   r   r   r   ÚCompileTargetÚsources_maprÞ   râ   rs  rå   r}  rr  r‚   rƒ   r  rð   rä   r(  r…   r„   rã   r  r”  r‘  r#  Úget_object_suffix)rR   r‘   r$  r<   Úrel_srcÚ
gen_sourceÚ	targetdirr£  s           r4   Úobject_filename_from_sourcez#Backend.object_filename_from_source  s-  € Ý˜&¥(¤-Ñ0Ô0Ð0Ð0Ð0Ý�f�eÔ1Ñ2Ô2ð 	.ØÔ% fÔ-Ð-ØÔ$×2Ò2Ñ4Ô4ˆ	Ø×(Ò(¨Ô):Ñ;Ô;ˆð ×ÒÐ,Ñ-Ô-ð 	sàŒð 4Ý”7—=’= Ñ)Ô)ð ;Ø%¥c¨)¡n¤n°qÑ&8Ð&9Ð&9Ô:�GÝœ'Ÿ/š/¨'°4×3NÒ3NÈvÑ3VÔ3VÑWÔW��åœ'×*Ò*¨7Ñ3Ô3�à+¨g°c°r°c¬lÑ:¸TÑAˆJ‰JØŒ_ð 	sÝŒw�}Š}˜WÑ%Ô%ð 7Ø!¥# i¡.¤.°1Ñ"4Ð"5Ð"5Ô6�Ø×3Ò3°FÑ;Ô;ˆIà+­b¬g¯oªo¸gÀyÑ.QÔ.QÑQˆJˆJåŒw�}Š}˜WÑ%Ô%ð sà$�
�
åœWŸ_š_­R¬W¯\ª\¸)ÀWÑ-MÔ-MÝ-/¬W¯\ª\¸$Ô:J×:YÒ:YÑ:[Ô:[Ð]c×]nÒ]nÑ]pÔ]pÑ-qÔ-qñsô s�
àÔ"Ô+¨FÔ,>Ô?ˆØ×)Ò)¨*Ñ5Ô5¸Ñ;¸g×>WÒ>WÑ>YÔ>YÑYÐYr3   Úextobjú'build.ExtractedObjects'c           	     ó>  — g }t          |j        ¦  «        }|j        D ]{}|                     ¦   «         D ]d}|                      |j        ||¦  «        }t          j                             |¦  «        \  }}	| 	                    t          d||	¦  «        ¦  «         ŒeŒ|g }
|D ]s}| j                             |¦  «        r|
 	                    |¦  «         Œ2| j                             |¦  «        r'| 	                    |                     ¦   «         ¦  «         Œt|
s|S |                      |j        ¦  «        }|j        j        �r
t#          |j        j                             ¦   «         |
¦  «        }g }
|j                             t+          d¦  «        ¦  «        }t-          |t.          ¦  «        s
J d¦   «         ‚|                     ¦   «         D ]�\  }}|j        t4          v r|
|z  }
Œt7          t9          |¦  «        |z  dz   ¦  «        D ]E}|                      |j        |                     ¦   «         |¦  «        }|
 	                    |¦  «         ŒFŒ‚|
D ]S}|                      |j        |¦  «        }t          j                              |||¦  «        }| 	                    |¦  «         ŒT|S )NTr:  r;  r@   )!re  ÚsrclistÚgenlistrñ   r/  r‘   r‚   rƒ   rð  rD  r   rÞ   Ú	is_sourceÚ	is_objectÚrelative_namer(  Úis_unityr   rN  rO  r  r   rµ   r®   rP  r'   ÚLANGS_CANT_UNITYÚrangerð   r6  rR  r-  r„   )rR   r.  r`  rL  Úraw_sourcesr+  Úrrƒ   ÚdirpartÚ	fnamepartr+   r~  r,  rU  r:  rV  rW  r  Ú_srcr5  ÚobjnameÚobjpaths                         r4   rx  zBackend._determine_ext_objs>  s¯  € Ø ˆõ ˜6œ>Ñ*Ô*ˆØ”nð 	Cð 	CˆFØ×'Ò'Ñ)Ô)ð Cð C�Ø×4Ò4°V´]ÀFÈAÑNÔN�Ý%'¤W§]¢]°4Ñ%8Ô%8Ñ"�˜Ø×"Ò"¥4¨¨g°yÑ#AÔ#AÑBÔBÐBÐBðCð +-ˆØð 	1ð 	1ˆAØÔ×)Ò)¨!Ñ,Ô,ð 1Ø—’˜qÑ!Ô!Ð!Ð!ØÔ!×+Ò+¨AÑ.Ô.ð 1Ø—’˜aŸošoÑ/Ô/Ñ0Ô0Ð0øð ð 	ØˆMà×/Ò/°´Ñ>Ô>ˆ	ð
 Œ=Ô!ñ 	)Ý-¨f¬mÔ.E×.LÒ.LÑ.NÔ.NÐPWÑXÔXˆHØˆGØœ×1Ò1µ)¸LÑ2IÔ2IÑJÔJˆJÝ˜j­#Ñ.Ô.Ð:Ð:°
Ñ:Ô:Ð:à&ŸnšnÑ.Ô.ð )ð )‘
��dØ”=Õ$4Ð4Ð4Ø˜t‘O�GØÝ�s 4™yœy¨JÑ6¸Ñ:Ñ;Ô;ð )ð )�AØ×5Ò5°f´mØ6:×6MÒ6MÑ6OÔ6OÐQRñTô T�Dà—N’N 4Ñ(Ô(Ð(Ð(ð)ð
 ð 	#ð 	#ˆDØ×6Ò6°v´}ÀdÑKÔKˆGÝ”g—l’lÐ#9¸9ÀgÑNÔNˆGØ�MŠM˜'Ñ"Ô"Ð"Ð"àˆr3   c                óö   — g }|                       |¦  «        }|                     |d¦  «        }|                     |                     ¦   «         ¦  «        }|r||                     ||d         ¦  «        z  }||z   S )NFr   )r(  r  Úget_pchÚget_languageÚget_pch_use_args)rR   r)   r‘   rÇ  ÚpchpathÚincludeargsr¢  s          r4   Úget_pch_include_argszBackend.get_pch_include_argsp  s}   € ØˆØ×-Ò-¨fÑ5Ô5ˆØ×/Ò/°¸Ñ?Ô?ˆØ�NŠN˜8×0Ò0Ñ2Ô2Ñ3Ô3ˆØð 	=Ø�H×-Ò-¨g°q¸´tÑ<Ô<Ñ<ˆDØ˜TÑ!Ð!r3   rç  Ú
pch_headerc                ó$  — d|› d|› �}t           j                             |                      |¦  «        |¦  «        }t           j                             | j        |¦  «        }t          j        t           j                             |¦  «        d¬¦  «         dt           j                             |¦  «        › d�}|dz   }t          |dd	¬
¦  «        5 }	|	 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ||¦  «         |S )Nz
meson_pch-r	  T)Úexist_okz
#include "ú"r?  r@  rA  rB  )r‚   rƒ   r„   r(  r<   rF  r  r…   rG  rS  r   rT  )
rR   r‘   rç  rG  Ú	impl_nameÚpch_rel_to_buildÚpch_fileÚcontentÚpch_file_tmprÌ  s
             r4   Úcreate_msvc_pch_implementationz&Backend.create_msvc_pch_implementationy  s6  € ð / Ð.Ð.¨Ð.Ð.ˆ	Ýœ7Ÿ<š<¨×(CÒ(CÀFÑ(KÔ(KÈYÑWÔWÐõ ”7—<’< ¤Ð0@ÑAÔAˆÝ
Œ•B”G—O’O HÑ-Ô-¸Ð=Ñ=Ô=Ð=à>�rœw×/Ò/°
Ñ;Ô;Ð>Ð>Ð>ˆØ &Ñ(ˆÝ�, ¨gÐ6Ñ6Ô6ð 	¸!Ø�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åÔ% h°Ñ=Ô=Ð=ØÐs   ÃC0Ã0C4Ã7C4c                ó”   — g }| D ]B}|                      d¦  «        r|                     dd¦  «        }|                     |¦  «         ŒC|S )N)z-Dz/Dr  z\\)r  r  rD  )rÇ  Ú
extra_argsr÷  s      r4   Úescape_extra_argszBackend.escape_extra_argsŠ  s\   € ð #%ˆ
Øð 	#ð 	#ˆCØ�~Š~˜lÑ+Ô+ð 0Ø—k’k $¨Ñ/Ô/�Ø×Ò˜cÑ"Ô"Ð"Ð"àÐr3   ú'build.BuildTarget'c                ój   — |j         | j        j        |j                 v r|                     ¦   «         S g S rc   )r'   r   Ústdlibsr‘  Úget_no_stdinc_args)rR   r‘   r)   s      r4   Úget_no_stdlib_argszBackend.get_no_stdlib_args•  s4   € ØÔ ¤
Ô 2°6Ô3EÔ FÐFÐFØ×.Ò.Ñ0Ô0Ð0Øˆ	r3   Úno_warn_argsú'CompilerArgs'c                óæ	  — |                      ¦   «         }|                     ¦   «         }||                      ||¦  «        z  }||                     ¦   «         z  }|r||                     ¦   «         z  }nK||                     t          j        d|                     t          d¦  «        ¦  «        ¦  «        ¦  «        z  }|                     t          d¦  «        ¦  «        r|| 
                    ¦   «         z  }||                     |¦  «        z  }|                     t          d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚||                     |¦  «        z  }|                     t          d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚||                     |¦  «        z  }|                     t          d¦  «        ¦  «        }t          |t           ¦  «        s
J d¦   «         ‚||                     |¦  «        z  }|| j                             ||j        |j        ¦  «        z  }|| j                             ||j        ¦  «        z  }|| j        j                             |j        |                     ¦   «         ¦  «        z  }d|v rd	|v sd
|v r|                     d¦  «         t          |t$          j        ¦  «        r||                     ¦   «         z  }t          |t$          j        ¦  «        r|j        r||                     ¦   «         z  }nDt          |t$          j        t$          j         f¦  «        r|j!        r|| "                    ¦   «         z  }tG          | $                    ¦   «         ¦  «        D �]	}	|	 %                    ¦   «         sŒ|j&        dk    rœt          |	tN          j(        ¦  «        rO|	j)        dk    r7|	j*        �0|	j*        D ](}
|
 +                    d¦  «        r|d|
dd …         gz  } nŒ)|d|	j)        gz  }nKt          |	tN          j,        ¦  «        r||	 -                    d¦  «        z  }n|| .                    |	¦  «        z  }t          |t$          j         ¦  «        r||	 /                    |¦  «        z  }�Œ|j&        dk    rKta          |j1        |j2        ¦  «        D ]0}|  3                    |¦  «        }|| 4                    |d¦  «        z  }Œ1|S )Nr&   Úwarning_levelÚwerrorÚ	buildtyper;  ÚoptimizationÚdebugz/Ziz/ZIz/Z7r7   zglib-2.0)z>=z==z--target-glibr
   z--pkgr6   F)5Úcompiler_argsÚget_optionsrX  Úget_always_argsÚget_no_warn_argsÚget_warn_argsÚTÚcastr  r   Úget_werror_argsÚget_option_compile_argsrµ   r&   Úget_buildtype_argsÚget_optimization_argsru   Úget_debug_argsr   Úget_project_argsr{   r‘  Úget_global_argsrÞ   r  Úget_external_argsrB  Úremover  Úget_pic_argsr  Úpicr  ÚpieÚget_pie_argsÚreversedÚget_external_depsr›  r'   r   r  r’   Úversion_reqsr  r  Úget_link_argsÚget_dependency_compile_argsÚget_exe_argsr   r�  r	  r(  r  )rR   r‘   r)   rY  ÚcommandsÚ
copt_proxyr^  r_  r`  r  ÚreqÚltÚpriv_dirs                r4   Úgenerate_basic_compiler_argsz$Backend.generate_basic_compiler_argsš  sí  € ð ×)Ò)Ñ+Ô+ˆà×'Ò'Ñ)Ô)ˆ
ð 	�D×+Ò+¨F°HÑ=Ô=Ñ=ˆà�H×,Ò,Ñ.Ô.Ñ.ˆð ð 	mØ˜×1Ò1Ñ3Ô3Ñ3ˆHˆHð ˜×.Ò.­q¬v°e¸V×=NÒ=NÍyÐYhÑOiÔOiÑ=jÔ=jÑ/kÔ/kÑlÔlÑlˆHð
 ×Ò�Y xÑ0Ô0Ñ1Ô1ð 	3Ø˜×0Ò0Ñ2Ô2Ñ2ˆHð 	�H×4Ò4°ZÑ@Ô@Ñ@ˆð ×%Ò%¥i°Ñ&<Ô&<Ñ=Ô=ˆ	Ý˜)¥SÑ)Ô)Ð5Ð5¨:Ñ5Ô5Ð5Ø�H×/Ò/°	Ñ:Ô:Ñ:ˆà×(Ò(­°>Ñ)BÔ)BÑCÔCˆÝ˜,­Ñ,Ô,Ð8Ð8¨jÑ8Ô8Ð8Ø�H×2Ò2°<Ñ@Ô@Ñ@ˆà×!Ò!¥)¨GÑ"4Ô"4Ñ5Ô5ˆÝ˜%¥Ñ&Ô&Ð2Ð2¨
Ñ2Ô2Ð2Ø�H×+Ò+¨EÑ2Ô2Ñ2ˆð 	�D”J×/Ò/°¸&Ô:KÈVÔM_Ñ`Ô`Ñ`ˆð 	�D”J×.Ò.¨x¸Ô9KÑLÔLÑLˆð 	�DÔ$Ô-×?Ò?ÀÔ@RÐT\×TiÒTiÑTkÔTkÑlÔlÑlˆð �XÐÐ U¨hÐ%6Ð%6¸EÀXÐ<MÐ<MØ�OŠO˜EÑ"Ô"Ð"å�f�eÔ1Ñ2Ô2ð 	0Ø˜×-Ò-Ñ/Ô/Ñ/ˆHå�f�eÔ1Ñ2Ô2ð 	0°v´zð 	0Ø˜×-Ò-Ñ/Ô/Ñ/ˆHˆHÝ˜¥Ô!4µeÔ6FÐ GÑHÔHð 	0ÈVÌZð 	0Ø˜×-Ò-Ñ/Ô/Ñ/ˆHõ
 ˜F×4Ò4Ñ6Ô6Ñ7Ô7ð 	7ñ 	7ˆCØ—9’9‘;”;ð ØàÔ  FÒ*Ð*Ý˜c¥<Ô#CÑDÔDð :Ø”x :Ò-Ð-°#Ô2BÐ2NØ#&Ô#3ð &ð &˜CØ"Ÿ~š~¨lÑ;Ô;ð &Ø (¨_¸cÀ!À"À"¼gÐ,FÑ F Ø % ð&ð  ¨#¬(Ð 3Ñ3�H�HÝ ¥\Ô%AÑBÔBð :Ø × 1Ò 1°&Ñ 9Ô 9Ñ9�Høà˜H×@Ò@ÀÑEÔEÑE�õ ˜&¥%Ô"2Ñ3Ô3ð 7Ø˜C×,Ò,¨XÑ6Ô6Ñ6�ùð Ô 	Ò)Ð)Ý˜FÔ/°Ô1JÑKÔKð Gð G�Ø×6Ò6°rÑ:Ô:�Ø˜H×5Ò5°hÀÑFÔFÑF��Øˆr3   ri  úT.List[build.Target]c                óJ  — g }|D ]�}|                      ¦   «         s%t          d|                     ¦   «         › d�¦  «        ‚|                      |¦  «        }|sŒS|                     ¦   «         dk    rd|z   }n|                     ¦   «         |z   }|                     |¦  «         Œž|S )Nz)Tried to link with a non-library target "z".r5   z-Wl,)r  rè   Úget_basenamer  rB  Úget_linker_lib_prefixrD  )rR   r)   ri  rÇ  r5   r÷  s         r4   Úbuild_target_link_argumentsz#Backend.build_target_link_argumentsü  s¿   € ØˆØð 
	ð 
	ˆAØ×'Ò'Ñ)Ô)ð eÝ"Ð#cÈqÏ~Ê~ÑO_ÔO_Ð#cÐ#cÐ#cÑdÔdÐdØ×6Ò6°qÑ9Ô9ˆCØð ØØ×$Ò$Ñ&Ô&¨#Ò-Ð-Ø˜s‘l��à×4Ò4Ñ6Ô6¸Ñ<�Ø�KŠK˜ÑÔÐÐØˆr3   c                óÔ  — t          ¦   «         }| j        j        |j                                      ¦   «         }|r3|                     t          j                             |d¦  «        ¦  «         | j        j        |j                  	                    ¦   «         }|r3|                     t          j                             |d¦  «        ¦  «         t          |t          j        ¦  «        rv|j                             ¦   «         D ]\}|                     |                     | j        ¦  «        ¦  «         |                     |                     | j        ¦  «        ¦  «         Œ]t%          |¦  «        S )NÚbin)r   rÞ   Ú
propertiesr‘  Úget_rootrñ  r‚   rƒ   r„   Úget_sys_rootrµ   r   rô   rN  rO  r»  Úget_program_dirsrß  re  )rR   r‘   r  ÚrootÚsys_rootrà  s         r4   Úget_mingw_extra_pathszBackend.get_mingw_extra_paths  s(  € Ý!+¡¤ˆàÔÔ*¨6Ô+=Ô>×GÒGÑIÔIˆØð 	1Ø�IŠI•b”g—l’l 4¨Ñ/Ô/Ñ0Ô0Ð0àÔ#Ô.¨vÔ/AÔB×OÒOÑQÔQˆØð 	5Ø�IŠI•b”g—l’l 8¨UÑ3Ô3Ñ4Ô4Ð4å�f�eÔ/Ñ0Ô0ð 	DØÔ&×-Ò-Ñ/Ô/ð Dð D�Ø—’˜R×0Ò0°Ô1AÑBÔBÑCÔCÐCØ—’˜R×0Ò0°Ô1AÑBÔBÑCÔCÐCÐCÝ�E‰{Œ{Ðr3   ú\T.Union[build.BuildTarget, build.CustomTarget, programs.ExternalProgram, mesonlib.File, str]ú:T.Sequence[T.Union[build.BuildTarget, build.CustomTarget]]c           	     ó&  — t          ¦   «         }t          ¦   «         }t          |t          j        ¦  «        r¨|                     |                     ¦   «         ¦  «         |                      |d¬¦  «        D ]i}|                     t          j	         
                    t          j	                             | j                             ¦   «         |¦  «        ¦  «        ¦  «         Œj|D ]X}|                     |¦  «         t          |t          j        ¦  «        r'|                     |                     ¦   «         ¦  «         ŒY|D ]a}t          j	                             | j                             ¦   «         |                      |¦  «        ¦  «        }|                     |¦  «         Œbt          |t          j        ¦  «        rL| j        j                             |j        ¦  «        s(|                     |                      |¦  «        ¦  «         t'          |¦  «        S )zÂOn Windows there is no such thing as an rpath.

        We must determine all locations of DLLs that this exe
        links to and return them so they can be used in unit
        tests.
        F)rü  )rà   rµ   r   rô   r»  Úget_transitive_link_depsr
  rñ  r‚   rƒ   r  r„   rÞ   râ   rö   r”  r˜  r‘  rŽ  re  )	rR   r‘   r†  rL  ÚprospectivesÚdeppathÚbdepÚldÚdirsegs	            r4   r—  z%Backend.determine_windows_extra_paths  sÊ  € õ !™UœUˆÝ69±e´eˆÝ�f�eÔ/Ñ0Ô0ð 	fØ×Ò × ?Ò ?Ñ AÔ AÑBÔBÐBà×OÒOÐPVÐglÐOÑmÔmð fð f�Ø—
’
�2œ7×+Ò+­B¬G¯LªL¸Ô9I×9WÒ9WÑ9YÔ9YÐ[bÑ,cÔ,cÑdÔdÑeÔeÐeÐeØð 	Eð 	EˆDØ×Ò˜TÑ"Ô"Ð"Ý˜$¥Ô 1Ñ2Ô2ð EØ×#Ò# D×$AÒ$AÑ$CÔ$CÑDÔDÐDøàð 	ð 	ˆBÝ”W—\’\ $Ô"2×"@Ò"@Ñ"BÔ"BÀD×DWÒDWÐXZÑD[ÔD[Ñ\Ô\ˆFØ�JŠJ�vÑÔÐÐÝ�v�uÔ0Ñ1Ô1ð 	>ØÔ$Ô-×CÒCÀFÔDVÑWÔWð	>à�MŠM˜$×4Ò4°VÑ<Ô<Ñ=Ô=Ð=Ý�F‰|Œ|Ðr3   rÓ  ú
T.BinaryIOc                ó`   — |                       | j                             ¦   «         |¦  «         d S rc   )Úwrite_test_serialisationr   Úget_benchmarks©rR   rÓ  s     r4   rÑ  zBackend.write_benchmark_file9  s,   € Ø×%Ò% d¤j×&?Ò&?Ñ&AÔ&AÀ8ÑLÔLÐLÐLÐLr3   c                ó`   — |                       | j                             ¦   «         |¦  «         d S rc   )rš  r   Ú	get_testsrœ  s     r4   rÐ  zBackend.write_test_file<  s,   € Ø×%Ò% d¤j×&:Ò&:Ñ&<Ô&<¸hÑGÔGÐGÐGÐGr3   ÚtestsúT.List['Test']úT.List[TestSerialisation]c                óê  — g }t          |d„ ¬¦  «        D �]Ü}|                     ¦   «         }t          |t          j        ¦  «        r|                     ¦   «         }nKt          j                             | j	         
                    ¦   «         |                      |¦  «        ¦  «        g}t          |t          j        t          j        f¦  «        r|j        }nt          j        }|j        D ]=}t          |t          j        ¦  «        r!|j        t          j        u rt          j        } nŒ>| j	                             |¦  «        }| j	                             ¦   «         }	| j	        j        |j                 }
|
                     ¦   «         s|
                     ¦   «         rTg }t          |t          j        ¦  «        r!t3          |                     ¦   «         ¦  «        }|                      ||¦  «        }ng }g }t9          |j        ¦  «        }t          |t          j        ¦  «        r|                     |¦  «         |j        D �]©}t          |t          j        ¦  «        r|                     |¦  «         n4t          |t          j         ¦  «        r|                     |j!        ¦  «         t          |t          j        ¦  «        r||                      |g ¦  «        z  }t          |tD          j#        ¦  «        rft          j                             | j	         
                    ¦   «         | $                    | j%        ¦  «        ¦  «        }| &                    |¦  «         �Œt          |tN          ¦  «        r| &                    |¦  «         �ŒFt          |t          j        t          j         f¦  «        r0| (                    |  )                    ||j*        ¦  «        ¦  «         �ŒœtW          d¦  «        ‚tY          j-        |j.        ¦  «        }|
                     ¦   «         �s|
                     ¦   «         sô|
 /                    ¦   «         sàt9          ¦   «         }|D ]©}t          |t          j        ¦  «        r�| 0                    ¦   «         D ]x}t          |t          j1        ¦  «        r\|                     t          j                             | j	         
                    ¦   «         | 2                    ¦   «         ¦  «        ¦  «         ŒyŒª|r$| 3                    dt3          |¦  «        d¦  «         ti          | 5                    ¦   «         |j6        |j7        |||	| j	         8                    ¦   «         |j9        |||j:        |j;        |j*        ||j<        |j=        t          |t          j        ¦  «        t          |t          j>        ¦  «        d„ |D ¦   «         | j	        j?        j@        |jA        ¦  «        }| &                    |¦  «         �ŒÞ|S )Nc                ó   — d| j         z  S )Néÿÿÿÿ)r¯   )Útsts    r4   ú<lambda>z3Backend.create_test_serialisation.<locals>.<lambda>A  s   € ¨r°C´LÑ/@€ r3   )ÚkeyzBad object in test command.ÚLD_LIBRARY_PATHrë  c                ó6   — g | ]}|                      ¦   «         ‘ŒS r2   )Úget_id)r­  rZ  s     r4   r  z5Backend.create_test_serialisation.<locals>.<listcomp>‰  s    € Ð#@Ð#@Ð#@°1 A§H¢H¡J¤JÐ#@Ð#@Ð#@r3   )BÚsortedÚget_exerµ   r   r¶   r�  r‚   rƒ   r„   rÞ   râ   rø   r   rô   r‘  r   r’  r¦   ÚHOSTÚis_cross_buildrš  r”  r•  r–  rï   re  Ú get_transitive_build_target_depsr—  rà   r²   ÚTargetrñ  ró   r‘   r   r   rs  rå   rD  r&   rw  Úconstruct_target_rel_pathsr«   r   ÚcopyÚdeepcopyr¨   Ú	is_darwinÚget_all_link_depsr  r  ÚprependrŸ   Úget_namer    r¡   r™  r¥   r©   rª   r­   r¯   r  r  r`   r³   )rR   rŸ  Úarrrì   r�  r„  Útest_for_machineÚaÚis_crossr£   r£  r†  r¬   r¦   r²   Út_envÚld_lib_pathr5   r‚  Útss                       r4   Úcreate_test_serialisationz!Backend.create_test_serialisation?  s1  € Ø)+ˆÝ˜Ð#@Ð#@ÐAÑAÔAð K	ñ K	ˆAØ—)’)‘+”+ˆCÝ˜#�xÔ7Ñ8Ô8ð fØ—o’oÑ'Ô'��å”w—|’| DÔ$4×$BÒ$BÑ$DÔ$DÀd×F^ÒF^Ð_bÑFcÔFcÑdÔdÐe�Ý˜#¥Ô 1µ8Ô3KÐLÑMÔMð 7Ø#&¤?Ð Ð õ $1Ô#6Ð ð ”Zð ð �Ý˜a¥Ô!2Ñ3Ô3ð Ø”}­Ô(:Ð:Ð:Ý+8Ô+=Ð(Ø˜øàÔ'×6Ò6Ð7GÑHÔHˆHØÔ*×:Ò:Ñ<Ô<ˆKØÔ&Ô/°´Ô@ˆGØ×!Ò!Ñ#Ô#ð ! w×'8Ò'8Ñ':Ô':ð !ØVX�Ý˜c¥5Ô#5Ñ6Ô6ð OÝ"& s×'KÒ'KÑ'MÔ'MÑ"NÔ"N�KØ"×@Ò@ÀÀkÑRÔR��à �à$&ˆHÝ+.¨q¬y©>¬>ˆGÝ˜#�uœ|Ñ,Ô,ð !Ø—’˜CÑ Ô Ð Ø”Zð Hñ H�Ý˜a¥¤Ñ.Ô.ð *Ø—K’K ‘N”N�N�NÝ ¥5Ô#:Ñ;Ô;ð *Ø—K’K ¤Ñ)Ô)Ð)Ý˜a¥Ô!2Ñ3Ô3ð MØ 4×#EÒ#EÀaÈÑ#LÔ#LÑL�Kå˜a¥¤Ñ/Ô/ð HÝœŸš TÔ%5×%CÒ%CÑ%EÔ%EÀq×GXÒGXÐY]ÔYjÑGkÔGkÑlÔl�AØ—O’O AÑ&Ô&Ð&Ñ&Ý ¥3Ñ'Ô'ð HØ—O’O AÑ&Ô&Ð&Ñ&Ý ¥E¤Lµ%Ô2IÐ#JÑKÔKð HØ—O’O D×$CÒ$CÀAÀqÄyÑ$QÔ$QÑRÔRÐRÑRå(Ð)FÑGÔGÐGå”M !¤%Ñ(Ô(ˆEØ×%Ò%Ñ'Ô'ñ M°×0AÒ0AÑ0CÔ0Cð MÈG×L]ÒL]ÑL_ÔL_ð MÝ*-©%¬%�Ø ð pð p�AÝ! !¥UÔ%6Ñ7Ô7ð pØ!"×!4Ò!4Ñ!6Ô!6ð pð p˜AÝ)¨!­UÔ-@ÑAÔAð pØ +§¢µ´·²¸TÔ=M×=[Ò=[Ñ=]Ô=]Ð_`×_kÒ_kÑ_mÔ_mÑ0nÔ0nÑ oÔ oÐ oøøØð MØ—M’MÐ"3µT¸+Ñ5FÔ5FÈÑLÔLÐLå" 1§:¢:¡<¤<°´ÀÄÈ#ÈxØ#.°Ô0@×0QÒ0QÑ0SÔ0SØ#$¤=°(¸EØ#$¤=°!´)¸Q¼YØ#.°´
¸A¼JÝ#-¨cµ5´<Ñ#@Ô#@Ý#-¨cµ5Ô3CÑ#DÔ#DØ#@Ð#@¸Ð#@Ñ#@Ô#@Ø#'Ô#3Ô#<Ô#DØ#$¤9ñ	.ô 	.ˆBð �JŠJ�r‰NŒNˆN‰NØˆ
r3   c                óV   — t          j        |                      |¦  «        |¦  «         d S rc   )r¿  rÀ  r¿  )rR   rŸ  rÓ  s      r4   rš  z Backend.write_test_serialisation�  s(   € ÝŒ�D×2Ò2°5Ñ9Ô9¸8ÑDÔDÐDÐDÐDr3   c                óè  ‡ ‡‡— ‰                       |¦  «        Št          |t          j        ¦  «        r‰€‰pdŠt          |t          j        ¦  «        r|                     ¦   «         g}n<t          |t          j        t          j        f¦  «        sJ ‚|                     ¦   «         }ˆfd„|D ¦   «         }‰�=t          j
                             ‰¦  «        sJ ‚ˆ fd„|D ¦   «         }ˆfd„|D ¦   «         }|S )Nr	  c                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r2   ©r‚   rƒ   r„   )r­  rZ  r!  s     €r4   r  z6Backend.construct_target_rel_paths.<locals>.<listcomp>ž  s)   ø€ Ð@Ð@Ð@°1•2”7—<’< 
¨AÑ.Ô.Ð@Ð@Ð@r3   c                ó~   •— g | ]9}t           j                             ‰j                             ¦   «         |¦  «        ‘Œ:S r2   ©r‚   rƒ   r„   rÞ   râ   )r­  rZ  rR   s     €r4   r  z6Backend.construct_target_rel_paths.<locals>.<listcomp>¡  s8   ø€ ÐZÐZÐZÈQ•r”w—|’| DÔ$4×$BÒ$BÑ$DÔ$DÀaÑHÔHÐZÐZÐZr3   c                óP   •— g | ]"}t           j                             |‰¦  «        ‘Œ#S r2   )r‚   rƒ   rä   )r­  rZ  r«   s     €r4   r  z6Backend.construct_target_rel_paths.<locals>.<listcomp>¢  s)   ø€ ÐDÐDÐD°q•r”w—’ q¨'Ñ2Ô2ÐDÐDÐDr3   )rö   rµ   r   r  rô   rõ   rï   ró   rñ   r‚   rƒ   r  )rR   rì   r«   Úoutputsr!  s   ` ` @r4   r±  z"Backend.construct_target_rel_paths’  s  øøø€ Ø×(Ò(¨Ñ+Ô+ˆ
å�a�Ô)Ñ*Ô*ð 	+¨w¨Ø#Ð* sˆJå�a�Ô*Ñ+Ô+ð 	&Ø—~’~Ñ'Ô'Ð(ˆGˆGå˜a¥%Ô"4µeÔ6MÐ!NÑOÔOÐOÐOÐOØ—m’m‘o”oˆGà@Ð@Ð@Ð@¸Ð@Ñ@Ô@ˆØÐÝ”7—=’= Ñ)Ô)Ð)Ð)Ð)ØZÐZÐZÐZÐRYÐZÑZÔZˆGØDÐDÐDÐD¸GÐDÑDÔDˆGØˆr3   r5   rZ   c                ó¼  — | j         j        €d S t          j                             | j                             ¦   «         d¦  «        }t          j                             | j                             ¦   «         | j         j        ¦  «        }t          j                             d| j         j        ¦  «        }ddd„ | j         j         	                    ¦   «         D ¦   «         dœ}t          |dd¬	¦  «        5 }|                     t          j        |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             t!          |||d d
dd¬¦  «        ¦  «         d S )Nz
depmf.jsonr�   zdependency manifestz1.0c                ó>   — i | ]\  }}||                      ¦   «         “ŒS r2   )Úto_json)r­  rÅ  rÆ  s      r4   ú
<dictcomp>z2Backend.generate_depmf_install.<locals>.<dictcomp>¬  s&   € ÐYÐYÐY±°°A˜a §¢¡¤ÐYÐYÐYr3   )rQ   r`   Úprojectsr@  rA  rB  rÐ   ÚdevelÚdepmf©r~   rŽ   )r   Údep_manifest_namer‚   rƒ   r„   rÞ   râ   Ú
get_prefixÚdep_manifestrP  rG  rS  ÚjsonÚdumpsrh   rD  r‹   )rR   r5   Ú	ifilenameÚ	ofilenamer†   ÚmfobjrÌ  s          r4   Úgenerate_depmf_installzBackend.generate_depmf_install¥  s}  € ØŒ:Ô'Ð/ØˆFÝ”G—L’L Ô!1×!?Ò!?Ñ!AÔ!AÀ<ÑPÔPˆ	Ý”G—L’L Ô!1×!<Ò!<Ñ!>Ô!>ÀÄ
Ô@\Ñ]Ô]ˆ	Ý”7—<’< 
¨D¬JÔ,HÑIÔIˆØ.¸5ØYÐY¸¼Ô9P×9VÒ9VÑ9XÔ9XÐYÑYÔYð[ð [ˆå�)˜S¨7Ð3Ñ3Ô3ð 	'°qØ�GŠG•D”J˜uÑ%Ô%Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	
Œ�Š•o i°¸HÀdÈBØ*1¸WðFñ Fô Fñ 	Gô 	Gð 	Gð 	Gð 	Gs   Ã/(D#Ä#D'Ä*D'c                óœ  ‡ — t          ˆ fd„‰ j                             ¦   «         D ¦   «         ¦  «        }‰ j                             ¦   «         r$|                     ‰ j        j        j        ¦  «         |                     ‰ j        j        j        ¦  «         | 	                    d¦  «         ‰  
                    |¦  «         t          |¦  «        S )zcList of all files whose alteration means that the build
        definition needs to be regenerated.c                óX   •— g | ]&}t          t          ‰j        ¦  «        |z  ¦  «        ‘Œ'S r2   )r&   r	   rå   )r­  ÚdfrR   s     €r4   r  z.Backend.get_regen_filelist.<locals>.<listcomp>¶  sG   ø€ ð Mð Mð MØ!õ �t DÔ$5Ñ6Ô6¸Ñ;Ñ<Ô<ð Mð Mð Mr3   zmeson-private/coredata.dat)r   r¹   Úget_build_def_filesrÞ   r®  r»  r  Úcross_filesÚconfig_filesrñ  Úcheck_clock_skewre  )rR   ri  s   ` r4   Úget_regen_filelistzBackend.get_regen_filelist³  sÒ   ø€ õ ð Mð Mð Mð MØ%)Ô%5×%IÒ%IÑ%KÔ%KðMñ Mô Mñ Nô NˆàÔ×*Ò*Ñ,Ô,ð 	?Ø�KŠK˜Ô(Ô1Ô=Ñ>Ô>Ð>Ø�Š�DÔ$Ô-Ô:Ñ;Ô;Ð;Ø�ŠÐ-Ñ.Ô.Ð.Ø×Ò˜dÑ#Ô#Ð#Ý�D‰zŒzÐr3   c                ó–  — |                       ¦   «         }t          | j                             ¦   «         | j                             ¦   «         |¦  «        }t
          j                             | j                             ¦   «         d¦  «        }t          |d¦  «        5 }t          j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzregeninfo.dumpr±  )rà  r:   rÞ   rã   râ   r‚   rƒ   r„   r¾  rG  r¿  rÀ  )rR   ri  Ú	regeninfor÷   rÌ  s        r4   Úgenerate_regen_infozBackend.generate_regen_info¿  sö   € Ø×&Ò&Ñ(Ô(ˆÝ˜dÔ.×=Ò=Ñ?Ô?Ø"Ô.×<Ò<Ñ>Ô>Ø"ñ$ô $ˆ	õ ”7—<’< Ô 0× @Ò @Ñ BÔ BØ 0ñ2ô 2ˆå�(˜DÑ!Ô!ð 	& QÝŒK˜	 1Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ÂB>Â>CÃCÚ	file_listúT.Iterable[str]c                ó0  — dd l }|                      ¦   «         }|D ]z}t          j                             | j                             ¦   «         |¦  «        }t          j                             |¦  «        }||z
  }|dk    rt          d|› d|d›d�¦  «        ‚Œ{d S )Nr   gü©ñÒMbP?zClock skew detected. File z has a time stamp z.4fzs in the future.)Útimer‚   rƒ   r„   rÞ   râ   Úgetmtimer   )rR   rä  rç  ÚnowrÌ  ÚabsfÚftimeÚdeltas           r4   rß  zBackend.check_clock_skewÉ  s¯   € ð 	ˆˆˆØ�iŠi‰kŒkˆØð 	wð 	wˆAÝ”7—<’< Ô 0× >Ò >Ñ @Ô @À!ÑDÔDˆDÝ”G×$Ò$ TÑ*Ô*ˆEØ˜C‘KˆEð �uŠ}ˆ}Ý$Ð%uÀ$Ð%uÐ%uÐZ_Ð%uÐ%uÐ%uÐ%uÑvÔvÐvð ð	wð 	wr3   Úbtú4T.Union[build.BuildTarget, programs.ExternalProgram]c                óú   — t          |t          j        ¦  «        rLt          j                             | j                             ¦   «         |                      |¦  «        ¦  «        g}n| 	                    ¦   «         }|S rc   )
rµ   r   rô   r‚   rƒ   r„   rÞ   râ   rø   r�  )rR   rí  r¸  s      r4   Úbuild_target_to_cmd_arrayz!Backend.build_target_to_cmd_arrayÙ  sc   € Ý�b�%Ô+Ñ,Ô,ð 	#Ý”7—<’< Ô 0× >Ò >Ñ @Ô @À$×BZÒBZÐ[]ÑB^ÔB^Ñ_Ô_Ð`ˆCˆCà—.’.Ñ"Ô"ˆCØˆ
r3   r2  ú'build.GeneratedList'c                óz   — g }|D ]5}|dk    r||                      ¦   «         z  }Œ |                     |¦  «         Œ6|S )Nz@EXTRA_ARGS@)Úget_extra_argsrD  )rR   rÇ  r2  Ú
final_argsrº  s        r4   Úreplace_extra_argszBackend.replace_extra_argsà  sV   € Ø"$ˆ
Øð 	%ð 	%ˆAØ�NÒ"Ð"Ø˜g×4Ò4Ñ6Ô6Ñ6�
�
à×!Ò! !Ñ$Ô$Ð$Ð$ØÐr3   Úprivate_dirÚoutput_listc           	     ó†  — g }t          j        d¦  «        }|D ]§}|                     |¦  «        }|�yt          |                     d¦  «        ¦  «        }d|› d�}	|                     |	t          j                             |||         ¦  «        ¦  «        }|                     |¦  «        }|­y| 	                    |¦  «         Œ¨|S )Nz@OUTPUT(\d+)@r@   z@OUTPUTú@)
rì  rí  Úsearchr®   rï  r  r‚   rƒ   r„   rD  )
rR   rÇ  rö  r÷  ÚnewargsÚregexr÷  ÚmÚindexr-  s
             r4   Úreplace_outputszBackend.replace_outputsé  s½   € Ø!ˆÝ”
Ð+Ñ,Ô,ˆØð 	 ð 	 ˆCØ—’˜SÑ!Ô!ˆAØ�-Ý˜AŸGšG A™JœJ™œ�Ø( Ð(Ð(Ð(�Ø—k’k #¥r¤w§|¢|°KÀÈUÔASÑ'TÔ'TÑUÔU�Ø—L’L Ñ%Ô%�ð	 �-ð
 �NŠN˜3ÑÔÐÐØˆr3   úD'T.OrderedDict[str, T.Union[build.BuildTarget, build.CustomTarget]]'c                óœ   — t          ¦   «         }| j                             ¦   «                              ¦   «         D ]\  }}|j        r|||<   Œ|S rc   )r   r   Úget_targetsrP  Úbuild_by_default)rR   rL  r’   Úbs       r4   Úget_build_by_default_targetsz$Backend.get_build_by_default_targetsö  sT   € ÝWbÑWdÔWdˆà”z×-Ò-Ñ/Ô/×5Ò5Ñ7Ô7ð 	!ð 	!‰GˆD�!ØÔ!ð !Ø ��t‘øØˆr3   Ú	benchmarkúBT.OrderedDict[str, T.Union[build.BuildTarget, build.CustomTarget]]c                ó>  — t          ¦   «         }|r| j                             ¦   «         n| j                             ¦   «         }|D ]×}|j        }t          |t          j        t          j        f¦  «        r|||                     ¦   «         <   |j	        D ]@}t          |t          j        t          j        f¦  «        sŒ)|||                     ¦   «         <   ŒA|j
        D ]A}t          |t          j        t          j        f¦  «        sJ ‚|||                     ¦   «         <   ŒBŒØ|S rc   )r   r   r›  rž  r�  rµ   rï   rô   rª  r¦   r²   )rR   r  rL  rd   rì   r�  r÷  r  s           r4   Úget_testlike_targetszBackend.get_testlike_targetsþ  s  € ÝU`ÑUbÔUbˆØ1:ÐV�$”*×+Ò+Ñ-Ô-Ð-ÀÄ
×@TÒ@TÑ@VÔ@VˆØð 
	+ð 
	+ˆAØ”%ˆCÝ˜#¥Ô 2µEÔ4EÐFÑGÔGð +Ø'*��s—z’z‘|”|Ñ$Ø”zð +ð +�Ý! #­Ô(:½EÔ<MÐ'NÑOÔOð ØØ'*��s—z’z‘|”|Ñ$Ð$Ø”yð +ð +�Ý! #­Ô(:½EÔ<MÐ'NÑOÔOÐOÐOÐOØ'*��s—z’z‘|”|Ñ$Ð$ð+ð ˆr3   Úgenerated_sourceúbuild.CustomTargetc                óø   — g }|                      ¦   «         D ]b}| j                             |¦  «        rF|                     t          j                             |                      |¦  «        |¦  «        ¦  «         Œc|S rc   )rñ   rÞ   Ú
is_libraryrD  r‚   rƒ   r„   rö   )rR   r
  ÚlibsrÌ  s       r4   Ú.get_custom_target_provided_by_generated_sourcez6Backend.get_custom_target_provided_by_generated_source  sv   € àˆØ!×-Ò-Ñ/Ô/ð 	Tð 	TˆAØÔ×*Ò*¨1Ñ-Ô-ð TØ—’�BœGŸLšL¨×)<Ò)<Ð=MÑ)NÔ)NÐPQÑRÔRÑSÔSÐSøØˆr3   ú.T.Union[build.BuildTarget, build.CustomTarget]c                ó¾   — g }|                      ¦   «         D ]E}t          |t          j        ¦  «        sŒ|                     |                      |¦  «        ¦  «         ŒF|S rc   )Úget_generated_sourcesrµ   r   rï   rw  r  )rR   r‘   r  rì   s       r4   Ú$get_custom_target_provided_librariesz,Backend.get_custom_target_provided_libraries  sd   € àˆØ×-Ò-Ñ/Ô/ð 	Pð 	PˆAÝ˜a¥Ô!3Ñ4Ô4ð ØØ�KŠK˜×KÒKÈAÑNÔNÑOÔOÐOÐOØˆr3   c                ó¢  ‡ ‡‡— g }‰                      ¦   «         D �]³Št          ‰t          ¦  «        r.t          j                             ‰ j        ‰j        ‰¦  «        g}�nSt          ‰t          j	        ¦  «        r‰  
                    ‰¦  «        g}�n!t          ‰t          j        t          j        f¦  «        r"ˆˆ fd„‰                     ¦   «         D ¦   «         }nÙt          ‰t          j        ¦  «        r"ˆ ˆfd„‰                     ¦   «         D ¦   «         }n�t          ‰t          j        ¦  «        r‰                      ‰¦  «        }nmt          ‰t"          j        ¦  «        r8‰                     ¦   «         s
J d¦   «         ‚‰j        €
J d¦   «         ‚‰j        g}n‰                     ‰ j        ¦  «        g}‰j        rˆ fd„|D ¦   «         }||z  }�Œµ|S )zÌ
        Custom target sources can be of various object types; strings, File,
        BuildTarget, even other CustomTargets.
        Returns the path to them relative to the build root directory.
        c                óv   •— g | ]5}t           j                             ‰                     ‰¦  «        |¦  «        ‘Œ6S r2   )r‚   rƒ   r„   Úget_custom_target_output_dir)r­  r¢  r  rR   s     €€r4   r  z5Backend.get_custom_target_sources.<locals>.<listcomp>,  s8   ø€ ÐhÐhÐhÐST�œŸš d×&GÒ&GÈÑ&JÔ&JÈAÑNÔNÐhÐhÐhr3   c                óv   •— g | ]5}t           j                             ‰                     ‰¦  «        |¦  «        ‘Œ6S r2   )r‚   rƒ   r„   r(  )r­  r¢  rR   r‘   s     €€r4   r  z5Backend.get_custom_target_sources.<locals>.<listcomp>.  s8   ø€ ÐgÐgÐgÐRS�œŸš d×&AÒ&AÀ&Ñ&IÔ&IÈ1ÑMÔMÐgÐgÐgr3   zThis shouldn't be possibleNr;  c                ó~   •— g | ]9}t           j                             ‰j                             ¦   «         |¦  «        ‘Œ:S r2   rÅ  )r­  rÌ  rR   s     €r4   r  z5Backend.get_custom_target_sources.<locals>.<listcomp>8  s8   ø€ ÐZÐZÐZÈq�œŸš dÔ&6×&DÒ&DÑ&FÔ&FÈÑJÔJÐZÐZÐZr3   )Úget_sourcesrµ   r&   r‚   rƒ   r„   rå   Úsubdirr   rô   rø   rï   ró   rñ   ÚGeneratedListrt  ro  r   r¶   r›  rs  Úabsolute_paths)rR   r‘   rW  rr   r  s   ``  @r4   Úget_custom_target_sourcesz!Backend.get_custom_target_sources  sÛ  øøø€ ð ˆØ×#Ò#Ñ%Ô%ð 	ñ 	ˆAÝ˜!�SÑ!Ô!ð ?ÝœŸš dÔ&7¸¼ÈÑJÔJÐK�‘Ý˜A�uÔ0Ñ1Ô1ð ?Ø×1Ò1°!Ñ4Ô4Ð5�‘Ý˜A¥Ô 2µEÔ4KÐLÑMÔMð ?ØhÐhÐhÐhÐhÐXY×XeÒXeÑXgÔXgÐhÑhÔh��Ý˜A�uÔ2Ñ3Ô3ð 	?ØgÐgÐgÐgÐgÐWX×WdÒWdÑWfÔWfÐgÑgÔg��Ý˜A�uÔ5Ñ6Ô6ð ?Ø×/Ò/°Ñ2Ô2��Ý˜A�xÔ7Ñ8Ô8ð ?Ø—w’w‘y”yÐ>Ð>Ð">Ñ>Ô>Ð>Ø”vÐ)Ð)¨:Ñ)Ô)Ð)Øœ˜��à×*Ò*¨4Ô+<Ñ=Ô=Ð>�ØÔ$ð [ØZÐZÐZÐZÐTYÐZÑZÔZ�Ø�E‰MˆD‰DØˆr3   r  c                óˆ  — g }|j         D �]6}t          |t          j        ¦  «        rˆ|rX|                     |                     | j                             ¦   «         | j                             ¦   «         ¦  «        ¦  «         Œw|                     | 	                    | j
        ¦  «        ¦  «         Œ¥|rQ|                     t          j                             | j                             ¦   «         |j        |¦  «        ¦  «         Œø|                     t          j                             | j
        |j        |¦  «        ¦  «         �Œ8|S rc   )Údepend_filesrµ   r   r   rD  rý   rÞ   rã   râ   rs  rå   r‚   rƒ   r„   r  )rR   r‘   r  ri  r  s        r4   Úget_custom_target_depend_filesz&Backend.get_custom_target_depend_files<  s*  € ØˆØÔ$ð 	Sñ 	SˆAÝ˜!�Xœ]Ñ+Ô+ð 
SØ!ð FØ—K’K §¢°Ô0@×0OÒ0OÑ0QÔ0QØ04Ô0@×0NÒ0NÑ0PÔ0Pñ!Rô !Rñ Sô Sð Sð Sð —K’K × 1Ò 1°$Ô2CÑ DÔ DÑEÔEÐEÐEà!ð SØ—K’K¥¤§¢¨TÔ-=×-LÒ-LÑ-NÔ-NÐPVÔP]Ð_`Ñ aÔ aÑbÔbÐbÐbà—K’K¥¤§¢¨TÔ->ÀÄÈqÑ QÔ QÑRÔRÐRÑRØˆr3   c                ó,   — |                       |¦  «        S rc   )rö   rú   s     r4   r  z$Backend.get_custom_target_output_dirL  s   € ð ×"Ò" 6Ñ*Ô*Ð*r3   c                ó@   — t           j                             |¦  «        S rc   ©r‚   rƒ   r  )rR   r$  s     r4   Úget_normpath_targetzBackend.get_normpath_targetV  s   € åŒw×Ò Ñ'Ô'Ð'r3   c               ó‚  — g }|                      ¦   «         D ]§}t          |t          j        t          j        f¦  «        sŒ)|                      |                      |¦  «        ¦  «        }|sd}|r7t          j         	                    | j
                             ¦   «         |¦  «        }||vr|                     |¦  «         Œ¨|S )Nr	  )r  rµ   r   rï   ró   r$  r  r‚   rƒ   r„   rÞ   râ   rD  )rR   r‘   r)   rý   Úcustom_target_include_dirsr  Úidirs          r4   Úget_custom_target_dirszBackend.get_custom_target_dirsZ  sÇ   € à24Ð"Ø×-Ò-Ñ/Ô/ð 	8ð 	8ˆAõ ˜a¥%Ô"4µeÔ6MÐ!NÑOÔOð ØØ×+Ò+¨D×,MÒ,MÈaÑ,PÔ,PÑQÔQˆDØð Ø�Øð LÝ”w—|’| DÔ$4×$BÒ$BÑ$DÔ$DÀdÑKÔK�ØÐ5Ð5Ð5Ø*×1Ò1°$Ñ7Ô7Ð7øØ)Ð)r3   c               ór   — g }|                       |||¬¦  «        D ]}||                     |d¦  «        z  }Œ|S )Nrü   F)r(  r  )rR   r‘   r)   rý   Úincsr  s         r4   Ú"get_custom_target_dir_include_argsz*Backend.get_custom_target_dir_include_argsl  sN   € ð ˆØ×,Ò,¨V°XÈ]Ð,Ñ[Ô[ð 	8ð 	8ˆAØ�H×-Ò-¨a°Ñ7Ô7Ñ7ˆDˆDØˆr3   Úabsolute_outputsú.T.Tuple[T.List[str], T.List[str], T.List[str]]c           	     ó  ‡— | j         }d}|                      |¦  «        Š|ri| j                             ¦   «         }| j                             ¦   «         }t
          j                             | j                             ¦   «         ‰¦  «        Šˆfd„|                     ¦   «         D ¦   «         }|  	                    |¦  «        }g }|j
        D �]€}t          |t          j        ¦  «        r||                      |¦  «        z  }Œ6t          |t          j        ¦  «        rO|                     ¦   «         d         }	t
          j                             |                      |¦  «        |	¦  «        }�nÌt          |t           j        ¦  «        r\|                     | j         ¦  «        }|j        s|r7t
          j                             | j                             ¦   «         |¦  «        }�nVt          |t(          ¦  «        �rd|v r|                     d|¦  «        }d|v r|                     d|¦  «        }d|v r9|                     dt
          j                             ||j        ¦  «        ¦  «        }d|v r\|j        €d|j        ›d	�}
t3          |
¦  «        ‚t
          j                             ‰|j        ¦  «        }|                     d|¦  «        }d
|v rH|j        r|                      |¦  «        }n|                      |¦  «        }|                     d
|¦  «        }n"t9          d|› dt;          |¦  «        › �¦  «        ‚|                     |¦  «         �Œ‚t!          j        ||¦  «        }t!          j         ||¦  «        }d„ |D ¦   «         }|||fS )Nr	  c                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r2   rÃ  )r­  r  rs   s     €r4   r  z6Backend.eval_custom_target_command.<locals>.<listcomp>€  s)   ø€ ÐIÐIÐI¨q•2”7—<’< ¨Ñ*Ô*ÐIÐIÐIr3   r   z@SOURCE_ROOT@z@BUILD_ROOT@z@CURRENT_SOURCE_DIR@ú	@DEPFILE@zCustom target z/ has @DEPFILE@ but no depfile keyword argument.z@PRIVATE_DIR@z	Argument z is of unknown type c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r  r  )r  )r­  r  s     r4   r  z6Backend.eval_custom_target_command.<locals>.<listcomp>¿  s&   € Ð1Ð1Ð1¨ˆq�yŠy˜˜sÑ#Ô#Ð1Ð1Ð1r3   )!rå   r  rÞ   rã   râ   r‚   rƒ   r„   rñ   r  Úcommandrµ   r   rô   rð  rï   r   r   rs  r  r&   r  r  Údepfiler’   r   r*  r(  rè   rQ   rD  Úget_filenames_templates_dictÚsubstitute_values)rR   r‘   r,  Úsource_rootÚ
build_rootrÇ  Úinputsr„  r  Útmpr¤  Ú	dfilenameÚpdirrO  rs   s                 @r4   Úeval_custom_target_commandz"Backend.eval_custom_target_commandt  se  ø€ ð
 Ô'ˆØˆ
Ø×2Ò2°6Ñ:Ô:ˆØð 	LØÔ*×9Ò9Ñ;Ô;ˆKØÔ)×7Ò7Ñ9Ô9ˆJÝ”W—\’\ $Ô"2×"@Ò"@Ñ"BÔ"BÀFÑKÔKˆFØIÐIÐIÐI°F×4FÒ4FÑ4HÔ4HÐIÑIÔIˆØ×/Ò/°Ñ7Ô7ˆàˆØ”ð %	ñ %	ˆAÝ˜!�UÔ.Ñ/Ô/ð #QØ�t×5Ò5°aÑ8Ô8Ñ8�ØÝ˜A�uÔ1Ñ2Ô2ð  Qð —m’m‘o”o aÔ(�Ý”G—L’L ×!BÒ!BÀ1Ñ!EÔ!EÀsÑKÔK�‘Ý˜A�xœ}Ñ-Ô-ð QØ×%Ò% dÔ&7Ñ8Ô8�ØÔ(ð JÐ,<ð JÝœŸš TÔ%5×%CÒ%CÑ%EÔ%EÀqÑIÔI�Aùõ ˜A�sÑ#Ô#ñ QØ" aÐ'Ð'ØŸ	š	 /°;Ñ?Ô?�AØ! QÐ&Ð&ØŸ	š	 .°*Ñ=Ô=�AØ)¨QÐ.Ð.ØŸ	š	Ð"8½"¼'¿,º,À{ÐTZÔTaÑ:bÔ:bÑcÔc�AØ !Ð#Ð#Ø”~Ð-ð2¨v¬{ð 2ð 2ð 2˜å,¨SÑ1Ô1Ð1Ý "¤§¢¨V°V´^Ñ DÔ D�IØŸ	š	 +¨yÑ9Ô9�AØ" aÐ'Ð'ØÔ,ð CØ#×>Ò>¸vÑFÔF˜˜à#×:Ò:¸6ÑBÔB˜ØŸ	š	 /°4Ñ8Ô8�Aøå"Ð#O¨qÐ#OÐ#OÅdÈ1ÁgÄgÐ#OÐ#OÑPÔPÐPØ�JŠJ�q‰MŒMˆM‰MåÔ6°v¸wÑGÔGˆÝÔ(¨¨fÑ5Ô5ˆð& 2Ð1¨SÐ1Ñ1Ô1ˆØ�w Ð#Ð#r3   úbuild.RunTargetr§   c                óÈ  — |j         r|j         nt          j        ¦   «         }|j        r¹t	          | j                             ¦   «         dgz   ¦  «        }|                     d| j                             ¦   «         g¦  «         |                     d| j         	                    ¦   «         g¦  «         |                     d|j
        g¦  «         |                     d|g¦  «         |S )NÚ
introspectÚMESON_SOURCE_ROOTÚMESON_BUILD_ROOTÚMESON_SUBDIRÚMESONINTROSPECT)r¨   r   ÚEnvironmentVariablesÚdefault_envr   rÞ   r·  rà   rã   râ   r  )rR   r‘   r¨   Úintrospect_cmds       r4   Úget_run_target_envzBackend.get_run_target_envÂ  sÎ   € Ø"œJÐHˆfŒjˆj­EÔ,FÑ,HÔ,HˆØÔð 	9Ý& tÔ'7×'IÒ'IÑ'KÔ'KÈ|ÈnÑ'\Ñ]Ô]ˆNØ�GŠGÐ'¨$Ô*:×*IÒ*IÑ*KÔ*KÐ)LÑMÔMÐMØ�GŠGÐ&¨Ô)9×)GÒ)GÑ)IÔ)IÐ(JÑKÔKÐKØ�GŠG�N V¤] OÑ4Ô4Ð4Ø�GŠGÐ%¨Ð'7Ñ8Ô8Ð8Øˆ
r3   c                óf  — ddl m} t          | j                             ¦   «         dgz   ¦  «        }| j                             ¦   «         | j                             ¦   «         |dœ}| j        j        D ]?}d 	                    |j
        ¦  «        }t          j        d|›�¦  «          |||¦  «         Œ@d S )Nr
   )Úrun_exer?  )r@  rA  rC  ú zRunning postconf script )Úscripts.meson_exerI  r   rÞ   r·  rã   râ   r   Úpostconf_scriptsr„   r¦   r   Úlog)rR   rI  rF  r¨   r~  r’   s         r4   Úrun_postconf_scriptszBackend.run_postconf_scriptsÌ  sÇ   € Ø/Ð/Ð/Ð/Ð/Ð/Ý" 4Ô#3×#EÒ#EÑ#GÔ#GÈ<È.Ñ#XÑYÔYˆØ$(Ô$4×$CÒ$CÑ$EÔ$EØ#'Ô#3×#AÒ#AÑ#CÔ#CØ"0ðð ˆð
 ”Ô,ð 	ð 	ˆAØ—8’8˜AœJÑ'Ô'ˆDÝŒHÐ8°Ð8Ð8Ñ9Ô9Ð9ØˆG�A�s‰OŒOˆOˆOð	ð 	r3   r@   c           
     ó8  — | j                              t          j        d¦  «        }|€G| j                              ¦   «         rt          j        d¦  «         nt          j        d         d         g}| j         j	         
                    t          d¦  «        ¦  «        }t          |t          t          f¦  «        s
J d¦   «         ‚t          | j                              ¦   «         | j                              ¦   «         | j                              ¦   «         | j                              ¦   «         ||| j                              ¦   «         dgz   | j         j	        j        ¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |S )Nrv   zFCross file does not specify strip binary, result will not be stripped.r   r^   r;  r?  )rÞ   Úlookup_binary_entryr   r­  r®  r   rò   r   Údefaultsr  r  r   rµ   r&   r®   rZ   rã   râ   rÑ  Ú
get_libdirr·  r`   rØ  Úgenerate_target_installÚgenerate_header_installÚgenerate_man_installÚgenerate_emptydir_installÚgenerate_data_installÚgenerate_symlink_installÚgenerate_custom_install_scriptÚgenerate_subdir_install)rR   r]   Úumaskr5   s       r4   Úcreate_install_datazBackend.create_install_dataÙ  sã  € àÔ$×8Ò8½Ô9KÈWÑUÔUˆ	ØÐØÔ×.Ò.Ñ0Ô0ð :Ý”ÐeÑfÔfÐfÐfõ $œ_¨WÔ5°aÔ8Ð9�	àÔ Ô)×4Ò4µY¸Ñ5OÔ5OÑPÔPˆÝ˜%¥#¥s Ñ,Ô,Ð8Ð8¨jÑ8Ô8Ð8å˜Ô(×7Ò7Ñ9Ô9ØÔ(×6Ò6Ñ8Ô8ØÔ(×3Ò3Ñ5Ô5ØÔ(×3Ò3Ñ5Ô5Ø!ØØÔ(×:Ò:Ñ<Ô<À¸~ÑMØÔ(Ô1Ô9ñ;ô ;ˆð 	×#Ò# AÑ&Ô&Ð&Ø×$Ò$ QÑ'Ô'Ð'Ø×$Ò$ QÑ'Ô'Ð'Ø×!Ò! !Ñ$Ô$Ð$Ø×&Ò& qÑ)Ô)Ð)Ø×"Ò" 1Ñ%Ô%Ð%Ø×%Ò% aÑ(Ô(Ð(Ø×+Ò+¨AÑ.Ô.Ð.Ø×$Ò$ QÑ'Ô'Ð'Øˆr3   c                ó  — t           j                             | j                             ¦   «         d¦  «        }t          |d¦  «        5 }t          j        |                      ¦   «         |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzinstall.datr±  )	r‚   rƒ   r„   rÞ   r¾  rG  r¿  rÀ  r\  )rR   Úinstall_data_filerY  s      r4   Úcreate_install_data_filesz!Backend.create_install_data_filesù  s·   € ÝœGŸLšL¨Ô)9×)IÒ)IÑ)KÔ)KÈ]Ñ[Ô[ÐÝÐ# TÑ*Ô*ð 	;¨eÝŒK˜×0Ò0Ñ2Ô2°EÑ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   Á(A=Á=BÂBrs   c                ó$  — | j                              ¦   «         }t          || j                              ¦   «         ¦  «        }t          || j                              ¦   «         ¦  «        }t          || j                              ¦   «         ¦  «        }| j         j                             t          j	        d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚t          ||¦  «        }|r#t          ||t          |¦  «        j        ¦  «        nt          ||¦  «        }	||	j        v rdS ||	j        v r|	j        dv rdS |	j        dv rdS n,||	j        v rdS ||	j        v rdS d|	j        v rd	S d
|	j        v rd
S t!          j        d|	¦  «         d S )NÚ	localedirr;  Úruntime>   ú.aú.pcrÍ  >   r   rÿ  Úi18nzinstalled-testsrŸ  Ú	systemtapzFailed to guess install tag for)rÞ   rÑ  r	   Ú
get_bindirrR  Úget_includedirr  r  r   r   rµ   r&   r’   Úparentsr0  r  r   r`  )
rR   rr   rs   r[   Úbindirr\   ÚincdirÚ_ldirra  Ú	dest_paths
             r4   Úguess_install_tagzBackend.guess_install_tagþ  sž  € ØÔ!×,Ò,Ñ.Ô.ˆÝ�f˜dÔ.×9Ò9Ñ;Ô;Ñ<Ô<ˆÝ�f˜dÔ.×9Ò9Ñ;Ô;Ñ<Ô<ˆÝ�f˜dÔ.×=Ò=Ñ?Ô?Ñ@Ô@ˆØÔ Ô)×4Ò4µXÔ5GÈÑ5TÔ5TÑUÔUˆÝ˜%¥Ñ%Ô%Ð1Ð1 zÑ1Ô1Ð1Ý˜ Ñ'Ô'ˆ	Ø>DÐ]•D˜ ­¨e©¬Ô)9Ñ:Ô:Ð:Í$ÈvÐW\ÑJ]ÔJ]ˆ	Ø�YÔ&Ð&Ð&Ø�9Ø�yÔ(Ð(Ð(ØÔ =Ð0Ð0Ø�wØÔ! _Ð4Ð4Ø �yð 5à�yÔ(Ð(Ð(Ø�7Ø˜)Ô+Ð+Ð+Ø�6Ø )¤/Ð1Ð1Ø�7Ø˜IœOÐ+Ð+Ø�;ÝŒ
Ð4°iÑ@Ô@Ð@Øˆtr3   c                ó>  — | j                              ¦   «                              ¦   «         D �]o}|                     ¦   «         sŒ|                     ¦   «         \  }}}t          |¦  «        t          |                     ¦   «         ¦  «        }}|d|hvr>d}t          |                     |j	        ||                     ¦   «         |¦  «        ¦  «        ‚t          |j
        ¦  «        |k    sJ ‚|                     ¦   «         }	|d         }
|d         }t          |t           j        ¦  «        �r¶t          |t           j        ¦  «         }|o!|                     t!          d¦  «        ¦  «        }t          |t"          ¦  «        s
J d¦   «         ‚|
du�r~|j
        d         pt          |t           j        ¦  «        rdnd}|                     |j        ¦  «        }t)          |                      |¦  «        |
||||j        |j        |	|j        ||¬	¦  «        }|j                             |¦  «         |                     ¦   «         D ]Z\  }}}t8          j                             |
|¦  «        }t?          |||
|j        |d
¬¦  «        }|j                              |¦  «         Œ[t          |t           j!        t           j"        t           j#        f¦  «        �rB| $                    ¦   «         rŽ|r|
}n| j%         &                    ¦   «         }t)          |  '                    |¦  «        ||di tQ          ¦   «         d|	|j        t          |t           j"        ¦  «        d¬¦  «        }|j                             |¦  «         |sž| )                    ¦   «         rŠt8          j                             |  *                    |¦  «        | )                    ¦   «         ¦  «        }t)          ||
|di tQ          ¦   «         d|	|j        d
d¬¦  «        }|j                             |¦  «         |dk    rÍtW          |                     ¦   «         dd …         |dd …         |dd …         |j
        dd …         ¦  «        D ]ƒ\  }}}}|du rŒt8          j                             |  *                    |¦  «        |¦  «        }t)          |||di tQ          ¦   «         d |	|j        |¬¦
  «
        }|j                             |¦  «         Œ„�Œ³t          |t           j,        ¦  «        �r¡|dk    rÏ|dk    rÉ|
durÃtW          |                     ¦   «         |j
        ¦  «        D ]›\  }}|p|  -                    ||
¦  «        }t8          j                             |  *                    |¦  «        |¦  «        }t)          ||
|di tQ          ¦   «         d |	|j        |j.         |¬¦  «        }|j                             |¦  «         Œœ�Œ£tW          |                     ¦   «         |||j
        ¦  «        D ]¢\  }}}}|du rŒ|p|  -                    ||¦  «        }t8          j                             |  *                    |¦  «        |¦  «        }t)          |||di tQ          ¦   «         d |	|j        |j.         |¬¦  «        }|j                             |¦  «         Œ£�Œqd S )Nr@   zÅTarget {!r} has {} outputs: {!r}, but only {} "install_dir"s were found.
Pass 'false' for outputs that should not be installed and 'true' for
using the default installation directory for an output.r   rv   r;  FrÍ  rb  )r~   r   T)r“   rÐ   )r|   r~   ©r~   )/r   r  rO  Úshould_installÚget_install_dirrð   rñ   r   Úformatr’   Úinstall_tagÚget_custom_install_moderµ   rô   r  r  r   ru   Úget_link_deps_mappingr[   rq   rø   rx   ry   r{   rd   rD  Úget_aliasesr‚   rƒ   r„   r�   ri   r  ÚSharedModuler  r  rÞ   Úget_import_lib_dirr  rà   Úget_debug_filenamerö   Úziprï   rn  r  )rR   r5   rì   ÚoutdirsÚinstall_dir_namesÚcustom_install_dirÚnum_outdirsÚnum_outrý  rz   Úfirst_outdirÚfirst_outdir_namer   Úshould_stripr~   Úmappingsr  ÚaliasÚtor~  Úimplib_install_dirÚ
debug_fileÚoutputrs   rt   rÌ  s                             r4   rS  zBackend.generate_target_install  s·  € Ø”×'Ò'Ñ)Ô)×0Ò0Ñ2Ô2ð {	,ñ {	,ˆAØ×#Ò#Ñ%Ô%ð ØØ=>×=NÒ=NÑ=PÔ=PÑ:ˆGÐ&Ð(:å#& w¡<¤<µ°Q·]²]±_´_Ñ1EÔ1E˜ˆKØ 1 g ,Ð.Ð.ðN�õ % Q§X¢X¨a¬f°g¸q¿}º}¹¼ÐP[Ñ%\Ô%\Ñ]Ô]Ð]Ý�q”}Ñ%Ô%¨Ò0Ð0Ð0Ð0Ø×4Ò4Ñ6Ô6ˆLà" 1œ:ˆLØ 1°!Ô 4Ðõ ˜!�UÔ.Ñ/Ô/ñ i,õ !+¨1­eÔ.AÑ BÔ BÐB�	Ø(ÐM¨Q¯\ª\½)ÀGÑ:LÔ:LÑ-MÔ-M�Ý! ,µÑ5Ô5ÐAÐA°zÑAÔAÐAð   uÐ,Ñ,Øœ-¨Ô*Ðl½*ÀQÍÔH[Ñ:\Ô:\Ð/k¨w¨wÐbk�CØ ×6Ò6°q´xÑ@Ô@�HÝ)¨$×*BÒ*BÀ1Ñ*EÔ*EÀ|Ø*;Ø*6¸À!ÔBXØ*+¬/¸<ÈÌØ.1¸Yð	Hñ Hô H�Að
 ”I×$Ò$ QÑ'Ô'Ð'à*+¯-ª-©/¬/ð -ð -™˜˜r 3Ý "¤§¢¨\¸5Ñ AÔ A˜Ý.¨r°5¸,ÈÌÐVYÐimÐnÑnÔn˜Øœ
×)Ò)¨!Ñ,Ô,Ð,Ð,å! !¥eÔ&9½5Ô;MÍuÔO_Ð%`ÑaÔañ 0ð ×0Ò0Ñ2Ô2ð 0Ø1ð [ð 6BÐ 2Ð 2à59Ô5E×5XÒ5XÑ5ZÔ5ZÐ 2å 1°$×2VÒ2VÐWXÑ2YÔ2YØ2DÐFWØ27¸½S¹U¼UÀBÈØ23´,ÍÐTUÕW\ÔWiÑIjÔIjØ6=ð	!?ñ !?ô !?˜Að
 œI×,Ò,¨QÑ/Ô/Ð/à+ð 0°×0DÒ0DÑ0FÔ0Fð 0Ý)+¬¯ª°d×6IÒ6IÈ!Ñ6LÔ6LÈa×NbÒNbÑNdÔNdÑ)eÔ)e˜JÝ 1°*¸lØ2CØ27¸½S¹U¼UÀBØ2>ÀÄØ;?ÀWð	!Nñ !Nô !N˜Að
 œI×,Ò,¨QÑ/Ô/Ð/à ’?�?Ý<?ÀÇÂÁÄÐPQÐPRÐPRÔ@SÐU\Ð]^Ð]_Ð]_ÔU`ÐbsÐtuÐtvÐtvÔbwÐyzô  zGð  HIð  HJð  HJô  zKñ  =Lô  =Lð ,ð ,Ñ8˜ ¨°Sà! U˜?˜?Ø$ÝœGŸLšL¨×)<Ò)<¸QÑ)?Ô)?ÀÑHÔH˜Ý-¨a°¸ÀeÈRÕQTÑQVÔQVÐX\Ø.:¸A¼LØ25ð7ñ 7ô 7˜ð œ	×(Ò(¨Ñ+Ô+Ð+Ð+ùÝ˜A�uÔ1Ñ2Ô2ñ  ,ð  !Ò#Ð#¨°!ª¨Ø#¨5Ð0Ð0Ý+.¨q¯}ª}©¬ÀÄÑ+NÔ+Nð 0ð 0™K˜F CØ"%Ð"U¨×)?Ò)?ÀÈÑ)UÔ)U˜CÝ "¤§¢¨T×-@Ò-@ÀÑ-CÔ-CÀVÑ LÔ L˜AÝ 1°!°\ÐCTØ27¸½S¹U¼UÀDÈ,Ø23´,ÈQÔM_ÐI_Ø69ð!;ñ !;ô !;˜Að œI×,Ò,¨QÑ/Ô/Ð/Ð/ùå<?ÀÇÂÁÄÐQXÐZkÐmnÔmzÑ<{Ô<{ð 
,ð 
,Ñ8˜ ¨°Sà! U˜?˜?Ø$Ø!ÐK T×%;Ò%;¸FÀFÑ%KÔ%K˜ÝœGŸLšL¨×)<Ò)<¸QÑ)?Ô)?ÀÑHÔH˜Ý-¨a°¸Ø.3°R½¹¼ÀÀlØ./¬lÈÔI[ÐE[Ø25ð7ñ 7ô 7˜ð œ	×(Ò(¨Ñ+Ô+Ð+Ð+ùðw{	,ð {	,r3   c                ó¤   — | j         j        |_        |j        D ]6}|j        s-t          j        dd                     |j        ¦  «        ¦  «         Œ7d S )Nz/Failed to guess install tag for install script:rJ  )r   rj   r~   r   r`  r„   r¦   )rR   r5   r  s      r4   rY  z&Backend.generate_custom_install_script—  s^   € Ø œJÔ6ˆÔØÔ"ð 	dð 	dˆAØ”5ð dÝ”
ÐLÈcÏhÊhÐWXÔWaÑNbÔNbÑcÔcÐcøð	dð 	dr3   c           
     óø  — | j                              ¦   «         }| j                             ¦   «         }| j                              ¦   «         }| j                              ¦   «         }|D �]}|                     ¦   «         x}}|€[|                     ¦   «         }	|	€|}d}n@t          j	         
                    ||	¦  «        }t          j	         
                    d|	¦  «        }|                     ¦   «         D ]†}
t          |
t          ¦  «        st          d|
›d�¦  «        ‚|
                     ||¦  «        }t!          ||||                     ¦   «         |j        d¬¦  «        }|j                             |¦  «         Œ‡�Œd S )Nz{includedir}zInvalid header type z can't be installedrÍ  rp  )rÞ   rh  r   Úget_headersrã   râ   Úget_custom_install_dirÚget_install_subdirr‚   rƒ   r„   r  rµ   r   r   rý   r‹   ru  r{   re   rD  )rR   r5   Úincrootre   ÚsrcdirÚbuilddirÚhrs   rt   r  rÌ  Úabspathr  s                r4   rT  zBackend.generate_header_install�  sq  € ØÔ"×1Ò1Ñ3Ô3ˆØ”*×(Ò(Ñ*Ô*ˆàÔ!×0Ò0Ñ2Ô2ˆØÔ#×1Ò1Ñ3Ô3ˆØð 	$ñ 	$ˆAØ#$×#;Ò#;Ñ#=Ô#=Ð=ˆF�[Øˆ~Ø×-Ò-Ñ/Ô/�Ø�>Ø$�FØ"0�K�KåœWŸ\š\¨'°6Ñ:Ô:�FÝ"$¤'§,¢,¨~¸vÑ"FÔ"F�Kà—]’]‘_”_ð $ð $�Ý! !¥TÑ*Ô*ð [Ý(Ð)YÀÐ)YÐ)YÐ)YÑZÔZÐZØŸ/š/¨&°(Ñ;Ô;�Ý# G¨V°[À!×B[ÒB[ÑB]ÔB]Ð_`Ô_kÐqxÐyÑyÔy�Ø”	× Ò  Ñ#Ô#Ð#Ð#ñ$ð	$ð 	$r3   c           
     óÆ  — | j                              ¦   «         }| j                             ¦   «         }|D �]ª}|                     ¦   «         D �]‘}|                     d¦  «        d         }|                     ¦   «         }|€T|j        r*t          j	         
                    d|j        d|z   ¦  «        }n#t          j	         
                    dd|z   ¦  «        }|j        }|j        r|                     d|j        › �d¦  «        }|                     | j                              ¦   «         | j                              ¦   «         ¦  «        }	t          j	         
                    |t          j	                             |¦  «        ¦  «        }
|
                     d|¦  «        }t#          |	||
|                     ¦   «         |j        d¬¦  «        }|j                             |¦  «         �Œ“�Œ¬d S )Nr	  r¤  z{mandir}rf   rÐ   rp  )rÞ   Ú
get_mandirr   Úget_manr  rð  r�  Úlocaler‚   rƒ   r„   rr   r  rý   rã   râ   r…   r‹   ru  r{   rf   rD  )rR   r5   Úmanrootrf   rý  rÌ  Únumr  rr   ÚsrcabsÚdstnameÚdstabsr  s                r4   rU  zBackend.generate_man_installµ  sž  € ØÔ"×-Ò-Ñ/Ô/ˆØŒj× Ò Ñ"Ô"ˆØð 	 ñ 	 ˆAØ—]’]‘_”_ð  ñ  �Ø—g’g˜c‘l”l 2Ô&�Ø×1Ò1Ñ3Ô3�Ø�>Ø”xð GÝ!#¤§¢¨j¸!¼(ÀEÈCÁKÑ!PÔ!P˜˜å!#¤§¢¨j¸%À#¹+Ñ!FÔ!F˜Øœ�Ø”8ð >Ø!ŸMšM¨.¨a¬h¨.¨.¸"Ñ=Ô=�EØŸš¨Ô)9×)HÒ)HÑ)JÔ)JÈDÔL\×LjÒLjÑLlÔLlÑmÔm�Ýœ'Ÿ,š, v­r¬w×/?Ò/?ÀÑ/FÔ/FÑGÔG�Ø Ÿš¨°WÑ=Ô=�Ý# F¨F°G¸Q×=VÒ=VÑ=XÔ=XÐZ[ÔZfÐlqÐrÑrÔr�Ø”—’˜Q‘”�‘ñ ð	 ð 	 r3   c                óú   — | j                              ¦   «         }|D ]^}|j        p|                      |j        ¦  «        }t          |j        |j        |j        |¦  «        }|j         	                    |¦  «         Œ_d S rc   )
r   Úget_emptydirrt  rn  rƒ   rˆ   rz   r{   rg   rD  )rR   r5   rg   rè  r~   r  s         r4   rV  z!Backend.generate_emptydir_installÊ  s|   € Ø+/¬:×+BÒ+BÑ+DÔ+DˆØð 	!ð 	!ˆAØ”-ÐA 4×#9Ò#9¸!¼&Ñ#AÔ#AˆCÝ ¤¨¬¸¼ÀcÑJÔJˆAØŒJ×Ò˜aÑ Ô Ð Ð ð	!ð 	!r3   c                óÂ  — | j                              ¦   «         }| j                             ¦   «         }| j                             ¦   «         }|D �]�}t          |t           j        ¦  «        sJ ‚|j        }|j        }|sut          j
                             | j                             ¦   «         | j        j         j        ¦  «        }t          j
                             d| j        j         j        ¦  «        }t          |j        |j        ¦  «        D ]Ð\  }}	t          |t$          j        ¦  «        sJ ‚t          j
                             ||	¦  «        }
t          j
                             ||	¦  «        }|j        p|                      |
¦  «        }t-          |                     ||¦  «        |
||j        |j        ||j        ¬¦  «        }|j                             |¦  «         ŒÑ�Œ‘d S )Nz	{datadir}rÏ  )r   Úget_datarÞ   rã   râ   rµ   ÚDataÚinstall_dirÚinstall_dir_namer‚   rƒ   r„   Úget_datadirr¹   r    r{  r+   Úrenamer   r   rt  rn  r‹   rý   rz   r{   rŽ   rh   rD  )rR   r5   rh   r�  r‘  Úder  Úsubdir_nameÚsrc_fileÚdst_nameÚdst_absÚdstdir_namer~   r  s                 r4   rW  zBackend.generate_data_installÑ  sª  € ØŒz×"Ò"Ñ$Ô$ˆØÔ!×0Ò0Ñ2Ô2ˆØÔ#×1Ò1Ñ3Ô3ˆØð 	!ñ 	!ˆBÝ˜b¥%¤*Ñ-Ô-Ð-Ð-Ð-Ø”^ˆFØÔ-ˆKØð ]ÝœŸš dÔ&6×&BÒ&BÑ&DÔ&DÀdÔFVÔF\ÔFiÑjÔj�Ý œgŸlšl¨;¸Ô8HÔ8NÔ8[Ñ\Ô\�Ý&)¨"¬*°b´iÑ&@Ô&@ð !ð !Ñ"�˜(Ý! (­H¬MÑ:Ô:Ð:Ð:Ð:Ýœ'Ÿ,š, v¨xÑ8Ô8�Ý œgŸlšl¨;¸ÑAÔA�Ø”nÐG¨×(>Ò(>¸wÑ(GÔ(G�Ý# H×$:Ò$:¸6À8Ñ$LÔ$LÈgÐWbØ$&¤O°R´]ÈÐWYÔWcðeñ eô e�à”—’˜aÑ Ô Ð Ð ñ!ð	!ð 	!r3   c                óx  — | j                              ¦   «         }|D ]�}t          |t           j        ¦  «        sJ ‚|j        }t
          j                             ||j        ¦  «        }|j	        p|  
                    |¦  «        }t          |j        |||j        |¦  «        }|j                             |¦  «         Œžd S rc   )r   Úget_symlinksrµ   ÚSymlinkDatar¢  r‚   rƒ   r„   r’   rt  rn  r�   r‘   r{   ri   rD  )rR   r5   Úlinksr‚  r¢  Úname_absr~   r~  s           r4   rX  z Backend.generate_symlink_installå  s²   € Ø+/¬:×+BÒ+BÑ+DÔ+DˆØð 	!ð 	!ˆAÝ˜a¥Ô!2Ñ3Ô3Ð3Ð3Ð3Øœ-ˆKÝ”w—|’| K°´Ñ8Ô8ˆHØ”-ÐC 4×#9Ò#9¸(Ñ#CÔ#CˆCÝ" 1¤8¨X°{ÀAÄLÐRUÑVÔVˆAØŒJ×Ò˜aÑ Ô Ð Ð ð	!ð 	!r3   c           
     ó  — | j                              ¦   «         D �]ñ}|j        r| j                             ¦   «         }n| j                             ¦   «         }t          j                             ||j	        |j
        ¦  «                             d¦  «        }t          j                             | j                             ¦   «         |j        ¦  «        }t          j                             d|j        ¦  «        }|j        |j        k    r|j        }|j        szt          j                             |t          j                             |¦  «        ¦  «        }t          j                             |t          j                             |¦  «        ¦  «        }|j        p7|                      t          j                             |j        d¦  «        ¦  «        }t'          ||||j        |j        |j        |¦  «        }|j                             |¦  «         �Œód S )Nr  r�   Údummy)r   Úget_install_subdirsÚfrom_source_dirrÞ   rã   râ   r‚   rƒ   r„   Úsource_subdirÚinstallable_subdirÚrstriprÑ  r¢  r£  Ústrip_directoryr…   rt  rn  r•   rz   r–   r{   rk   rD  )	rR   r5   ÚsdÚfrom_dirÚsrc_dirÚdst_dirr©  r~   r  s	            r4   rZ  zBackend.generate_subdir_installï  sª  € Ø”*×0Ò0Ñ2Ô2ð 	(ñ 	(ˆBØÔ!ð <ØÔ+×:Ò:Ñ<Ô<��àÔ+×9Ò9Ñ;Ô;�Ý”g—l’l 8Ø#%Ô#3Ø#%Ô#8ñ:ô :ç:@º&À¹+¼+ð õ ”g—l’l 4Ô#3×#>Ò#>Ñ#@Ô#@Ø#%¤>ñ3ô 3ˆGå”w—|’| J°´Ñ?Ô?ˆHØŒ~ Ô!4Ò4Ð4ØÔ.�ØÔ%ð MÝœ'Ÿ,š, wµ´×0@Ò0@ÀÑ0IÔ0IÑJÔJ�Ýœ7Ÿ<š<¨µ"´'×2BÒ2BÀ7Ñ2KÔ2KÑLÔL�Ø”.Ða D×$:Ò$:½2¼7¿<º<ÈÌÐX_Ñ;`Ô;`Ñ$aÔ$aˆCÝ! '¨7°H¸b¼oÈrÌzÐ[]Ô[hÐjmÑnÔnˆAØÔ×$Ò$ QÑ'Ô'Ð'Ñ'ð%	(ð 	(r3   Ú	target_idú!T.List['TargetIntrospectionData']c                óø  ‡ ‡— t          |t          j        t          j        f¦  «        �rÐ|j        }g }|D ]ÊŠt          ‰t
          j        ¦  «        r%|‰                     ‰ j        ‰ j	        ¦  «        gz  }ŒAt          ‰t          ¦  «        r*|t          j                             ‰ j        ‰¦  «        gz  }Œ€t          ‰t          j        t          j        f¦  «        r$|ˆˆ fd„‰                     ¦   «         D ¦   «         z  }ŒËd„ |D ¦   «         }g }t          |t          j        ¦  «        rÉ|j        }|D ]¿Št          ‰t
          j        ¦  «        r%|‰                     ‰ j        ‰ j	        ¦  «        gz  }ŒAt          ‰t          ¦  «        r|‰gz  }Œ]t          ‰t          j        t          j        f¦  «        r|‰                     ¦   «         z  }Œ›t!          dt#          ‰¦  «        j        › d�¦  «        ‚d|g |g dœgS g S )aK  
        Returns a list of source dicts with the following format for a given target:
        [
            {
                "language": "<LANG>",
                "compiler": ["result", "of", "comp.get_exelist()"],
                "parameters": ["list", "of", "compiler", "parameters],
                "sources": ["list", "of", "all", "<LANG>", "source", "files"],
                "generated_sources": ["list", "of", "generated", "source", "files"]
            }
        ]

        This is a limited fallback / reference implementation. The backend should override this method.
        c                ó€   •— g | ]:}t           j                             ‰j        ‰                     ¦   «         |¦  «        ‘Œ;S r2   )r‚   rƒ   r„   r<   r  )r­  r  ÚjrR   s     €€r4   r  z2Backend.get_introspection_data.<locals>.<listcomp>  s7   ø€ Ð#mÐ#mÐ#mÐXY¥B¤G§L¢L°´ÀÇÂÁÄÐQRÑ$SÔ$SÐ#mÐ#mÐ#mr3   c                óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r2   r#  )r­  r~  s     r4   r  z2Backend.get_introspection_data.<locals>.<listcomp>  s(   € ÐDÐDÐD°1�2œ7×+Ò+¨AÑ.Ô.ÐDÐDÐDr3   zType "z;" is not supported in get_introspection_data. This is a bugÚunknown)r'   r)   r*   r+   r,   )rµ   r   rï   rô   r+   r   r   rý   r;   r<   r&   r‚   rƒ   r„   rñ   r2  rè   rQ   r.   )rR   r½  r‘   Úsource_list_rawÚsource_listr)   Útmp_compilerrÁ  s   `      @r4   Úget_introspection_datazBackend.get_introspection_data  s*  øø€ õ �f�uÔ1µ5Ô3DÐEÑFÔFñ 	Ø$œnˆOØˆKØ$ð nð n�Ý˜a¥¤Ñ/Ô/ð nØ A§O¢O°D´OÀTÄ^Ñ$TÔ$TÐ#UÑU�K�KÝ ¥3Ñ'Ô'ð nØ¥B¤G§L¢L°´À!Ñ$DÔ$DÐ#EÑE�K�KÝ ¥EÔ$6½Ô8IÐ#JÑKÔKð nØÐ#mÐ#mÐ#mÐ#mÐ#mÐ]^×]jÒ]jÑ]lÔ]lÐ#mÑ#mÔ#mÑm�KøØDÐD¸ÐDÑDÔDˆKà$&ˆHÝ˜&¥%Ô"4Ñ5Ô5ð 
CØ%œ~�Ø%ð Cð C�AÝ! !¥X¤]Ñ3Ô3ð CØ  Q§_¢_°T´_ÀdÄnÑ%UÔ%UÐ$VÑV˜˜Ý# A¥sÑ+Ô+ð CØ  Q C™˜˜Ý# A­Ô(9½5Ô;MÐ'NÑOÔOð CØ  A§M¢M¡O¤OÑ3˜˜å*ð  ,BµD¸±G´GÔ4Dð  ,Bð  ,Bð  ,Bñ  Cô  Cð  Cð &Ø$Ø Ø&Ø%'ðð ð ð ð ˆ	r3   c                ó  — t          j        ¦   «         }t          ¦   «         }t          ¦   «         }| j        j        t
          j                 }| j        j        t
          j                 }|                     ¦   «          o|                     ¦   «         }| j          	                    ¦   «          
                    ¦   «         D �]E}|                     ¦   «         o|                     ¦   «         d          }|j        t
          j        k    s|sŒJt          j                             | j                             ¦   «         |                      |¦  «        ¦  «        }	t'          |t           j        ¦  «        rh|                     |	¦  «         |                     ¦   «         s|                     ¦   «         r)|                     |                      |g ¦  «        ¦  «         �Œt'          |t           j        ¦  «        r|                     |	¦  «         �ŒG|r|                     |¦  «         |rÁ|r&|                     dt7          |¦  «        d¬¦  «         n™|                     ¦   «         s|                     ¦   «         r|                     |¦  «         n[|                     ¦   «         r$|                     dt7          |¦  «        ¦  «         n#|                     dt7          |¦  «        ¦  «         |r#|                     dt7          |¦  «        ¦  «         |S )Nr
   ÚWINEPATHú;)Ú	separatorÚDYLD_LIBRARY_PATHr¨  ÚPATH)r   rD  rà   rÞ   r”  r   r’  r­  r•  r  rO  rq  rr  r‘  r‚   rƒ   r„   râ   rö   rµ   r  rñ  r–  r»  r—  r  r¶  re  r´  )
rR   r¨   r¬   Úlibrary_pathsÚbuild_machineÚhost_machineÚ	need_winerì   Úin_default_dirÚtdirs
             r4   Ú
get_devenvzBackend.get_devenv6  s¾  € ÝÔ(Ñ*Ô*ˆÝ‘e”eˆÝ™œˆØÔ(Ô1µ-Ô2EÔFˆØÔ'Ô0µÔ1CÔDˆØ%×0Ò0Ñ2Ô2Ð2ÐP°|×7NÒ7NÑ7PÔ7Pˆ	Ø”×'Ò'Ñ)Ô)×0Ò0Ñ2Ô2ð 	(ñ 	(ˆAØ×-Ò-Ñ/Ô/ÐN¸×8IÒ8IÑ8KÔ8KÈAÔ8NÐ4NˆNØŒ}¥Ô 2Ò2Ð2¸.Ð2ØÝ”7—<’< Ô 0× >Ò >Ñ @Ô @À$×BUÒBUÐVWÑBXÔBXÑYÔYˆDÝ˜!�UÔ-Ñ.Ô.ð (ð —’ Ñ%Ô%Ð%Ø×*Ò*Ñ,Ô,ð T°×0FÒ0FÑ0HÔ0Hð Tð "×(Ò(¨×)KÒ)KÈAÈrÑ)RÔ)RÑSÔSÐSùÝ˜A�uÔ2Ñ3Ô3ð (ð ×!Ò! $Ñ'Ô'Ð'ùØð 	.ð
 × Ò  Ñ-Ô-Ð-Øð 	DØð DØ—’˜J­¨]Ñ(;Ô(;Às�ÑKÔKÐKÐKØ×(Ò(Ñ*Ô*ð D¨l×.DÒ.DÑ.FÔ.Fð DØ×"Ò" =Ñ1Ô1Ð1Ð1Ø×'Ò'Ñ)Ô)ð DØ—’Ð/µ°mÑ1DÔ1DÑEÔEÐEÐEà—’Ð-­t°MÑ/BÔ/BÑCÔCÐCØð 	3Ø�KŠK˜¥ [Ñ 1Ô 1Ñ2Ô2Ð2Øˆ
r3   r+   Ú_ALL_SOURCES_TYPEÚoutput_templúbuild.GeneratedListc                ó,  — |                      ¦   «         }t          j        |d         ¦  «        }|dd…         }|                      ||¦  «        }||                     dd¦  «        z  }||                     d¦  «        z  }||                     ¦   «         dgz   z  }||                      ||¦  «        z  }||                      ||¦  «        z  }t          j
        |||                     ¦   «         z   |gd¬¦  «        }	|	                     || j        ¦  «        S )	zŠ
        Some backends don't support custom compilers. This is a convenience
        method to convert a Compiler to a Generator.
        r   r@   Nz@OUTPUT@r0  z@INPUT@z@PLAINNAME@.d)r3  )Úget_exelistr   r¶   r€  Úget_dependency_gen_argsÚget_output_argsÚget_compile_only_argsr  r
  r   Ú	GeneratorÚ	to_nativeÚprocess_filesr¹   )
rR   r‘   r)   r+   rÖ  Úexelistr�  rÇ  r{  Ú	generators
             r4   Úcompiler_to_generatorzBackend.compiler_to_generatorc  s  € ð ×&Ò&Ñ(Ô(ˆÝÔ& w¨q¤zÑ2Ô2ˆØ�q�r�rŒ{ˆà×4Ò4°V¸XÑFÔFˆØ�H×4Ò4°ZÀÑMÔMÑMˆØ�H×,Ò,¨ZÑ8Ô8Ñ8ˆØ�H×2Ò2Ñ4Ô4¸	°{ÑBÑBˆØ�D×4Ò4°V¸XÑFÔFÑFˆØ�D×3Ò3°F¸HÑEÔEÑEˆÝ”O C¨°×0BÒ0BÑ0DÔ0DÑ)DÀ|ÀnÐ^mÐnÑnÔnˆ	Ø×&Ò& w°Ô0@ÑAÔAÐAr3   úbuild.CompileTargetc                ó°   — t          j        d|j        ¦  «        t          j        d|j        ¦  «        z   }|                      ||j        ||j        ¦  «        S )NrÕ  )rf  rg  r+   Ú	generatedrâ  r)   rÖ  )rR   r‘   Úall_sourcess      r4   Úcompile_target_to_generatorz#Backend.compile_target_to_generatorx  sL   € Ý”fÐ0°&´.ÑAÔAÅAÄFÐK^Ð`fÔ`pÑDqÔDqÑqˆØ×)Ò)¨&°&´/À;ÐPVÔPcÑdÔdÐdr3   )r   r¸   r¹   rº   rn   )rì   rí   rë   ru   rC   r&   )r‘   rí   rC   r&   )r‘   rþ   r)   rÿ   rý   ru   rC   r(   )r‘   rí   rC   r}   )rì   r  r  r  rC   r&   )r‘   r  rC   r&   )r‘   r&  rC   r&   )r‘   r&  r+  r,  r-  r&   rC   r&   )r‘   r&  r0  r&   r1  r®   rC   r2  )r‘   rþ   r7  r&   rC   r8  )r\  r&   r]  r&   rC   r&   )rÐ   )r‘   rþ   r`  r&   rC   ra  )rk  rl  r`  r&   rC   r(   )r‘   rþ   rk  rp  r`  r&   rC   ra  )r‘   rþ   rC   ru   )r‘   rþ   rC   r(   )NNNNNNF)r„  r…  r«   r}   r†  r‡  rˆ  r‰  rŠ  r‰  r¨   r‹  r~   r}   r³   ru   rC   rŒ  )NNNNFNF)r�  r¦  r¦   r§  r«   r}   r†  r‡  rˆ  r‰  rŠ  r‰  r¨  ru   r¨   r‹  r³   ru   rC   r©  )rC   rÎ  )r‘   rþ   rC   rÖ  )r\   r&   rN  rÜ  r¨   rÝ  rC   ru   )r‘   rþ   rC   râ  )rÇ  r(   rC   râ  )T)r‘   rþ   rü  ru   rC   rý  )r‘   r&  rC   r  )rr   r&   rC   r&   )r‘   rþ   r$  r%  rC   r&   )r.  r/  r`  r&   rC   r(   )r)   rÿ   r‘   rþ   rC   r(   )r‘   rþ   rç  r&   rG  r&   rC   r&   )rÇ  r(   rC   r(   )r‘   rT  r)   rÿ   rC   r(   )F)r‘   rþ   r)   rÿ   rY  ru   rC   rZ  )r)   rÿ   ri  r�  rC   r(   )r‘   r�  r†  r�  rC   r(   )rÓ  r˜  rC   ra   )rŸ  r   rC   r¡  )rŸ  r   rÓ  r˜  rC   ra   )rì   rí   r«   r}   rC   r(   )r5   rZ   rC   ra   )rC   r(   )rä  rå  rC   ra   )rí  rî  rC   r(   )rÇ  r(   r2  rñ  rC   r(   )rÇ  r(   rö  r&   r÷  r(   rC   r(   )rC   r   )r  ru   rC   r  )r
  r  rC   rý  )r‘   r  rC   rý  )r‘   r  rC   r(   )r‘   r  r  ru   rC   r(   )r$  r&   rC   r&   )r‘   r  r)   rÿ   rý   ru   rC   r(   )r‘   r  r,  ru   rC   r-  )r‘   r=  rC   r§   )rC   rZ   rc   )rr   r&   rs   r}   rC   r}   )r½  r&   r‘   r  rC   r¾  )rC   r§   )
r‘   rþ   r)   rÿ   r+   rÕ  rÖ  r&   rC   r×  )r‘   rã  rC   r×  )Wr.   r/   r0   r1   rš   ré   rø   rû   r  r
  r  r   rö   r#  r%  r(  r*  r/  r6  r[  Ústaticmethodrä   rj  ro  rc  r  rƒ  r¥  rÍ  rÕ  rÛ  rá  ré  ræ  r
  r  r#  r-  rx  rF  rP  rS  rX  r€  r…  rŽ  r—  rÑ  rÐ  r¿  rš  r±  rØ  rà  rã  rß  rð  rõ  rÿ  r  r	  r  r  r  r   r  r$  r(  r+  r<  rG  rN  r\  r_  rn  rS  rY  rT  rU  rV  rW  rX  rZ  rÇ  rÔ  râ  rç  r2   r3   r4   rÝ   rÝ     s¤  € € € € € € à*Ð*Ð*Ñ*ðPð Pð Pð Pð$Tð Tð Tð Tð swð >ð >ð >ð >ð >ð >ð`ð `ð `ð `ð uzð 9ð 9ð 9ð 9ð 9ð 9ð tyð 8ð 8ð 8ð 8ð 8ð 8ðXð Xð Xð Xð* €Y�tÐÑÔðð ð ñ Ôðð7ð 7ð 7ð 7ð!ð !ð !ð !ð^ð ^ð ^ð ^ðcð cð cð cð €Y�tÐÑÔðFð Fð Fñ ÔðFð Xð Xð Xð Xð(ð (ð (ð (ðT ðHð Hð Hñ „\ðHð3ð 3ð 3ð 3ð 3ð
-ð -ð -ð -ð -ðð ð ð ð< ðð ð ñ „\ððð ð ð ð (,ØAEØ(,Ø%)Ø:>Ø#'Ø!ðEQð EQð EQð EQð EQðR 9=ØRVØ9=Ø6:Ø5:ØKOØ-2ð_$ð _$ð _$ð _$ð _$ðB)ð )ð )ð )ðð ð ð ð ðð ð ñ „\ðð8ð 8ð 8ð 8ð ðð ð ñ „\ððB €Y�tÐÑÔðð ð ð ñ ÔððDð ð ð ð ðð ð ñ „\ðð Zð  Zð  Zð  ZðD0ð 0ð 0ð 0ðd"ð "ð "ð "ð ð  ð  ð  ð" ðð ð ñ „\ððð ð ð ð
`ð `ð `ð `ð `ðDð ð ð ðð ð ð ð"ð ð ð ð:Mð Mð Mð MðHð Hð Hð HðNð Nð Nð Nð`Eð Eð Eð Eðð ð ð ð&Gð Gð Gð Gð
ð 
ð 
ð 
ð&ð &ð &ð &ðwð wð wð wñ ð ð ð ñð ð ð ñð ð ð ñð ð ð ðñ ð ð ð ð  €Y�tÐÑÔñð ð ñ Ôðð €Y�tÐÑÔñð ð ñ Ôðñð ð ð ð:ñ ð ð ð ð +ð +ð +ð +ð €Y�tÐÑÔñ(ð (ð (ñ Ôð(ð 6;ð*ð *ñ *ð *ð *ð *ð( #(ðð ñ ð ð ð ð HMðL$ñ L$ð L$ð L$ð L$ñ\ð ð ð ðð ð ð ð €Y�qÐÑÔñð ð ñ Ôðð>;ð ;ð ;ð ;ñ
ñ ð ð ð ð6|,ð |,ð |,ð |,ð|dð dð dð dð$ð $ð $ð $ð0 ð  ð  ð  ð*!ð !ð !ð !ð!ð !ð !ð !ð(!ð !ð !ð !ð(ð (ð (ð (ñ*0ð 0ð 0ð 0ñd+ð +ð +ð +ñZBð Bð Bð Bñ*eð eð eð eð eð er3   rÝ   rœ   )r·   r&   r   r¸   r¹   rº   rC   r»   )NÚ
__future__r   Úcollectionsr   Údataclassesr   r   Ú	functoolsr   Ú	itertoolsr   Úpathlibr	   r²  ÚenumrÓ  r‚   r¿  rì  r´  Útypingrf  r¸  rÐ   r   r   r   r   r   rN  r   r   r   r   r   r   r   r   r   r   ÚTYPE_CHECKINGÚ_typingr   Úarglistr   r   rÞ   r   r¹   r   r   Úlinkersr    r!   r"   Útyping_extensionsr#   ÚListÚUnionrï   ró   r  rÕ  r%   r7  r:   ÚEnumr?   rV   rZ   rq   rˆ   r‹   r�   r•   rŸ   rÛ   rÝ   r2   r3   r4   ú<module>rù     sx  ðð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „?ð 'Ø/Ð/Ð/Ð/Ð/Ð/Ø&Ð&Ð&Ð&Ð&Ð&Ø$Ð$Ð$Ð$Ð$Ð$Ø)Ð)Ð)Ð)Ð)Ð)Ø/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø&Ð&Ð&Ð&Ð&Ð&Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1à+Ð+Ð+Ð+Ð+Ð+àœ˜qœw t¨UÔ-?ÀÔAXÐZ_ÔZmÐ'mÔnÔoÐð'ð 'ð 'ð 'ð ' )ñ 'ô 'ð 'ð ,Ð à
€ˆeÐÑÔðð ð ð ð ñ ô ñ Ôðð
ð ð ð ð �4”9ñ ô ð ð< €ˆeÐÑÔðð ð ð ð ñ ô ñ Ôðð €ˆeÐÑÔð=ð =ð =ð =ð =ñ =ô =ñ Ôð=ð, €ˆeÐÑÔðPð Pð Pð Pð Pñ Pô Pñ ÔðPð( €ˆeÐÑÔð ð  ð  ð  ð  ñ  ô  ñ Ôð ð €ˆeÐÑÔð&ð &ð &ð &ð &ñ &ô &ñ Ôð&ð €ˆeÐÑÔð ð  ð  ð  ð  ñ  ô  ñ Ôð ðð ð ð ð ˜ñ ô ð ð €ˆeÐÑÔðJð Jð Jð Jð Jñ Jô Jñ ÔðJð8ð ð ð ð ðFxeð xeð xeð xeð xeñ xeô xeð xeð xeð xer3   