§
    ƒnóc—4  ã                  óD  — 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	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mZmZ d d
lmZ d dlmZ d dlmZ ej        rd dlZd,d„Zd-d„Zd.d„Z G d„ d¦  «        Z d/d„Z!d0d„Z"d1d#„Z#d2d$„Z$d1d%„Z%d1d&„Z&d3d)„Z'd4d+„Z(dS )5é    )ÚannotationsN)Údefaultdict)ÚPathé   )Úmlog)Úmesonlib)Úcoredata)ÚMesonExceptionÚRealPathActionÚ	join_argsÚsetup_vsenv)Údetect_ninja)ÚUserArrayOption)ÚbuildÚvalueÚstrÚreturnúT.List[str]c                ó2   — t          d | dd¬¦  «        j        S )NT)Ú
allow_dupsÚ
user_input)r   r   )r   s    ú5/usr/lib/python3/dist-packages/mesonbuild/mcompile.pyÚ	array_argr   &   s   € Ý˜4 °4ÀDÐIÑIÔIÔOÐOó    Úbuilddirr   ÚNonec                ó`   — | dz  dz                        ¦   «         st          d| › d�¦  «        ‚d S )Nzmeson-privatezcoredata.datz3Current directory is not a meson build directory: `zÃ`.
Please specify a valid build dir or change the working directory to it.
It is also possible that the build directory was generated with an old
meson version. Please regenerate it in this case.)Úis_filer
   )r   s    r   Úvalidate_builddirr   )   s]   € Ø�Ñ&¨Ñ7×@Ò@ÑBÔBð RÝð QÐS[ð Qð Qð Qñ Rô Rð 	RðRð Rr   úT.Dict[str, T.List[dict]]c                óR  — | dz  dz  }|                      ¦   «         st          d|j        › d�¦  «        ‚|                     d¬¦  «        5 }t	          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   t          t          ¦  «        }|D ]}||d         xx         |gz  cc<   Œ|S )	za
    Converts a List of name-to-dict to a dict of name-to-dicts (since names are not unique)
    z
meson-infozintro-targets.jsonú`z.` is missing! Directory is not configured yet?zutf-8)ÚencodingNÚname)Úexistsr
   r$   ÚopenÚjsonÚloadr   Úlist)r   Úpath_to_introÚfÚschemaÚparsed_dataÚtargets         r   Úparse_introspect_datar/   0   s  € ð ˜|Ñ+Ð.BÑB€MØ×ÒÑ!Ô!ð eÝÐc Ô!3ÐcÐcÐcÑdÔdÐdØ	×	Ò	 WÐ	Ñ	-Ô	-ð °Ý”˜1‘”ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ �dÑ#Ô#€KØð 0ð 0ˆØ�F˜6”NÐ#Ð#Ô#¨ xÑ/Ð#Ð#Ñ#Ð#ØÐs   ÁA,Á,A0Á3A0c                  ó>   — e Zd ZdZdZdZdZd
d„Zedd„¦   «         Z	d	S )ÚParsedTargetNameÚ r.   r   c                óš  — || _         |                     dd¦  «        }t          |¦  «        dk    rB|d         | _        |                      | j        ¦  «        st          d|› d| j        › d�¦  «        ‚|d                              dd¦  «        }t          |¦  «        dk    r|d         | _        |d         | _        d S |d         | _        d S )Nú:r   úCan't invoke target `z`: unknown target type: `r"   r   ú/)Ú	full_nameÚrsplitÚlenÚtypeÚ_is_valid_typer
   Úpathr$   )Úselfr.   Úsplits      r   Ú__init__zParsedTargetName.__init__E   sÄ   € ØˆŒØ—’˜c 1Ñ%Ô%ˆÝˆu‰:Œ:˜Š>ˆ>Ø˜aœˆDŒIØ×&Ò& t¤yÑ1Ô1ð mÝ$Ð%k¸fÐ%kÐ%kÐ_cÔ_hÐ%kÐ%kÐ%kÑlÔlÐlà�a”—’  QÑ'Ô'ˆÝˆu‰:Œ:˜Š>ˆ>Ø˜aœˆDŒIØ˜aœˆDŒIˆIˆIà˜aœˆDŒIˆIˆIr   r:   r   Úboolc                ó   — h d£}| |v S )N>   ÚjarÚrunÚcustomÚ
executableÚshared_moduleÚshared_libraryÚstatic_library© )r:   Úallowed_typess     r   r;   zParsedTargetName._is_valid_typeT   s    € ð
ð 
ð 
ˆð �}Ð$Ð$r   N)r.   r   )r:   r   r   r@   )
Ú__name__Ú
__module__Ú__qualname__r7   r$   r:   r<   r?   Ústaticmethodr;   rI   r   r   r1   r1   ?   s\   € € € € € Ø€IØ€DØ€DØ€Dð!ð !ð !ð !ð ð%ð %ð %ñ „\ð%ð %ð %r   r1   r.   Úintrospect_dataúT.Dict[str, T.Any]c                ó„  — | j         |vrt          d| j        › d�¦  «        ‚|| j                  }g }|                     ¦   «         }| j        s
| j        s|}nœ|D ]™}|d         sˆ| j        r%| j        |d                              dd¦  «        k    s\| j        rV|d         dk    rJt          | j        ¦  «        t          |d         d	         ¦  «                             |¦  «        j	        k    rŒ“||gz  }Œš|st          d| j        › d�¦  «        ‚t          |¦  «        d
k    r›g }|D ]g}t          |d         d	         ¦  «                             |¦  «        }	|d                              dd¦  «        }
|                     d|	› d|
› �¦  «         Œhd                     |¦  «        }t          d| j        › d|› �¦  «        ‚|d	         S )Nr5   z`: target not foundÚ
subprojectr:   ú Ú_ÚfilenameÚno_namer   r   z- ./r4   ú
z/`: ambiguous name.Add target type and/or path:
)r$   r
   r7   Úresolver:   r<   Úreplacer   Úrelative_toÚparentr9   ÚappendÚjoin)r.   r   rO   Úintro_targetsÚfound_targetsÚresolved_bdirÚintro_targetÚsuggestionsÚiÚpÚtÚsuggestions_strs               r   Úget_target_from_intro_datarg   b   s  € Ø„{˜/Ð)Ð)ÝÐ[°fÔ6FÐ[Ð[Ð[Ñ\Ô\Ð\à# F¤KÔ0€MØ€Mà×$Ò$Ñ&Ô&€MàŒ;ð 
,˜vœ{ð 
,Ø%ˆˆà)ð 	,ð 	,ˆLØ˜\Ô*ð Ø”[ðØ%+¤[°LÀÔ4H×4PÒ4PÐQTÐVYÑ4ZÔ4ZÒ%ZÐ%ZØ”[ð &[à(¨Ô4¸	ÒAÐAÝ  ¤Ñ-Ô-µ°lÀ:Ô6NÈqÔ6QÑ1RÔ1R×1^Ò1^Ð_lÑ1mÔ1mÔ1tÒtÐtØØ˜l˜^Ñ+ˆMˆMàð 
QÝÐ[°fÔ6FÐ[Ð[Ð[Ñ\Ô\Ð\Ý	ˆ]Ñ	Ô	˜aÒ	Ð	Ø#%ˆØð 	/ð 	/ˆAÝ�Q�z”] 1Ô%Ñ&Ô&×2Ò2°=ÑAÔAˆAØ�&”	×!Ò! # sÑ+Ô+ˆAØ×Ò˜~ a˜~˜~¨!˜~˜~Ñ.Ô.Ð.Ð.ØŸ)š) KÑ0Ô0ˆÝð P°fÔ6Fð Pð PØ>MðPð Pñ Qô Qð 	Qð ˜ÔÐr   Údictc                óv   ‡— t          | ‰|¦  «        }|d         dk    r| j        gS ˆfd„|d         D ¦   «         S )Nr:   rC   c                ó’   •— g | ]C}t          t          |¦  «                             ‰                     ¦   «         ¦  «        ¦  «        ‘ŒDS rI   )r   r   rZ   rX   )Ú.0Úout_filer   s     €r   ú
<listcomp>z/generate_target_names_ninja.<locals>.<listcomp>‹   sA   ø€ ÐmÐmÐmÈ••D˜‘N”N×.Ò.¨x×/?Ò/?Ñ/AÔ/AÑBÔBÑCÔCÐmÐmÐmr   rU   )rg   r$   )r.   r   rO   ra   s    `  r   Úgenerate_target_names_ninjarn   …   sO   ø€ Ý-¨f°hÀÑPÔP€Là�FÔ˜uÒ$Ð$Ø”ˆ}ÐàmÐmÐmÐmÐT`ÐakÔTlÐmÑmÔmÐmr   Úoptionsú'argparse.Namespace'ú2T.Tuple[T.List[str], T.Optional[T.Dict[str, str]]]c                ó¾  — t          ¦   «         }|€t          d¦  «        ‚|}|                     d¦  «        s)|                     d|                     ¦   «         g¦  «         | j        dk    r)|                     dt          | j        ¦  «        g¦  «         | j        dk    r)|                     dt          | j        ¦  «        g¦  «         | j        r| 	                    d¦  «         || j
        z  }| j        rJt          |¦  «        }| j        D ]3}|                     t          t          |¦  «        ||¦  «        ¦  «         Œ4| j        r| 	                    d¦  «         |d fS )	NzCannot find ninja.ú.ú-Cr   ú-jú-lú-vÚclean)r   r
   ÚsamefileÚextendÚas_posixÚjobsr   Úload_averageÚverboser\   Ú
ninja_argsÚtargetsr/   rn   r1   rx   )ro   r   ÚrunnerÚcmdÚ
intro_datare   s         r   Úget_parsed_args_ninjar„   �   se  € Ý‰^Œ^€FØ€~ÝÐ1Ñ2Ô2Ð2à
€CØ×Ò˜SÑ!Ô!ð 0Ø�
Š
�D˜(×+Ò+Ñ-Ô-Ð.Ñ/Ô/Ð/ð „|�aÒÐØ�
Š
�D�#˜gœlÑ+Ô+Ð,Ñ-Ô-Ð-ØÔ˜aÒÐØ�
Š
�D�#˜gÔ2Ñ3Ô3Ð4Ñ5Ô5Ð5à„ð Ø�
Š
�4ÑÔÐàˆ7ÔÑ€Cð „ð _Ý*¨8Ñ4Ô4ˆ
Ø”ð 	_ð 	_ˆAØ�JŠJÕ2Õ3CÀAÑ3FÔ3FÈÐR\Ñ]Ô]Ñ^Ô^Ð^Ð^Ø„}ð Ø�
Š
�7ÑÔÐà�ˆ9Ðr   c                ó`  — t          | ||¦  «        }|d         dk    s
J d¦   «         ‚t          j        dd|d         ¦  «        }t          |d         d         ¦  «                             |                     ¦   «         ¦  «        j        }|t          d	¦  «        k    rt          ||z  ¦  «        }|S )
Nr:   rC   z9Should not reach here: `run` targets must be handle abovez[\%\$\@\;\.\(\)']rT   ÚidrU   r   rs   )rg   ÚreÚsubr   rZ   rX   r[   r   )r.   r   rO   ra   Útarget_nameÚrel_paths         r   Úgenerate_target_name_vsr‹   ¬   sª   € Ý-¨f°hÀÑPÔP€Là˜Ô 5Ò(Ð(Ð(Ð*eÑ(Ô(Ð(õ ”&Ð-¨s°LÀÔ4FÑGÔG€KÝ�L Ô,¨QÔ/Ñ0Ô0×<Ò<¸X×=MÒ=MÑ=OÔ=OÑPÔPÔW€HØ•4˜‘9”9ÒÐÝ˜( [Ñ0Ñ1Ô1ˆØÐr   c                ó  ‡‡
— t          ‰                     d¦  «        ¦  «        }t          |¦  «        dk    s
J d¦   «         ‚|d         }dg}| j        �r3t	          ‰¦  «        Š
t          ˆˆ
fd„| j        D ¦   «         ¦  «        }|r´t          | j        ¦  «        dk    rt          d¦  «        ‚t          t          | j        d         ¦  «        ‰‰
¦  «        }t          |d         d         ¦  «        j
        }|d	                     |d
         ¦  «        z  }|t          |                     ¦   «         ¦  «        gz  }nr|t          |                     ¦   «         ¦  «        gz  }|                     ˆˆ
fd„| j        D ¦   «         ¦  «         n%|t          |                     ¦   «         ¦  «        gz  }| j        r|                     dg¦  «         | j        dk    r|                     d| j        › �¦  «         n|                     d¦  «         | j        rt'          j        d¦  «         | j        s|                     d¦  «         || j        z  }t.          j                             ¦   «         }	|	                     dd ¦  «         ||	fS )Nz*.slnr   z$More than one solution in a project?r   Úmsbuildc              3  óh   •K  — | ],}t          t          |¦  «        ‰‰¦  «        d          dk    V — Œ-dS )r:   rC   N)rg   r1   ©rk   re   r   rƒ   s     €€r   ú	<genexpr>z%get_parsed_args_vs.<locals>.<genexpr>Â   sX   øè è € ð &ð &àõ 'Õ'7¸Ñ':Ô':¸HÀjÑQÔQÐRXÔYÐ]bÒbð&ð &ð &ð &ð &ð &r   zPOnly one target may be specified when `run` target type is used on this backend.rU   z
{}.vcxprojr†   c           	     ór   •— g | ]3}d                       t          t          |¦  «        ‰‰¦  «        ¦  «        ‘Œ4S )z
-target:{})Úformatr‹   r1   r�   s     €€r   rm   z&get_parsed_args_vs.<locals>.<listcomp>Ô   sS   ø€ ð  Jð  Jð  JÐtu˜×+Ò+Õ,CÕDTÐUVÑDWÔDWÐYaÐcmÑ,nÔ,nÑoÔoð  Jð  Jð  Jr   z-target:Cleanz-maxCpuCount:z-maxCpuCountz6Msbuild does not have a load-average switch, ignoring.z-verbosity:minimalÚPLATFORM)r)   Úglobr9   r€   r/   Úanyr
   rg   r1   r   r[   r’   r   rX   rz   rx   r|   r\   r}   r   Úwarningr~   Úvs_argsÚosÚenvironÚcopyÚpop)ro   r   ÚslnsÚslnr‚   Úhas_run_targetra   Úproj_dirÚprojÚenvrƒ   s    `        @r   Úget_parsed_args_vsr¢   ¹   s²  øø€ Ý�—’˜gÑ&Ô&Ñ'Ô'€DÝˆt‰9Œ9˜Š>ˆ>ˆ>ÐA‰>Œ>ˆ>Ø
ˆqŒ'€Càˆ+€Cà„ñ $Ý*¨8Ñ4Ô4ˆ
Ýð &ð &ð &ð &ð &à”_ð&ñ &ô &ñ &ô &ˆð ð 	Kõ �7”?Ñ#Ô# aÒ'Ð'Ý$Ð%wÑxÔxÐxÝ5Õ6FÀwÄÐWXÔGYÑ6ZÔ6ZÐ\dÐfpÑqÔqˆLÝ˜L¨Ô4°QÔ7Ñ8Ô8Ô?ˆHØ˜L×/Ò/°¸TÔ0BÑCÔCÑCˆDØ•C˜Ÿš™œÑ'Ô'Ð(Ñ(ˆCˆCà•C˜Ÿš™œÑ&Ô&Ð'Ñ'ˆCØ�JŠJð  Jð  Jð  Jð  Jð  Jð  zAô  zIð  Jñ  Jô  Jñ  Kô  Kð  Kð  Kà•�C—K’K‘M”MÑ"Ô"Ð#Ñ#ˆà„}ð &Ø�
Š
�OÐ$Ñ%Ô%Ð%ð „|�aÒÐØ�
Š
Ð1 7¤<Ð1Ð1Ñ2Ô2Ð2Ð2à�
Š
�>Ñ"Ô"Ð"àÔð OÝŒÐMÑNÔNÐNàŒ?ð )Ø�
Š
Ð'Ñ(Ô(Ð(àˆ7Œ?Ñ€Cõ Œ*�/Š/Ñ
Ô
€CØ‡G‚GˆJ˜ÑÔÐà�ˆ8€Or   c                óÜ  — d}t          j        |¦  «        st          d¦  «        ‚t          j        t          |¦  «        ¦  «         |dg}| j        r| j        D ]	}|d|gz  }Œ
| j        r| j        r|dgz  }n|ddgz  }|dgz  }| j        dk    r)| 	                    d	t          | j        ¦  «        g¦  «         | j
        dk    rt          j        d
¦  «         | j        r	 || j        z  }|d fS )NÚ
xcodebuildz.Cannot find xcodebuild, did you install XCode?z-parallelizeTargetsz-targetrx   z-alltargetsz-UseNewBuildSystem=FALSEr   z-jobsz8xcodebuild does not have a load-average switch, ignoring)ÚshutilÚwhichr
   r˜   Úchdirr   r€   rx   r|   rz   r}   r   r–   r~   Ú
xcode_args)ro   r   r�   r‚   re   s        r   Úget_parsed_args_xcoder©   ð   s)  € Ø€FÝŒ<˜ÑÔð OÝÐMÑNÔNÐNõ „H�S�‰]Œ]ÑÔÐàÐ(Ð
)€Cà„ð "Ø”ð 	"ð 	"ˆAØ�I˜q�>Ñ!ˆCˆCà„}ð ,ØŒ?ð 	,Ø�G�9ÑˆCˆCà�M 7Ð+Ñ+ˆCàÐ*Ð+Ñ+ˆà„|�aÒÐØ�
Š
�G�S ¤Ñ.Ô.Ð/Ñ0Ô0Ð0àÔ˜aÒÐÝŒÐOÑPÔPÐPà„ð ð 	àˆ7ÔÑ€CØ�ˆ9Ðr   Úparserú'argparse.ArgumentParser'c                ó  — |                       ddddd¬¦  «         |                       ddd	¬
¦  «         |                       ddt          d¬¦  «         |                       ddddt          d¬¦  «         |                       ddddt          d¬¦  «         |                       dddd¬
¦  «         |                       dt          g d¬¦  «         |                       dt          g d¬¦  «         |                       d t          g d!¬¦  «         dS )"zAdd compile specific arguments.r€   ÚTARGETÚ*Nz^Targets to build. Target has the following format: [PATH_TO_TARGET/]TARGET_NAME[:TARGET_TYPE].)ÚmetavarÚnargsÚdefaultÚhelpz--cleanÚ
store_truezClean the build directory.)Úactionr²   rt   Úwdz#directory to cd into before running)Údestr´   r²   ru   z--jobsÚstorer   zjThe number of worker jobs to run (if supported). If the value is less than 1 the build program will guess.)r´   r±   r:   r²   rv   z--load-averagez:The system load average to try to maintain (if supported).rw   z	--verbosezShow more verbose output.z--ninja-argsz?Arguments to pass to `ninja` (applied only on `ninja` backend).)r:   r±   r²   z	--vs-argsz>Arguments to pass to `msbuild` (applied only on `vs` backend).z--xcode-argszDArguments to pass to `xcodebuild` (applied only on `xcode` backend).)Úadd_argumentr   ÚintÚfloatr   )rª   s    r   Úadd_argumentsr»     sš  € à
×ÒØØØØØmð ñ oô oð oð ×ÒØØØ)ð ñ ô ð ð
 ×Ò˜ 4µØBð ñ Dô Dð Dð ×ÒØˆhØØÝØyð ñ ô ð ð ×ÒØÐØØÝØIð ñ ô ð ð ×ÒØˆkØØ(ð ñ ô ð ð
 ×ÒØÝØØNð	 ñ ô ð ð ×ÒØÝØØMð	 ñ ô ð ð ×ÒØÝØØSð	 ñ ô ð ð ð r   r¹   c                óü  — t          | j        ¦  «        }t          |¦  «         | j        r| j        rt          d¦  «        ‚t          j        | j        ¦  «        }t          j        | j        ¦  «        }t          |j
        ¦  «        }|r't          j        t          j        d¦  «        d¦  «         g }d }|                     t          j        d¦  «        ¦  «        }t#          |t$          ¦  «        sJ ‚t          j        t          j        d¦  «        d|¦  «         |dk    rt'          | |¦  «        \  }}nV|                     d¦  «        rt+          | |¦  «        \  }}n-|dk    rt-          | |¦  «        \  }}nt          d	|› d
�¦  «        ‚t          j        t          j        d¦  «        dt/          |¦  «        ¦  «         t          j        |t2          j        j        t2          j        j        |¬¦  «        ^}}	|j        S )Nz3`TARGET` and `--clean` can't be used simultaneouslyzINFO:z1automatically activated MSVC compiler environmentÚbackendzautodetecting backend asÚninjaÚvsÚxcodez	Backend `zR` is not yet supported by `compile`. Use generated project files directly instead.z#calculating backend command to run:)ÚstdoutÚstderrr¡   )r   rµ   r   r€   rx   r
   r	   r(   r   r   Ú
need_vsenvr   ÚlogÚgreenÚ
get_optionr   Ú	OptionKeyÚ
isinstancer   r„   Ú
startswithr¢   r©   r   Ú
Popen_safeÚsysrÁ   ÚbufferrÂ   Ú
returncode)
ro   ÚbdirÚcdataÚbÚvsenv_activer‚   r¡   r½   rd   rT   s
             r   rC   rC   J  sÞ  € Ý�”
ÑÔ€DÝ�dÑÔÐØ„ð U˜7œ=ð UÝÐSÑTÔTÐTåŒM˜'œ*Ñ%Ô%€EÝŒ
�7”:ÑÔ€AÝ˜qœ|Ñ,Ô,€LØð [ÝŒ•”˜GÑ$Ô$Ð&YÑZÔZÐZà
€CØ
€Cà×Ò�xÔ1°)Ñ<Ô<Ñ=Ô=€GÝ�g�sÑ#Ô#Ð#Ð#Ð#Ý„H�TŒZ˜Ñ Ô Ð"<¸gÑFÔFÐFØ�'ÒÐÝ(¨°$Ñ7Ô7‰ˆˆSˆSØ	×	Ò	˜DÑ	!Ô	!ð uÝ% g¨tÑ4Ô4‰ˆˆSˆSØ	�GÒ	Ð	Ý(¨°$Ñ7Ô7‰ˆˆSˆSåØs˜ÐsÐsÐsñuô uð 	uõ 	„H�TŒZ˜Ñ Ô Ð"GÍÐSVÉÌÑXÔXÐXÝÔ ­C¬JÔ,=ÅcÄjÔFWÐ]`ÐaÑaÔa€E€AˆàŒ<Ðr   )r   r   r   r   )r   r   r   r   )r   r   r   r    )r.   r1   r   r   rO   rP   r   rP   )r.   r1   r   r   rO   rh   r   r   )ro   rp   r   r   r   rq   )r.   r1   r   r   rO   rh   r   r   )rª   r«   r   r   )ro   rp   r   r¹   ))Ú
__future__r   r˜   r'   r‡   rË   r¥   ÚtypingÚTÚcollectionsr   Úpathlibr   r2   r   r   r	   r
   r   r   r   Úmesonbuild.environmentr   Úmesonbuild.coredatar   Ú
mesonbuildr   ÚTYPE_CHECKINGÚargparser   r   r/   r1   rg   rn   r„   r‹   r¢   r©   r»   rC   rI   r   r   ú<module>rÜ      s;  ðð #Ð "Ð "Ð "Ð "Ð "à 5à 	€	€	€	Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ /Ð /Ð /Ð /Ð /Ð /Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à„?ð Ø€O€O€OðPð Pð Pð PðRð Rð Rð Rðð ð ð ð!%ð !%ð !%ð !%ð !%ñ !%ô !%ð !%ðF!ð !ð !ð !ðFnð nð nð nðð ð ð ð>ð ð ð ð5ð 5ð 5ð 5ðn"ð "ð "ð "ðH4ð 4ð 4ð 4ðlð ð ð ð ð r   