§
    ‹ã÷c¸)  ã                  óÚ  — d dl mZ d dlZd dl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 ddlmZ ej        r4dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  G d„ d¦  «        Z  G d„ de¦  «        Z! G d„ de!¦  «        Z"ej#         G d„ d¦  «        ¦   «         Z$ G d„ de!¦  «        Z% G d„ de%¦  «        Z& G d„ de%¦  «        Z'd„ Z( G d „ d!¦  «        Z)dS )"é    )ÚannotationsNé   )Úmesonlib)ÚIncludeDirs)ÚnoKwargsÚ	noPosargs)ÚrelpathÚHoldableObjectÚMachineChoice)ÚExternalProgram)Úbuild)ÚInterpreter)ÚMachineHolder)ÚTYPE_varÚTYPE_kwargs)ÚOverrideProgram)ÚWrapMode)ÚEnvironmentVariablesÚ
Executable)Ú
Dependencyc                  ó®   — e Zd ZdZd:d„Zd;d<d„Zddddej        fd=d„Z	 	 d>d?d"„Z		 	 d@dAd%„Z
	 	 	 dBdCd-„Zd.ej        ddfdDd4„Zd.ej        ddfdEd5„ZdFd9„ZdS )GÚModuleStatezÊObject passed to all module methods.

    This is a WIP API provided to modules, it should be extended to have everything
    needed so modules does not touch any other part of Meson internal APIs.
    Úinterpreterú'Interpreter'ÚreturnÚNonec                ó$  — || _         |j                             ¦   «         | _        t	          |j                             ¦   «         |j                             ¦   «         ¦  «        | _        |j        | _        |j        | _        |j	        | _	        |j
        | _
        |j        | _        |j        j        | _        |j        j        |j                 j        | _        |j        | _        |j        j        | _        |j        j        | _        |j                             ¦   «         | _        |j                             ¦   «         | _        |j        j        j        | _        |j        j        j                             |j        i ¦  «        | _        t;          j        d|j        d         ¦  «        j         | _!        t;          j        d|j        d         ¦  «        j         | _"        t;          j        d|j        d         ¦  «        j         | _#        |j$        | _$        d S )Nr   Úbuild_machineÚhost_machineÚtarget_machine)%Ú_interpreterÚenvironmentÚget_source_dirÚsource_rootr	   Úget_build_dirÚbuild_to_srcÚ
subprojectÚsubdirÚroot_subdirÚcurrent_linenor   Úproject_nameÚdep_manifestÚactive_projectnameÚversionÚproject_versionÚbackendÚtargetsÚdataÚget_headersÚheadersÚget_manÚmanÚglobal_argsÚhostÚprojects_argsÚgetÚproject_argsÚTÚcastÚbuiltinÚheld_objectr   r   r    Úcurrent_node)Úselfr   s     ú=/usr/lib/python3/dist-packages/mesonbuild/modules/__init__.pyÚ__init__zModuleState.__init__,   s«  € à'ˆÔà&Ô2×AÒAÑCÔCˆÔÝ# KÔ$;×$JÒ$JÑ$LÔ$LØ$/Ô$;×$IÒ$IÑ$KÔ$KñMô MˆÔà%Ô0ˆŒØ!Ô(ˆŒØ&Ô2ˆÔØ)Ô8ˆÔØ&Ô2ˆÔØ'Ô-Ô:ˆÔØ*Ô0Ô=¸kÔ>\Ô]ÔeˆÔð #Ô*ˆŒØ"Ô(Ô0ˆŒØÔ%Ô*ˆŒ	Ø"Ô(×4Ò4Ñ6Ô6ˆŒØÔ$×,Ò,Ñ.Ô.ˆŒØ&Ô,Ô8Ô=ˆÔØ'Ô-Ô;Ô@×DÒDÀ[ÔE[Ð]_Ñ`Ô`ˆÔÝœV O°[Ô5HÈÔ5YÑZÔZÔfˆÔÝœF ?°KÔ4GÈÔ4WÑXÔXÔdˆÔÝœf _°kÔ6IÐJZÔ6[Ñ\Ô\ÔhˆÔØ'Ô4ˆÔÐÐó    ú-IÚinclude_dirsú+T.Iterable[T.Union[str, build.IncludeDirs]]ÚprefixÚstrúT.List[str]c                ó’  ‡— |sg S | j                              ¦   «         }| j                              ¦   «         }g }|D ]Š}t          |t          ¦  «        r|‰› |› �gz  }Œ"|                     ˆfd„|                     ||¦  «        D ¦   «         ¦  «         |                     ˆfd„|                     ¦   «         D ¦   «         ¦  «         Œ‹|S )Nc                ó   •— g | ]}‰› |› �‘Œ	S © rM   ©Ú.0ÚirH   s     €rB   ú
<listcomp>z0ModuleState.get_include_args.<locals>.<listcomp>T   s!   ø€ Ð _Ð _Ð _°A F ¨A  Ð _Ð _Ð _rD   c                ó   •— g | ]}‰› |› �‘Œ	S rM   rM   rN   s     €rB   rQ   z0ModuleState.get_include_args.<locals>.<listcomp>U   s!   ø€ Ð UÐ UÐ U°A F ¨A  Ð UÐ UÐ UrD   )r"   r#   r%   Ú
isinstancerI   ÚextendÚto_string_listÚget_extra_build_dirs)rA   rF   rH   ÚsrcdirÚbuilddirÚdirs_strÚdirss     `    rB   Úget_include_argszModuleState.get_include_argsH   sî   ø€ Øð 	ØˆIàÔ!×0Ò0Ñ2Ô2ˆØÔ#×1Ò1Ñ3Ô3ˆà "ˆØ ð 	Wð 	WˆDÝ˜$¥Ñ$Ô$ð WØ Ð.¨Ð.Ð.Ð/Ñ/��à—’Ð _Ð _Ð _Ð _¸×9LÒ9LÈVÐU]Ñ9^Ô9^Ð _Ñ _Ô _Ñ`Ô`Ð`Ø—’Ð UÐ UÐ UÐ U¸×9RÒ9RÑ9TÔ9TÐ UÑ UÔ UÑVÔVÐVÐVàˆrD   TNFÚprogúT.Union[str, T.List[str]]ÚrequiredÚboolÚversion_funcú0T.Optional[T.Callable[['ExternalProgram'], str]]ÚwantedúT.Optional[str]ÚsilentÚfor_machiner   ú'ExternalProgram'c                óB   — | j                              ||||||¬¦  «        S )N)r^   r`   rb   rd   re   )r!   Úfind_program_impl)rA   r\   r^   r`   rb   rd   re   s          rB   Úfind_programzModuleState.find_programY   s6   € ð Ô ×2Ò2°4À(ÐYeØ:@ÈÐ]hð 3ñ jô jð 	jrD   ÚnameÚdepnameÚvarnameú9T.Union['Executable', ExternalProgram, 'OverrideProgram']c                ó¬  — | j                              |gg ¦  «        }|�|S | j                             t          j        |¦  «        }|�t          j        ||¦  «        S |                      |dd|¬¦  «        }| 	                    ¦   «         r4|j
        dk    r)|                     |¬¦  «        }	|	rt          ||	g¦  «        S |                      |||¬¦  «        S )NTF)Únativer^   rb   Ú	pkgconfig)rp   )r^   rb   )r!   Úprogram_from_overridesr"   Úlookup_binary_entryr   ÚHOSTr   Ú
from_entryÚ
dependencyÚfoundÚ	type_nameÚget_variableri   )
rA   rj   rk   rl   r^   rb   ÚprogobjÚ	prog_listÚdepÚvalues
             rB   Ú	find_toolzModuleState.find_tool`   sã   € ð Ô#×:Ò:¸D¸6À2ÑFÔFˆØÐØˆNð Ô$×8Ò8½Ô9KÈTÑRÔRˆ	ØÐ Ý"Ô-¨d°IÑ>Ô>Ð>ð �oŠo˜g¨d¸UÈ6ˆoÑRÔRˆØ�9Š9‰;Œ;ð 	6˜3œ=¨KÒ7Ð7Ø×$Ò$¨wÐ$Ñ7Ô7ˆEØð 6Ý& t¨e¨WÑ5Ô5Ð5ð × Ò  °ÀÐ ÑHÔHÐHrD   ro   ú'Dependency'c                ó^   — ||dœ}|r||d<   | j                              | j        |g|¦  «        S )N)ro   r^   r.   )r!   Úfunc_dependencyr@   )rA   rk   ro   r^   rb   Úkwargss         rB   ru   zModuleState.dependencyv   sC   € à"°Ð9Ð9ˆØð 	'Ø &ˆF�9Ñð Ô ×0Ò0°Ô1BÀWÀIÈvÑVÔVÐVrD   ÚargsúTT.Tuple[str, T.Union[build.Executable, build.Jar, 'ExternalProgram', mesonlib.File]]ÚworkdirÚenvú+T.Union[T.List[str], T.Dict[str, str], str]Údependsú6T.List[T.Union[build.CustomTarget, build.BuildTarget]]c                ór   — |||dœ}t          |¦  «        }| j                             | j        ||¦  «         d S )N)r„   r…   r‡   )Úlistr!   Ú	func_testr@   )rA   r‚   r„   r…   r‡   r�   Ú	real_argss          rB   ÚtestzModuleState.test€   sJ   € ð %ØØ$ðð ˆõ ˜‘J”Jˆ	àÔ×#Ò# DÔ$5°yÀ&ÑIÔIÐIÐIÐIrD   Ú r'   ÚmachineÚlangÚmoduleú#T.Union[str, int, bool, 'WrapMode']c           	     ól   — | j         j                             t          j        |||||¦  «        ¦  «        S ©N)r"   ÚcoredataÚ
get_optionr   Ú	OptionKey)rA   rj   r'   r�   r�   r‘   s         rB   r–   zModuleState.get_optionŽ   s4   € ð ÔÔ(×3Ò3µHÔ4FÀtÈZÐY`ÐbfÐhnÑ4oÔ4oÑpÔpÐprD   c                óX   — t          j        |||||¦  «        }|| j        j        j        v S r”   )r   r—   r!   Úuser_defined_optionsÚcmd_line_options)rA   rj   r'   r�   r�   r‘   Úkeys          rB   Úis_user_defined_optionz"ModuleState.is_user_defined_option”   s0   € õ Ô   z°7¸DÀ&ÑIÔIˆØ�dÔ'Ô<ÔMÐMÐMrD   rZ   ú%T.Iterable[T.Union[str, IncludeDirs]]úT.Iterable[IncludeDirs]c              #  ó‚   K  — |D ]9}t          |t          ¦  «        r|V — Œ| j                             |g¦  «        V — Œ:dS )z»Convert raw include directory arguments to only IncludeDirs

        :param dirs: An iterable of strings and IncludeDirs
        :return: None
        :yield: IncludeDirs objects
        N)rS   r   r!   Úbuild_incdir_object)rA   rZ   Úds      rB   Úprocess_include_dirsz ModuleState.process_include_dirs›   se   è è € ð ð 	Að 	AˆAÝ˜!�[Ñ)Ô)ð AØ����àÔ'×;Ò;¸Q¸CÑ@Ô@Ð@Ð@Ð@Ð@ð		Að 	ArD   ©r   r   r   r   )rE   )rF   rG   rH   rI   r   rJ   )r\   r]   r^   r_   r`   ra   rb   rc   rd   r_   re   r   r   rf   )TN)rj   rI   rk   rI   rl   rI   r^   r_   rb   rc   r   rm   )FTN)
rk   rI   ro   r_   r^   r_   rb   rc   r   r~   )NNN)
r‚   rƒ   r„   rc   r…   r†   r‡   rˆ   r   r   )rj   rI   r'   rI   r�   r   r�   rc   r‘   rc   r   r’   )rj   rI   r'   rI   r�   r   r�   rc   r‘   rc   r   r_   )rZ   r�   r   rž   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   r[   r   rs   ri   r}   ru   r�   r–   rœ   r¢   rM   rD   rB   r   r   %   sq  € € € € € ðð ð5ð 5ð 5ð 5ð8ð ð ð ð ð" NRØVZØ/3ÀEØ2?Ô2Dðjð jð jð jð jð QUØ,0ðIð Ið Ið Ið Ið, OSØ-1ðWð Wð Wð Wð Wð )-Ø@DØOSðJð Jð Jð Jð Jð 79Ø,9Ô,>Ø+/Ø-1ðqð qð qð qð qð CEØ8EÔ8JØ7;Ø9=ðNð Nð Nð Nð NðAð Að Að Að Að ArD   r   c                  ó   — e Zd ZdZdd„ZdS )ÚModuleObjectz3Base class for all objects returned by modules
    r   r   c                ó   — i | _         d S r”   )Úmethods©rA   s    rB   rC   zModuleObject.__init__¬   s   € ð ð 	ŒˆˆrD   N©r   r   )r¤   r¥   r¦   r§   rC   rM   rD   rB   r©   r©   ©   s2   € € € € € ðð ðð ð ð ð ð rD   r©   c                  ó   — e Zd ZdS )ÚMutableModuleObjectN)r¤   r¥   r¦   rM   rD   rB   r¯   r¯   ³   s   € € € € € Ø€DrD   r¯   c                  óV   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dS )Ú
ModuleInfozMetadata about a Module.rI   rj   Nrc   ÚaddedÚ
deprecatedFr_   ÚunstableÚ
stabilized)	r¤   r¥   r¦   r§   Ú__annotations__r²   r³   r´   rµ   rM   rD   rB   r±   r±   ·   sg   € € € € € € ð #Ð"à€I€I�IØ!€EÐ!Ð!Ð!Ñ!Ø"&€JÐ&Ð&Ð&Ñ&Ø€HÐÐÐÑØ"&€JÐ&Ð&Ð&Ñ&Ð&Ð&rD   r±   c                  óx   ‡ — e Zd ZU dZded<   dˆ fd„Zeedd„¦   «         ¦   «         Ze	dd„¦   «         Z
dd„Zˆ xZS )ÚNewExtensionModuleú=Class for modern modules

    provides the found method.
    r±   ÚINFOr   r   c                óŠ   •— t          ¦   «                              ¦   «          | j                             d| j        i¦  «         d S )Nrv   )ÚsuperrC   r«   ÚupdateÚfound_method)rA   Ú	__class__s    €rB   rC   zNewExtensionModule.__init__Ì   sJ   ø€ Ý‰Œ×ÒÑÔÐØŒ×ÒØ�TÔ&ð
ñ 	ô 	ð 	ð 	ð 	rD   Ústateú'ModuleState'r‚   úT.List['TYPE_var']r�   ú'TYPE_kwargs'r_   c                ó*   — |                       ¦   «         S r”   )rv   )rA   rÀ   r‚   r�   s       rB   r¾   zNewExtensionModule.found_methodÒ   s   € ð �zŠz‰|Œ|ÐrD   c                 ó   — dS )NTrM   rM   rD   rB   rv   zNewExtensionModule.found×   s   € àˆtrD   ú"T.Optional['EnvironmentVariables']c                ó   — d S r”   rM   r¬   s    rB   Ú
get_devenvzNewExtensionModule.get_devenvÛ   s   € ØˆtrD   r­   )rÀ   rÁ   r‚   rÂ   r�   rÃ   r   r_   ©r   r_   )r   rÆ   )r¤   r¥   r¦   r§   r¶   rC   r   r   r¾   Ústaticmethodrv   rÈ   Ú__classcell__©r¿   s   @rB   r¸   r¸   Ã   sµ   ø€ € € € € € ðð ð
 ÐÐÑðð ð ð ð ð ð Øðð ð ñ „Xñ „Yðð ðð ð ñ „\ððð ð ð ð ð ð ð rD   r¸   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚExtensionModuler   r   r   r   c                óV   •— t          ¦   «                              ¦   «          || _        d S r”   )r¼   rC   r   )rA   r   r¿   s     €rB   rC   zExtensionModule.__init__â   s'   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔÐÐrD   r£   )r¤   r¥   r¦   rC   rË   rÌ   s   @rB   rÎ   rÎ   á   s=   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'rD   rÎ   c                  ó<   ‡ — e Zd ZdZd	ˆ fd„Zed
d„¦   «         Zˆ xZS )ÚNotFoundExtensionModuler¹   rj   rI   r   r   c                óp   •— t          ¦   «                              ¦   «          t          |¦  «        | _        d S r”   )r¼   rC   r±   rº   )rA   rj   r¿   s     €rB   rC   z NotFoundExtensionModule.__init__í   s,   ø€ Ý‰Œ×ÒÑÔÐÝ˜tÑ$Ô$ˆŒ	ˆ	ˆ	rD   r_   c                 ó   — dS )NFrM   rM   rD   rB   rv   zNotFoundExtensionModule.foundñ   s   € àˆurD   )rj   rI   r   r   rÉ   )r¤   r¥   r¦   r§   rC   rÊ   rv   rË   rÌ   s   @rB   rÑ   rÑ   æ   sg   ø€ € € € € ðð ð
%ð %ð %ð %ð %ð %ð ðð ð ñ „\ðð ð ð ð rD   rÑ   c                ón   — t          | d¦  «        r| j        } |                      d¦  «        d         }|dv S )z€
    Check if the file is a library-like file generated by a module-specific
    target, such as GirTarget or TypelibTarget
    Úfnameú.éÿÿÿÿ>   ÚgirÚtypelib)ÚhasattrrÕ   Úsplit)rÕ   Úsuffixs     rB   Úis_module_libraryrÝ   ö   s?   € õ
 ˆu�gÑÔð Ø”ˆØ�[Š[˜ÑÔ˜bÔ!€FØÐ'Ð'Ð'rD   c                  ó   — e Zd Zd	d„ZdS )
ÚModuleReturnValueÚreturn_valueúT.Optional['TYPE_var']Únew_objectsú@T.Sequence[T.Union['TYPE_var', 'build.ExecutableSerialisation']]r   r   c                óP   — || _         t          |t          ¦  «        sJ ‚|| _        d S r”   )rà   rS   rŠ   râ   )rA   rà   râ   s      rB   rC   zModuleReturnValue.__init__  s.   € à(ˆÔÝ˜+¥tÑ,Ô,Ð,Ð,Ð,ØYdˆÔÐÐrD   N)rà   rá   râ   rã   r   r   )r¤   r¥   r¦   rC   rM   rD   rB   rß   rß     s.   € € € € € ðeð eð eð eð eð erD   rß   )*Ú
__future__r   ÚdataclassesÚtypingr<   rŽ   r   r   r   Úinterpreterbase.decoratorsr   r   r	   r
   r   Úprogramsr   ÚTYPE_CHECKINGr   r   Úinterpreter.interpreterobjectsr   Úinterpreterbaser   r   r   Úwrapr   r   r   Údependenciesr   r   r©   r¯   Ú	dataclassr±   r¸   rÎ   rÑ   rÝ   rß   rM   rD   rB   ú<module>rð      sÓ  ðð" #Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø &Ð &Ð &Ð &Ð &Ð &à„?ð *ØÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)Ø>Ð>Ð>Ð>Ð>Ð>Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø*Ð*Ð*Ð*Ð*Ð*ØÐÐÐÐÐØ8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø)Ð)Ð)Ð)Ð)Ð)ðAAð AAð AAð AAð AAñ AAô AAð AAðHð ð ð ð �>ñ ô ð ð	ð 	ð 	ð 	ð 	˜,ñ 	ô 	ð 	ð Ôð'ð 'ð 'ð 'ð 'ñ 'ô 'ñ Ôð'ðð ð ð ð ˜ñ ô ð ð<'ð 'ð 'ð 'ð 'Ð(ñ 'ô 'ð 'ð
ð ð ð ð Ð0ñ ô ð ð (ð (ð (ðeð eð eð eð eñ eô eð eð eð erD   