
    -PhW              	      R
   U 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mZm	Z	 ddl
mZ ddl
mZ ddl
mZ ddl
mZ dd	lmZmZmZmZmZ dd
lmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4 ddl5m6Z6 ddlm7Z7m8Z8m9Z9 d dl:Z;e;j<        rLddl
m=Z= ddl>m?Z? ddl@mAZA ddlmBZBmCZCmDZDmEZEmFZFmGZGmHZH ddlImJZJ d dlKmLZL  G d deL          ZM G d deL          ZN edeOe-f          ZPdeQd<   	 	 ddd)ZRdd,ZS G d- d.eejT                           ZU G d/ d0e          ZV G d1 d2eejW                 e          ZX ed3eOe-f          ZYdeQd4<    G d5 d6eejZ                 e          Z[ ed7e\d89           ed:e\d89           ed;e\d89           ed<e\d89           ed=e\d89          gZ] G d> d?ee2                   Z^ e;j_        d@e6A          Z` G dB dCee`                   Za G dD dEeae6                   Zb G dF dGee3                   Zc G dH dIedJ                   Zd G dK dLeeje                           Zf G dM dNeejg                           Zh G dO dPeeji                           Zj G dQ dReejk                           Zl G dS dTeejm                           Zn G dU dVeejo                           Zp G dW dXeejq                           Zr G dY dZeejs                           Zt G d[ d\eeju                           Zv G d] d^e          Zw G d_ d`ew          Zx G da dbe7          Zy G dc dde          Zz G de dfee                   Z{ G dg dhe{e          Z| e;j_        die;j}        ej~        ej        f         A          Z G dj dkee                   Z G dl dmeej                           Z G dn doeej                           Z G dp dqeej                           Z G dr dseej                           Z G dt dueej                           Z G dv dweej                           Z G dx dyeej                           Z e;j_        dzej        A          Z G d{ d|ee                   Z G d} d~eej                           Z G d deej                           Z G d deej                           Z G d deej                           Z G d deej                           Z G d deej                           ZdS )    )annotationsN)PathPurePath   )mesonlib)options)build)mlog)ModuleReturnValueModuleObjectModuleStateExtensionModuleNewExtensionModule)TestProtocol)ContainerTypeInfo	KwargInfoMesonOperatorMesonInterpreterObjectObjectHolderMutableInterpreterObject
FeatureNewFeatureDeprecatedtyped_pos_argstyped_kwargstyped_operatornoArgsFlattening	noPosargsnoKwargsunholder_returnflattenresolve_second_level_holdersInterpreterExceptionInvalidArgumentsInvalidCode)NoneTypeENV_KWENV_SEPARATOR_KWPKGCONFIG_DEFINE_KW)
DependencyExternalLibraryInternalDependency)ExternalProgram)HoldableObjectlistify
Popen_safe   )kwargs)CMakeInterpreter)MachineInfo)FeatureCheckBaseInterpreterObject
SubProjectTYPE_varTYPE_kwargs	TYPE_nvarTYPE_nkwargs)Interpreter)	TypedDictc                      e Zd ZU ded<   dS )EnvironmentSeparatorKWstr	separatorN__name__
__module____qualname____annotations__     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/interpreter/interpreterobjects.pyr>   r>   (   s         rG   r>   c                      e Zd ZU ded<   dS )InternalDependencyAsKWbool	recursiveNrA   rF   rG   rH   rJ   rJ   ,   s         rG   rJ   error_messagezKwargInfo[T.Optional[str]]_ERROR_MSG_KWTr1   'kwargs.ExtractRequired'
subproject'SubProject'feature_checkT.Optional[FeatureCheckBase]defaultrK   return$T.Tuple[bool, bool, T.Optional[str]]c                ~    | j         d|          }d}d}d }t          |t          j                  r\|st	          dd          }|                    |           |j        }|                                rd}n>|                                rd}n't          |t                    r|}nt          d          || d<   |||fS )NrequiredFzUser option "feature"z0.47.0Tz=required keyword argument must be boolean or a feature option)get
isinstancer   UserFeatureOptionr   usenameis_disabled
is_enabledrK   r"   )r1   rP   rR   rT   valdisabledrX   features           rH   extract_required_kwargrc   3   s     &*Z
)
)CHH#G#w011 d 	J&'>IIM*%%%(?? 	HH^^ 	H	C		 d"#bccc
 "F:Xw&&rG   'kwargs.ExtractSearchDirs'T.List[str]c                ,   t          j         | j        dg                     }d |D             }|D ]W}t          j                    r|j                            d          r0|                                st          d| d          Xd |D             S )Ndirsc                P    g | ]#}t          |                                          $S rF   )r   
expanduser).0ds     rH   
<listcomp>z'extract_search_dirs.<locals>.<listcomp>R   s*    AAAA477%%''AAArG   \zSearch directory z is not an absolute path.c                ,    g | ]}t          |          S rF   )r?   )rj   ss     rH   rl   z'extract_search_dirs.<locals>.<listcomp>Z   s    (((qCFF(((rG   )r   stringlistifyrY   
is_windowsroot
startswithis_absoluter$   )r1   search_dirs_strsearch_dirsrk   s       rH   extract_search_dirsrw   P   s    ,ZVZ-C-CDDOAAAAAK P P   	QV%6%6t%<%< 	 }} 	PN!NNNOOO	P((K((((rG   c                  0    e Zd Zd, fdZed-d            Zd.d	Zd.d
Zee	d/d                        Z
ee	d/d                        Zee	 edd          d/d                                    Zee	d/d                        Zd0dZ edd           ede           ede          d1d                                    Z edd            ed!e           ed!e          d1d"                                    Z ed#d            ed$e           ed$e          d1d%                                    Z ed&d          e	 ed'e          d2d(                                    Z ed)d           e	 ed*e          d2d+                                    Z xZS )3FeatureOptionHolderoptionoptions.UserFeatureOptioninterpreter'Interpreter'c                   t                                          ||           |ru|                                rat          j        d| j        j        j                            d                    }t          j	        |          | _
        |j        | j
        _        | j                            | j        | j        | j        | j        | j        | j        | j        | j        | j        d	           d S )Nr{   auto_features)	enabledra   allowedautorequiredisable_auto_ifenable_auto_if
disable_if	enable_if)super__init__is_autoTcastenvcoredataoptstoreget_value_object_forcopyheld_objectr]   methodsupdateenabled_methoddisabled_methodallowed_methodauto_methodrequire_methoddisable_auto_if_methodenable_auto_if_methoddisable_if_methodenable_if_method)selfrz   r|   r   	__class__s       rH   r   zFeatureOptionHolder.__init__]   s    --- 	0fnn&& 	065tx7H7Q7f7fgv7w7wxxD#yD$*KD!(;)-)=(,(;%)%5(,(;040K/3/I+/+A*.*?	 	 		  		  		  		  		 rG   rU   r?   c                ,    | j         sdn| j         j        S Nra   )r   valuer   s    rH   r   zFeatureOptionHolder.valueo   s    !%!1Mzzt7G7MMrG   c                F    t          j        | j                  }d|_        |S r   r   deepcopyr   r   )r   ra   s     rH   as_disabledzFeatureOptionHolder.as_disableds   s     =!122#rG   c                F    t          j        | j                  }d|_        |S Nr   r   )r   r   s     rH   
as_enabledzFeatureOptionHolder.as_enabledx   s     - 011!rG   argsT.List[TYPE_var]r1   r8   rK   c                    | j         dk    S r   r   r   r   r1   s      rH   r   z"FeatureOptionHolder.enabled_method}   s     zY&&rG   c                    | j         dk    S r   r   r   s      rH   r   z#FeatureOptionHolder.disabled_method   s     zZ''rG   zfeature_option.allowed()0.59.0c                    | j         dk    S r   r   r   s      rH   r   z"FeatureOptionHolder.allowed_method   s     zZ''rG   c                    | j         dk    S )Nr   r   r   s      rH   r   zFeatureOptionHolder.auto_method   s     zV##rG   	conditionmessageT.Optional[str]c                    |st          j        | j                  S | j        dk    r)d| j        j         d}|r|d| z  }t          |          |                                 S )Nr   Feature z cannot be enabled: )r   r   r   r   r]   r"   r   )r   r   r   err_msgs       rH   _disable_ifzFeatureOptionHolder._disable_if   sx     	3=!1222:""J!1!6JJJG *>>>)&w///!!!rG   zfeature_option.require()zfeature_option.requireT.Tuple[bool]'kwargs.FeatureOptionRequire'c                H    |                      |d          |d                   S Nr   rM   r   r   s      rH   r   z"FeatureOptionHolder.require_method   s%     DGVO-DEEErG   zfeature_option.disable_if()z1.1.0zfeature_option.disable_ifc                F    |                      |d         |d                   S r   r   r   s      rH   r   z%FeatureOptionHolder.disable_if_method   s#     Q)@AAArG   zfeature_option.enable_if()zfeature_option.enable_ifc                    |d         st          j        | j                  S | j        dk    r5d| j        j         d}|d         r|d|d          z  }t          |          |                                 S )Nr   ra   r   z cannot be disabledrM   r   )r   r   r   r   r]   r"   r   )r   r   r1   r   s       rH   r   z$FeatureOptionHolder.enable_if_method   s     Aw 	3=!1222:##K!1!6KKKGo& :9 7999&w///   rG   z feature_option.disable_auto_if()zfeature_option.disable_auto_ifc                    | j         dk    s|d         st          j        | j                  n|                                 S Nr   r   )r   r   r   r   r   r   s      rH   r   z*FeatureOptionHolder.disable_auto_if_method   s?     37*2F2FdSTg2Ft}T-...[_[k[k[m[mmrG   zfeature_option.enable_auto_if()zfeature_option.enable_auto_ifc                    | j         dk    r|d         r|                                 nt          j        | j                  S r   )r   r   r   r   r   r   s      rH   r   z)FeatureOptionHolder.enable_auto_if_method   s<     %)J&$8$8T!W$8t   $-X\XhJiJiirG   )rz   r{   r|   r}   rU   r?   )rU   r{   r   r   r1   r8   rU   rK   )r   rK   r   r   rU   r{   )r   r   r1   r   rU   r{   )r   r   r1   r8   rU   r{   )rB   rC   rD   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   rK   r   rN   r   r   r   r   r   __classcell__r   s   @rH   ry   ry   \   s@                  $ N N N XN   
   
 ' ' ' X Y' ( ( ( X Y( Z*H55( ( ( 65 X Y( $ $ $ X Y$	" 	" 	" 	" Z*H55^,d33\  F F F	  43 65F Z-w77^/66\# B B B	  76 87B Z,g66^.55\" 	! 	! 	!	  65 76	! Z2H==^4d;;n n n <; X >=n Z17;;^3T::j j j ;: X <;j j j j jrG   ry   c                       e Zd Z	 	 	 dd fdZ	 d d!dZeed"d                        Zeed#d                        Zeed#d                        Z	 xZ
S )$
RunProcessFTcmdr,   r   re   r   mesonlib.EnvironmentVariables
source_dirr?   	build_dirsubdirmesonintrospectin_builddirrK   checkcapturerU   Nonec                X   t                                                       t          |t                    st	          d          |
| _        |                     |||||||||		  	        \  | _        | _        | _	        | j
                            | j        | j        | j        d           d S )Nz1BUG: RunProcess must be passed an ExternalProgram)
returncodestdoutstderr)r   r   rZ   r,   AssertionErrorr   run_commandr   r   r   r   r   returncode_methodstdout_methodstderr_method)r   r   r   r   r   r   r   r   r   r   r   r   s              rH   r   zRunProcess.__init__   s     	#// 	V !TUUU484D4DS$PSU_ajlr  uD  FQ  SX  5Y  5Y1dk4+A'+'9'+'9  	  	  	  	  	 rG   T.Tuple[int, str, str]c
                T   |                                 |z   }
|||d                    d |D                       d}|r!t          j                            ||          }n t          j                            ||          }t          j                                        }|                    |           |                    |          }| j        rt          j
        nt          j        }t          j        dt          j        |
                     	 t!          |
|||          \  }}}| j        r)t          j        d           t          j        |           nd}t          j        d           t          j        d	           t          j        |           t          j        d           |	rE|j        d
k    r:t%          d                    t          j        |
          |j                            |j        ||fS # t(          $ r% t%          dt          j        |
          z            w xY w)N c                6    g | ]}t          j        |          S rF   )shlexquote)rj   xs     rH   rl   z*RunProcess.run_command.<locals>.<listcomp>   s     ,U,U,UU[^^,U,U,UrG   )MESON_SOURCE_ROOTMESON_BUILD_ROOTMESON_SUBDIRMESONINTROSPECTzRunning command:)r   r   cwdz--- stdout --- z--- stdout disabled ---z--- stderr ---r   z#Command `{}` failed with status {}.zCould not execute command `%s`.)get_commandjoinospathenvironr   r   get_envr   
subprocessPIPEDEVNULLr
   debugr   	join_argsr/   r   r"   formatFileNotFoundError)r   r   r   r   r   r   r   r   r   r   command_arraymenvr   	child_envr   poes                     rH   r   zRunProcess.run_command   s    ))D0%/$- &#&88,U,U_,U,U,U#V#V 
  	3',,y&11CC',,z622CJOO%%	KK	**	$(LHj6H
%x'9-'H'HIII	n v9RUVVVGAq!| 6
+,,,
1
4555J'(((JqMMMJrNNN J***+P+W+WX`XjkxXyXy{|  |H  ,I  ,I  J  J  J<A%%  	n 	n 	n&'H8K]^kKlKl'lmmm	ns   C)G8 8/H'r   r1   r8   intc                    | j         S N)r   r   s      rH   r   zRunProcess.returncode_method  s     rG   c                    | j         S r  )r   r   s      rH   r   zRunProcess.stdout_method       {rG   c                    | j         S r  )r   r   s      rH   r   zRunProcess.stderr_method  r  rG   )FFT)r   r,   r   re   r   r   r   r?   r   r?   r   r?   r   re   r   rK   r   rK   r   rK   rU   r   )F)r   r,   r   re   r   r   r   r?   r   r?   r   r?   r   re   r   rK   r   rK   rU   r   )r   r   r1   r8   rU   r   r   r   r1   r8   rU   r?   )rB   rC   rD   r   r   r   r   r   r   r   r   r   s   @rH   r   r      s         &+$!%             < #(*n *n *n *n *nX    X Y    X Y    X Y    rG   r   c                      e Zd Zd! fdZd"dZd#dZd$dZ edeed           e	de
          d%d                        Z edd           ede          ed&d                                    Z edeed           e	de
          d%d                        Z edeed           e	de
          d%d                         Z xZS )'EnvironmentVariablesHolderobjr   r|   r}   c                    t                                          ||           | j                            | j        | j        | j        | j        d           d S )N)setunsetappendprepend)r   r   r   r   
set_methodunset_methodappend_methodprepend_methodr   r	  r|   r   s      rH   r   z#EnvironmentVariablesHolder.__init__!  sa    k***DO&*&7'+'9(,(;  	  	  	  	  	 rG   rU   r?   c                Z    d}|                     | j        j        | j        j                  S )Nz
<{0}: {1}>)r   r   rB   r   envvars)r   repr_strs     rH   __repr__z#EnvironmentVariablesHolder.__repr__)  s&    t~68H8PQQQrG   memoT.Dict[str, object]'EnvironmentVariablesHolder'c                Z    t          t          j        | j                  | j                  S r  )r  r   r   r   r|   r   r  s     rH   __deepcopy__z'EnvironmentVariablesHolder.__deepcopy__-  s"    )$-8H*I*I4K[\\\rG   r]   r   c                    | j                             |          r6d|d}t          |d                              | j        | j                   d S d S )Nz2Overriding previous value of environment variable z with a new one0.58.0)r   has_namer   r\   rP   current_node)r   r]   ms      rH   warn_if_has_namez+EnvironmentVariablesHolder.warn_if_has_name1  sc    $$T** 	L\T\\\Aq(##''9JKKKKK	L 	LrG   zenvironment.setr0   )varargsmin_varargsr   T.Tuple[str, T.List[str]]r1   'EnvironmentSeparatorKW'c                T    |\  }}| j                             |||d                    d S Nr@   )r   r  r   r   r1   r]   valuess        rH   r  z%EnvironmentVariablesHolder.set_method7  s3     fT66++>?????rG   zenvironment.unset1.4.0T.Tuple[str]r8   c                F    | j                             |d                    d S Nr   )r   r  r   s      rH   r  z'EnvironmentVariablesHolder.unset_method=  s%     	tAw'''''rG   zenvironment.appendc                ~    |\  }}|                      |           | j                            |||d                    d S r)  )r#  r   r  r*  s        rH   r  z(EnvironmentVariablesHolder.append_methodC  sG     fd###ff[.ABBBBBrG   zenvironment.prependc                ~    |\  }}|                      |           | j                            |||d                    d S r)  )r#  r   r  r*  s        rH   r  z)EnvironmentVariablesHolder.prepend_methodJ  sG     fd###  vvk/BCCCCCrG   )r	  r   r|   r}   r   )r  r  rU   r  )r]   r?   rU   r   )r   r&  r1   r'  rU   r   )r   r-  r1   r8   rU   r   )rB   rC   rD   r   r  r  r#  r   r?   r   r'   r  r   r   r  r  r  r   r   s   @rH   r  r    s                  R R R R] ] ] ]L L L L ^%sCQGGG\#%566@ @ @ 76 HG@ Z#W--^'--( ( ( X .- .-( ^(#sJJJ\&(899C C C :9 KJC
 ^)3KKK\')9::D D D ;: LKD D D D DrG   r  description_CONF_DATA_SET_KWSc                      e Zd Zd7 fdZd8d
Zd9dZd:dZ edeee	e
f           ede          d;d                        Z edee           ede          d<d                        Z edee	e
f           ede          d=d                        Z edee	e
f          ed>d                        Z edd            ed!eee	e
fg"          ed?d%                                    Z ed&d'           ed(eee	e
fg"          ed?d)                                    Zd@d-Z ed.d/          eedAd2                                    ZdBd3Z ed4ej                  edCd6                        Z xZS )DConfigurationDataHolderr	  build.ConfigurationDatar|   r}   c                    t                                          ||           | j                            | j        | j        | j        | j        | j        | j	        | j
        | j        d           d S )N)r  set10
set_quotedhasrY   keysget_unquoted
merge_from)r   r   r   r   r  set10_methodset_quoted_method
has_method
get_methodkeys_methodget_unquoted_methodmerge_from_methodr  s      rH   r   z ConfigurationDataHolder.__init__W  sw    k***DO&*&7+/+A$(O$(O%)%5-1-E+/+A  	  	  	  	  	 rG   r  T.DictrU   'ConfigurationDataHolder'c                Z    t          t          j        | j                  | j                  S r  )r5  r   r   r   r|   r  s     rH   r  z$ConfigurationDataHolder.__deepcopy__c  s"    &t}T5E'F'FHXYYYrG   rK   c                    | j         j        S r  )r   usedr   s    rH   is_usedzConfigurationDataHolder.is_usedf  s    $$rG   r   c                L    |                                  rt          d          d S )Nz>Can not set values on configuration object that has been used.)rJ  r"   r   s    rH   __check_usedz$ConfigurationDataHolder.__check_usedi  s.    <<>> 	i&'ghhh	i 	irG   zconfiguration_data.setr   %T.Tuple[str, T.Union[str, int, bool]]r1   'kwargs.ConfigurationDataSet'c                t    |                                   |d         |d         f| j        j        |d         <   d S )Nr0   r2  r   )$_ConfigurationDataHolder__check_usedr   r+  r   s      rH   r  z"ConfigurationDataHolder.set_methodm  s>     	,0GVM5J+KQ(((rG   zconfiguration_data.set_quotedT.Tuple[str, str]c                    |                                   d                    |d                             d                    }d| d|d         f| j        j        |d         <   d S )Nz\"r0   "r2  r   )rP  r   splitr   r+  )r   r   r1   escaped_vals       rH   r?  z)ConfigurationDataHolder.set_quoted_methods  sf     	jjas!3!344,>,>,>,>}@U+VQ(((rG   zconfiguration_data.set10 T.Tuple[str, T.Union[int, bool]]c                \   |                                   t          |d         t                    sLt          j        d| j        j                   |d         dk     r t          j        d| j        j                   t          |d                   |d         f| j	        j
        |d         <   d S )Nr0   zZconfiguration_data.set10 with number. The `set10` method should only be used with booleanslocationr   zwPassing a number that is less than 0 may not have the intended result, as meson will treat all non-zero values as true.r2  )rP  rZ   rK   r
   deprecationr|   r!  warningr   r   r+  r   s      rH   r>  z$ConfigurationDataHolder.set10_methodz  s     	 $q'4(( 	E H&*&6&CE E E E Aw{{ P&*&6&CE E E E -0QLL&:O+PQ(((rG   zconfiguration_data.has T.Tuple[T.Union[str, int, bool]]r8   c                *    |d         | j         j        v S r/  r   r+  r   s      rH   r@  z"ConfigurationDataHolder.has_method  s     Aw$*111rG   zconfiguration_data.get()z0.38.0zconfiguration_data.getoptargs1T.Tuple[str, T.Optional[T.Union[str, int, bool]]]T.Union[str, int, bool]c                    |d         }|| j         v r | j                             |          d         S |d         |d         S t          d| d          )Nr   r0   Entry  not in configuration data.)r   rY   r"   )r   r   r1   r]   s       rH   rA  z"ConfigurationDataHolder.get_method  sd    
 Aw4####''--a00!W 7N"#MD#M#M#MNNNrG   z!configuration_data.get_unquoted()0.44.0zconfiguration_data.get_unquotedc                    |d         }|| j         v r!| j                             |          d         }n$|d         	|d         }nt          d| d          t          |t                    r"|d         dk    r|d         dk    r
|dd         S |S )Nr   r0   rd  re  rS  )r   rY   r"   rZ   r?   )r   r   r1   r]   r`   s        rH   rC  z+ConfigurationDataHolder.get_unquoted_method  s    
 Aw4###"&&t,,Q/CC!W q'CC&'Q'Q'Q'QRRRc3 	CFcMMc"gnnqt9
rG   r]   r?   1T.Tuple[T.Union[str, int, bool], T.Optional[str]]c                &    | j         j        |         S r  r^  )r   r]   s     rH   rY   zConfigurationDataHolder.get  s    &t,,rG   zconfiguration_data.keys()0.57.0r   re   c                D    t          |                                           S r  )sortedr;  r   s      rH   rB  z#ConfigurationDataHolder.keys_method  s     diikk"""rG   c                X    t          | j        j                                                  S r  )listr   r+  r;  r   s    rH   r;  zConfigurationDataHolder.keys  s"    D$+0022333rG   zconfiguration_data.merge_from T.Tuple[build.ConfigurationData]c                ^    |d         }| j         j                            |j                   d S r/  )r   r+  r   )r   r   r1   from_objects       rH   rD  z)ConfigurationDataHolder.merge_from_method  s0     1g&&{'9:::::rG   )r	  r6  r|   r}   )r  rE  rU   rF  rU   rK   )rU   r   )r   rM  r1   rN  rU   r   )r   rQ  r1   rN  rU   r   )r   rV  r1   rN  rU   r   )r   r\  r1   r8   rU   rK   )r   ra  r1   r8   rU   rb  )r]   r?   rU   ri  )r   r   r1   r8   rU   re   )rU   re   )r   rp  r1   r8   rU   r   )rB   rC   rD   r   r  rJ  rP  r   r?   r   rK   r   r3  r  r?  r>  r   r@  r   rA  rC  rY   r   rB  r;  r	   ConfigurationDatarD  r   r   s   @rH   r5  r5  U  s#       
  
  
  
  
  
 Z Z Z Z% % % %i i i i ^,cCd3CDD\*,>??L L L @? EDL ^3S#>>\13EFFW W W GF ?>W
 ^.c4[AA\,.@AAQ Q Q BA BAQ ^,sC.>??2 2 2 X @?2 Z*H55^,cS#t<L;MNNNO O O X ON 65O Z3X>>^5sc3PTEUDVWWW   X XW ?>- - - - Z+X66# # # X Y 76#4 4 4 4 ^3U5LMM; ; ; X NM; ; ; ; ;rG   r5  compile_argsFrT   	link_argslinksincludessourcesc                  ^    e Zd ZdD fdZdEdZeedFd                        ZeedGd                        ZeedFd                        Z	eedFd                        Z
 eddd           ede           ed eded           ej        d                    dHd                                    Z edd           eddd          e ed e          dId!                                                Z ed"d#          e ed"geR  dJd&                                    Z ed'd(           ed'eg)           ed' ed*eef           ed+eef           ed,eef           ed-eefd./           ed0eefd1/           ed2eef          e          dKd5                                    Z ed6d7          eedFd8                                    Z ed9d7          e ed9eg)          dLd:                                    Z ed;d          eedMd<                                    Z ed=d1          e ed= ed>ed?                    dNdA                                    Z edBd1          e edB ed>ed?                    dNdC                                    Z xZS )ODependencyHolderdepr)   r|   r}   c                   t                                          ||           | j                            | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        | j        d           d S )N)found	type_nameversionr]   get_pkgconfig_variableget_configtool_variableget_variablepartial_dependencyinclude_type	as_systemas_link_whole	as_static	as_shared)r   r   r   r   found_methodtype_name_methodversion_methodname_methodpkgconfig_methodconfigtool_methodvariable_methodpartial_dependency_methodinclude_type_methodas_system_methodas_link_whole_methodas_static_methodas_shared_method)r   r}  r|   r   s      rH   r   zDependencyHolder.__init__  s    k***d&7*.*?(,(;%)%57;7L8<8N-1-A373Q-1-E*.*?.2.G*.*?*.*?  	  	  	  	  	 rG   rU   rK   c                .    |                      g i           S r  )r  r   s    rH   r  zDependencyHolder.found  s      R(((rG   r   r   r1   r8   r?   c                    | j         j        S r  r   r  r   s      rH   r  z!DependencyHolder.type_name_method       ))rG   c                X    | j         j        dk    rdS | j                                         S )NinternalT)r   r  r  r   s      rH   r  zDependencyHolder.found_method  s/     %334%%'''rG   c                4    | j                                         S r  )r   get_versionr   s      rH   r  zDependencyHolder.version_method  s     ++---rG   c                4    | j                                         S r  )r   get_namer   s      rH   r  zDependencyHolder.name_method  s     ((***rG   z!dependency.get_pkgconfig_variablez0.56.0z4use dependency.get_variable(pkgconfig : ...) insteadrT   r   rv  define_variabler]   r-  'kwargs.DependencyPkgConfigVar'c                n   ddl m} t          | j        |          s)t	          | j                                        d          |d         r;t          |d                   dk    r"t          j        dd| j	        | j
                   | j                            |d	         |d
         |d                   S )Nr   )PkgConfigDependencyz is not a pkgconfig dependencyr  r0   z]dependency.get_pkgconfig_variable keyword argument "define_variable"  with more than one pair1.3.0rX  r   rT   )	pkgconfigdefault_valuepkgconfig_define)dependencies.pkgconfigr  rZ   r   r#   r  lenr   
single_userP   r!  r  )r   r   r1   r  s       rH   r  z!DependencyHolder.pkgconfig_method  s     	A@@@@@$*,?@@ 	e"d&6&?&?&A&A#c#c#cddd#$ 	XV4E-F)G)G!)K)K!  #B")4?TEVX X X X,,1g +#$56 - 
 
 	
rG   z"dependency.get_configtool_variablerf  z5use dependency.get_variable(configtool : ...) insteadz#dependency.get_config_tool_variablec                    ddl m} t          | j        |          s)t	          | j                                        d          | j                            |d         d          S )Nr   )ConfigToolDependencyz  is not a config-tool dependencyr   r   )
configtoolr  )dependencies.configtoolr  rZ   r   r#   r  r  )r   r   r1   r  s       rH   r  z"DependencyHolder.configtool_method  s~     	CBBBBB$*,@AA 	g"d&6&?&?&A&A#e#e#efff,,Aw - 
 
 	
rG   dependency.partial_dependency0.46.0T.List[TYPE_nvar]*'kwargs.DependencyMethodPartialDependency'c                *     | j         j        di |}|S NrF   r   get_partial_dependencyr   r   r1   pdeps       rH   r  z*DependencyHolder.partial_dependency_method  $     7t6@@@@rG   zdependency.get_variablez0.51.0r_  cmaker  r  r  0.54.0sincesystemz1.6.0r  T.Tuple[T.Optional[str]]'kwargs.DependencyGetVariable'c           
        |d         }|.t          dd                              | j        | j                   |d         r;t	          |d                   dk    r"t          j        dd| j        d| j                   | j                            |d	         p||d
         p||d         p||d         p||d         p||d         |d                   S )Nr   z0Positional argument to dependency.get_variable()r  r  r0   zSdependency.get_variable keyword argument "pkgconfig_define" with more than one pairr  z?In previous versions, this silently returned a malformed value.r  r  r  r  r  r  )r  r  r  r  r  r  r  )r   r\   rP   r!  r  r  r   r  )r   r   r1   default_varnames       rH   r  z DependencyHolder.variable_method  s     q'&I8TTXXY]Yhjnj{|||$% 	5#f5G.H*I*IA*M*M!"w")4?<}"&"35 5 5 ,,/4_[)<_l+>J':?(#6 1#$67 - 
 
 	
rG   zdependency.include_typez0.52.0c                4    | j                                         S r  )r   get_include_typer   s      rH   r  z$DependencyHolder.include_type_method:  s     00222rG   zdependency.as_systemc                F    | j                             |d         pd          S )Nr   r  )r   generate_system_dependencyr   s      rH   r  z!DependencyHolder.as_system_method@  s$     ::47;NhOOOrG   zdependency.as_link_wholec                    t          | j        t                    st          d          | j                                        }|S )NzFas_link_whole method is only supported on declare_dependency() objects)rZ   r   r+   r"   generate_link_whole_dependency)r   r   r1   new_deps       rH   r  z%DependencyHolder.as_link_whole_methodF  sC     $*,>?? 	q&'oppp"AACCrG   zdependency.as_staticrL   FrJ   c                    t          | j        t                    st          d          | j                            |d                   S )NzBas_static method is only supported on declare_dependency() objectsrL   )rZ   r   r+   r"   get_as_staticr   s      rH   r  z!DependencyHolder.as_static_methodO  F     $*,>?? 	m&'klll--f[.ABBBrG   zdependency.as_sharedc                    t          | j        t                    st          d          | j                            |d                   S )NzBas_shared method is only supported on declare_dependency() objectsrL   )rZ   r   r+   r"   get_as_sharedr   s      rH   r  z!DependencyHolder.as_shared_methodZ  r  rG   )r}  r)   r|   r}   rs  r  r   )r   r-  r1   r  rU   r?   )r   r-  r1   r8   rU   r?   r   r  r1   r  rU   r)   )r   r  r1   r  rU   r?   )r   r  r1   r8   rU   r)   )r   r   r1   r8   rU   r)   )r   r   r1   rJ   rU   r)   ) rB   rC   rD   r   r  r   r   r  r  r  r  r   r   r?   r   r   r(   evolver  r   r  _PARTIAL_DEP_KWARGSr  r%   r  r  r  r  rK   r  r  r   r   s   @rH   r|  r|    s                  ") ) ) ) * * * X Y* ( ( ( X Y(
 . . . X Y. + + + X Y+ :HMO O^7==\+	)S"---""(9::: 

 
 
  >=O O
 Z4h??;XNP P^93??
 
 
 @? XP P @?

 Z/::\1H4GHHH   IH Y ;: Z)844^-u===\!	'C?++	+X//	,h00	*sHoX>>>	(S(O7;;;	/C?33	 	
 
 
	 	 >= 54
$ Z)8443 3 3 X Y 543 Z&11^*SE:::P P P ;: X 21P Z*H55   Y X 65 Z&00\	+tU333 C C C	  Y 10C
 Z&00\	+tU333 C C C	  Y 10C C C C CrG   r|  _EXTPROG)boundc                  >    e Zd Zd fdZeedd                        Zee eddd          dd                                    Zee e	dd          dd                                    Z
ddZee e	dd          dd                                    ZddZ xZS )_ExternalProgramHolderepr  r|   r}   rU   r   c                    t                                          ||           | j                            | j        | j        | j        | j        d           d S )N)r  r   r  	full_path)r   r   r   r   r  path_methodr  full_path_method)r   r  r|   r   s      rH   r   z_ExternalProgramHolder.__init__h  si    [)))d&7%)%5(,(;*.*?A A 	B 	B 	B 	B 	BrG   r   r   r1   r8   rK   c                *    |                                  S r  r  r   s      rH   r  z#_ExternalProgramHolder.found_methodo       zz||rG   zExternalProgram.path0.55.0z'use ExternalProgram.full_path() insteadr?   c                *    |                                  S r  
_full_pathr   s      rH   r  z"_ExternalProgramHolder.path_methodt  s    
    rG   zExternalProgram.full_pathc                *    |                                  S r  r  r   s      rH   r  z'_ExternalProgramHolder.full_path_method{  s        rG   c                    |                                  st          d          | j                                        }|J |S )Nz6Unable to get the path of a not-found external program)r  r"   r   get_path)r   r   s     rH   r  z!_ExternalProgramHolder._full_path  sG    zz|| 	a&'_```((**rG   zExternalProgram.versionz0.62.0c                    |                                  st          d          	 | j                            | j                  S # t
          j        $ r Y dS w xY w)Nz9Unable to get the version of a not-found external programunknown)r  r"   r   r  r|   r   MesonExceptionr   s      rH   r  z%_ExternalProgramHolder.version_method  sh     zz|| 	d&'bccc	#//0@AAA& 	 	 	99	s   A AAc                4    | j                                         S r  r   r  r   s    rH   r  z_ExternalProgramHolder.found  s    %%'''rG   )r  r  r|   r}   rU   r   r   r  r   rs  )rB   rC   rD   r   r   r   r  r   r  r   r  r  r  r  r   r   s   @rH   r  r  g  si       B B B B B B    X Y -x@B B! ! !B B X Y! Z+X66! ! ! 76 X Y!    Z)844   54 X Y( ( ( ( ( ( ( (rG   r  c                      e Zd ZdS )ExternalProgramHolderNrB   rC   rD   rF   rG   rH   r  r            DrG   r  c                      e Zd Zd fdZeedd                        Zeedd                        Z edd          e e	dge
R  dd                                    Z edd          eedd                                    Z xZS )ExternalLibraryHolderelr*   r|   r}   c                    t                                          ||           | j                            | j        | j        | j        | j        d           d S )N)r  r  r  r]   )r   r   r   r   r  r  r  r  )r   r  r|   r   s      rH   r   zExternalLibraryHolder.__init__  sb    [)))d&7*.*?373Q%)%5  	  	  	  	  	 rG   r   r   r1   r8   rU   r?   c                    | j         j        S r  r  r   s      rH   r  z&ExternalLibraryHolder.type_name_method  r  rG   rK   c                4    | j                                         S r  r  r   s      rH   r  z"ExternalLibraryHolder.found_method  s     %%'''rG   r  r  r  r  r)   c                *     | j         j        di |}|S r  r  r  s       rH   r  z/ExternalLibraryHolder.partial_dependency_method  r  rG   zdependency.namez1.5.0c                    | j         j        S r  )r   r]   r   s      rH   r  z!ExternalLibraryHolder.name_method  s     $$rG   )r  r*   r|   r}   r  r   r  )rB   rC   rD   r   r   r   r  r  r   r   r  r  r  r   r   s   @rH   r  r    s+                   * * * X Y* ( ( ( X Y( Z/::\1H4GHHH   IH Y ;: Z!7++% % % X Y ,+% % % % %rG   r  c                      e Zd Zd fdZeedd                        Zeedd                        Zeedd                        Zeedd                        Z	eedd                        Z
eedd                        Z xZS )MachineHoldermachine_info'MachineInfo'r|   r}   c           	         t                                          ||           | j                            | j        | j        | j        | j        | j        | j	        d           d S )N)r  cpu
cpu_familyendiankernel	subsystem)
r   r   r   r   system_method
cpu_methodcpu_family_methodendian_methodkernel_methodsubsystem_method)r   r  r|   r   s      rH   r   zMachineHolder.__init__  sm    {333t'9$(O+/+A'+'9'+'9*.*?  	  	  	  	  	 rG   r   r   r1   r8   rU   r?   c                    | j         j        S r  )r   r  r   s      rH   r  zMachineHolder.cpu_family_method  s     **rG   c                    | j         j        S r  )r   r  r   s      rH   r  zMachineHolder.cpu_method  s     ##rG   c                    | j         j        S r  )r   r  r   s      rH   r  zMachineHolder.system_method       &&rG   c                    | j         j        S r  )r   r   r   s      rH   r  zMachineHolder.endian_method  r  rG   c                P    | j         j        | j         j        S t          d          )Nz0Kernel not defined or could not be autodetected.)r   r  r"   r   s      rH   r  zMachineHolder.kernel_method  s+     ".#**"#UVVVrG   c                P    | j         j        | j         j        S t          d          )Nz3Subsystem not defined or could not be autodetected.)r   r  r"   r   s      rH   r  zMachineHolder.subsystem_method  s+     %1#--"#XYYYrG   )r  r  r|   r}   r  )rB   rC   rD   r   r   r   r  r  r  r  r  r  r   r   s   @rH   r  r    sE                   + + + X Y+ $ $ $ X Y$ ' ' ' X Y' ' ' ' X Y' W W W X YW
 Z Z Z X YZ Z Z Z ZrG   r  r3   c                      e Zd ZdS )IncludeDirsHolderNr  rF   rG   rH   r  r    r  rG   r  c                  l     e Zd Zd fdZee edd          dd                                    Z xZS )
FileHolderfilemesonlib.Filer|   r}   c                    t                                          ||           | j                            d| j        i           d S Nr  r   r   r   r   r  )r   r  r|   r   s      rH   r   zFileHolder.__init__  sM    {+++[$*?  	  	  	  	  	 rG   zfile.full_pathr,  r   r   r1   r8   rU   r?   c                `    | j                             | j        j        | j        j                  S r  )r   absolute_pathr   r   r   r   s      rH   r  zFileHolder.full_path_method  s'     --dh.A48CUVVVrG   )r  r  r|   r}   r  )	rB   rC   rD   r   r   r   r   r  r   r   s   @rH   r  r    s                   
 Z '**W W W +* X YW W W W WrG   r  c                      e Zd ZdS )HeadersHolderNr  rF   rG   rH   r  r    r  rG   r  c                      e Zd ZdS )
DataHolderNr  rF   rG   rH   r  r    r  rG   r  c                      e Zd ZdS )SymlinkDataHolderNr  rF   rG   rH   r   r     r  rG   r   c                      e Zd ZdS )InstallDirHolderNr  rF   rG   rH   r"  r"    r  rG   r"  c                      e Zd ZdS )	ManHolderNr  rF   rG   rH   r$  r$    r  rG   r$  c                      e Zd ZdS )EmptyDirHolderNr  rF   rG   rH   r&  r&    r  rG   r&  c                      e Zd ZdS )GeneratedObjectsHolderNr  rF   rG   rH   r(  r(  
  r  rG   r(  c                  0     e Zd Zd fdZddZddZ xZS )Testr]   r?   projectsuitere   exeWT.Union[ExternalProgram, build.Executable, build.CustomTarget, build.CustomTargetIndex]depends6T.List[T.Union[build.CustomTarget, build.BuildTarget]]is_parallelrK   cmd_argsBT.List[T.Union[str, mesonlib.File, build.Target, ExternalProgram]]r   r   should_failtimeoutr   workdirr   protocolpriorityverbosec                J   t                                                       || _        t          |          | _        || _        || _        || _        || _        || _	        || _
        |	| _        |
| _        || _        t          j        |          | _        || _        || _        d S r  )r   r   r]   r.   r,  project_namer-  r/  r1  r2  r   r4  r5  r6  r   from_strr7  r8  r9  )r   r]   r+  r,  r-  r/  r1  r2  r   r4  r5  r6  r7  r8  r9  r   s                  rH   r   zTest.__init__  s     		U^^
#& &$-h77 rG   rU   c                    | j         S r  )r-  r   s    rH   get_exezTest.get_exe&  s	    xrG   c                    | j         S r  r  r   s    rH   r  zTest.get_name)  s
    yrG   )r]   r?   r+  r?   r,  re   r-  r.  r/  r0  r1  rK   r2  r3  r   r   r4  rK   r5  r   r6  r   r7  r?   r8  r   r9  rK   )rU   r.  r   )rB   rC   rD   r   r>  r  r   r   s   @rH   r*  r*    se             0          rG   r*  c                      e Zd ZU dZded<   dS )DoctestNzT.Optional[build.BuildTarget]target)rB   rC   rD   rB  rE   rF   rG   rH   rA  rA  -  s#         ,0F000000rG   rA  c                      e Zd ZdS )NullSubprojectInterpreterNr  rF   rG   rH   rD  rD  1  r  rG   rD  c                       e Zd Z	 	 	 	 dd  fdZeed!d                        Zd"dZed#d            Z	e e
deeg          ed#d                                    Z xZS )$SubprojectHolderr   Nsubinterpreter1T.Union['Interpreter', NullSubprojectInterpreter]r   r?   warningsr   disabled_featurer   	exceptionT.Optional[Exception]	callstackT.Optional[T.List[str]]rU   r   c                6   t                                                       || _        || _        || _        || _        t          |                                          | _        d | _	        || _
        | j                            | j        | j        d           d S )N)r  r  )r   r   r   rI  rJ  rK  r   as_posixr   cm_interpreterrM  r   r   get_variable_methodr  )r   rG  r   rI  rJ  rK  rM  r   s          rH   r   zSubprojectHolder.__init__9  s     	)  0"v&&//11<@"T-E&*&7  	  	  	  	  	 rG   r   r   r1   r8   rK   c                *    |                                  S r  r  r   s      rH   r  zSubprojectHolder.found_methodK  r  rG   c                8    t          | j        t                     S r  )rZ   r   rD  r   s    rH   r  zSubprojectHolder.foundP  s    d.0IJJJJrG   T.Tuple[str, T.Optional[str]]$T.Union[TYPE_var, InterpreterObject]c                   t          | j        t                    rt          d| j         d          |\  }}	 | j        j        |         S # t          $ r2 || j                            |          cY S t          d| d          w xY w)NzSubproject "z$" disabled can't get_variable on it.zRequested variable "z" not found.)	rZ   r   rD  r"   r   	variablesKeyError
_holderifyr#   )r   r   r1   varnamefallbacks        rH   r  zSubprojectHolder.get_variableS  s    d&(ABB 	j&'hdk'h'h'hiii 	Q#-g66 	Q 	Q 	Q#'228<<<<<"#O'#O#O#OPPP	Qs   A &B3Bzsubproject.get_variabler_  c                .    |                      ||          S r  )r  r   s      rH   rR  z$SubprojectHolder.get_variable_method_  s       v...rG   )r   NNN)rG  rH  r   r?   rI  r   rJ  r   rK  rL  rM  rN  rU   r   r   rs  )r   rU  r1   r8   rU   rV  )rB   rC   rD   r   r   r   r  r  r   r  r   r?   objectr   rR  r   r   s   @rH   rF  rF  7  s        "#59486:             $    X YK K K K 	Q 	Q 	Q _	Q ^-sVHEEE/ / /  FE X/ / / / /rG   rF  c                      e Zd Zdd	Zd
S )ModuleObjectHoldermethod_namer?   r   r   r1   r8   rU   r7   c                   | j         }|j                            |          }|st          d|d          t	          |dd          st          |          }t	          |dd          st          ||          \  }}| j        j        sOt          |t          t          f          s
J d            |j        j         d| }t          j        d| d	          t!          | j                  }t          |t                    r| j        |_         ||||          }t          |t"                    r&| j                            |j                   |j        }|S )
NzUnknown method z in object.zno-args-flatteningFz!no-second-level-holder-flatteningzfor mypy.zModule methods (z/) cannot be invoked during project declaration.)r   r   rY   r$   getattrr    r!   r|   active_projectnamerZ   r   r   INFOr]   r   r  r   r   process_new_valuesnew_objectsreturn_value)	r   ra  r   r1   modobjmethodfull_method_namestaterets	            rH   method_callzModuleObjectHolder.method_callf  sp   !##K00 	LJJJJKKKv3U;; 	!4==DvBEJJ 	F7fEELD&2 	@f8J&KLLXXjXXX"(+"2BB[BB)*~=M*~*~*~D,--
 fo.. 	2!%!1FfUD&))c,-- 	#//@@@"C
rG   N)ra  r?   r   r   r1   r8   rU   r7   )rB   rC   rD   ro  rF   rG   rH   r`  r`  e  s(             rG   r`  c                      e Zd ZddZdS )MutableModuleObjectHolderr  T.Dict[int, T.Any]rU   'MutableModuleObjectHolder'c                `    t          j        | j        |          }t          || j                  S r  )r   r   r   rq  r|   )r   r  rj  s      rH   r  z&MutableModuleObjectHolder.__deepcopy__  s)    t/66(1ABBBrG   N)r  rr  rU   rs  )rB   rC   rD   r  rF   rG   rH   rq  rq    s.        C C C C C CrG   rq  _BuildTargetc                      e Zd Zd0 fdZd1dZed2d
            Zd3dZee	d4d                        Z
ee	d5d                        Zee	d6d                        Zee	 eddd          d6d                                    Zee	d6d                        Ze	 edej        eej        ej        ej        f          d7d                        Ze ed  ed!ed"d# ej        d$          %                    d8d(                        Zee	 ed)d*d+          d6d,                                    Z e d-d.          ee	d6d/                                    Z! xZ"S )9BuildTargetHolderrB  ru  interpr}   c                    t                                          ||           | j                            | j        | j        | j        | j        | j        | j	        | j
        | j        | j        d	           d S )N)	extract_objectsextract_all_objectsr]   get_idoutdirr  r   r  private_dir_include)r   r   r   r   extract_objects_methodextract_all_objects_methodr  get_id_methodoutdir_methodr  r  r  private_dir_include_methodr   rB  rx  r   s      rH   r   zBuildTargetHolder.__init__  s    (((0K484S%)%5'+'9'+'9*.*?%)%5&*&7484S	 	 		  		  		  		  		 rG   rU   r?   c                    d}| j         }t          |t          j                  sJ |                    | j        j        |                                |j                  S Nz<{} {}: {}>)	r   rZ   r	   BuildTargetr   r   rB   r|  filenamer   rhs      rH   r  zBuildTargetHolder.__repr__  sM    !U./////xx/QZHHHrG   build.BuildTargetc                    t          | j        t          j                  r| j                                        S t          | j        t          j                  sJ | j        S r  )rZ   r   r	   BothLibrariesget_default_objectr  r   s    rH   _target_objectz BuildTargetHolder._target_object  sT    d&(;<< 	9#66888$*E,=>>>>>rG   rK   c                `    | j         j        j                            | j         j                   S r  )r  environmentmachinesmatches_build_machinefor_machiner   s    rH   is_crosszBuildTargetHolder.is_cross  s)    &2;QQRVReRqrrrrrG   r   r   r1   r8   c                    t          | j        t          j                  r| j        j        s!t          j        dd| j        j                   dS )NzBuildTarget.foundr   )rP   T)rZ   r   r	   
Executablewas_returned_by_find_programr   r  rP   r   s      rH   r  zBuildTargetHolder.found_method  sO     4+U-=>> 	i4CSCp 	i!"5xDL\LghhhhtrG   build.IncludeDirsc                v    t          j        dg d| j        j                            | j                  g          S )Nr   F)r	   IncludeDirsr|   backendget_target_private_dirr  r   s      rH   r  z,BuildTargetHolder.private_dir_include_method  s6      R1A1I1`1`aeat1u1u0vwwwrG   c                J    | j         j                            | j                  S r  r|   r  get_target_filename_absr  r   s      rH   r  z"BuildTargetHolder.full_path_method  s!     '??@STTTrG   zBuildTarget.pathr  z!Use BuildTarget.full_path insteadc                J    | j         j                            | j                  S r  r  r   s      rH   r  zBuildTargetHolder.path_method  s!     '??@STTTrG   c                J    | j         j                            | j                  S r  )r|   r  get_target_dirr  r   s      rH   r  zBuildTargetHolder.outdir_method  s!     '66t7JKKKrG   rz  )r$  GT.Tuple[T.List[T.Union[mesonlib.FileOrString, 'build.GeneratedTypes']]]r:   build.ExtractedObjectsc                    | j         }| j        j                            |d          }|dk    p|dk    o
|j        dk    }|                    |d         |          S )Nunityonsubprojectsr   r   )r  r|   r   get_option_for_targetrP   rz  )r   r   r1   tobjunity_valueis_unitys         rH   r  z(BuildTargetHolder.extract_objects_method  sb     "&/EEdGTT4'cK=,H,bT_`bMb##DGX666rG   r{  rL   Fr  a                  extract_all_objects called without setting recursive
                keyword argument. Meson currently defaults to
                non-recursive to maintain backward compatibility but
                the default will be changed in meson 2.0.
            )rT   r  not_set_warningr  *'kwargs.BuildTargeMethodExtractAllObjects'c                B    | j                             |d                   S )NrL   )r  r{  r   s      rH   r  z,BuildTargetHolder.extract_all_objects_method  s      "66vk7JKKKrG   zBuildTarget.get_idz1.2.0zThis was never formally documented and does not seem to have a real world use. See https://github.com/mesonbuild/meson/pull/6061c                4    | j                                         S r  )r  r|  r   s      rH   r  zBuildTargetHolder.get_id_method  s     "))+++rG   r]   r  c                    | j         j        S r  )r  r]   r   s      rH   r  zBuildTargetHolder.name_method  s     "''rG   )rB  ru  rx  r}   r   )rU   r  rs  r   )r   r   r1   r8   rU   r  r  )r   r  r1   r:   rU   r  )r   r  r1   r  rU   r  )#rB   rC   rD   r   r  r   r  r  r   r   r  r  r  r   r  r  r   r   Filer?   r	   CustomTargetCustomTargetIndexGeneratedListr  r   r   rK   textwrapdedentr  r  r   r  r   r   s   @rH   rw  rw    s                  I I I I       X s s s s    X Y
 x x x X Yx U U U X YU )85XYYU U U ZY X YU L L L X YL ^%sEDVX]Xoqv  rE  0F  G  G  G7 7 7 G  G X7 \	uH+HO -  	
 	
 	
 L L L  YL +WKL L, , ,L L X Y
, Z!!( ( ( X Y "!( ( ( ( (rG   rw  c                      e Zd ZdS )ExecutableHolderNr  rF   rG   rH   r  r    r  rG   r  c                      e Zd ZdS )StaticLibraryHolderNr  rF   rG   rH   r  r    r  rG   r  c                      e Zd ZdS )SharedLibraryHolderNr  rF   rG   rH   r  r    r  rG   r  c                  x     e Zd Zd fdZddZeedd                        Zeedd                        Z xZ	S )BothLibrariesHolderlibsbuild.BothLibrariesrx  r}   c                    t                                          ||           | j                            | j        | j        d           d S )N)get_shared_libget_static_lib)r   r   r   r   get_shared_lib_methodget_static_lib_method)r   r  rx  r   s      rH   r   zBothLibrariesHolder.__init__  sV    v&&&t/I/3/I  	  	  	  	  	 rG   rU   r?   c                    d}| j         j        }| j         j        }|                    | j        j        |                                |j        |                                |j                  S )Nz<{} {}: {}, {}: {}>)r   sharedstaticr   r   rB   r|  r  )r   r  h1h2s       rH   r  zBothLibrariesHolder.__repr__  sR    !$$xx/bk299;;XZXcdddrG   r   r   r1   r8   build.SharedLibraryc                P    t          j         | j        j                  }d |_        |S r  )r   r   r  both_libr   r   r1   libs       rH   r  z)BothLibrariesHolder.get_shared_lib_method  %     i(/00
rG   build.StaticLibraryc                P    t          j         | j        j                  }d |_        |S r  )r   r   r  r  r  s       rH   r  z)BothLibrariesHolder.get_static_lib_method  r  rG   )r  r  rx  r}   r   )r   r   r1   r8   rU   r  )r   r   r1   r8   rU   r  )
rB   rC   rD   r   r  r   r   r  r  r   r   s   @rH   r  r    s                   e e e e    X Y
    X Y    rG   r  c                      e Zd ZdS )SharedModuleHolderNr  rF   rG   rH   r  r    r  rG   r  c                      e Zd ZdS )	JarHolderNr  rF   rG   rH   r  r    r  rG   r  c                  l     e Zd Zd fdZ edd          eedd                                    Z xZS )CustomTargetIndexHolderrB  build.CustomTargetIndexrx  r}   c                    t                                          ||           | j                            d| j        i           d S r  r  r  s      rH   r   z CustomTargetIndexHolder.__init__  sM    ((([$*?  	  	  	  	  	 rG   zcustom_target[i].full_pathr  r   r   r1   r8   rU   r?   c                f    | j         j        J | j         j                            | j                  S r  r|   r  r  r   r   s      rH   r  z(CustomTargetIndexHolder.full_path_method  s3     '333'??@PQQQrG   )rB  r  rx  r}   r  )	rB   rC   rD   r   r   r   r   r  r   r   s   @rH   r  r    s                   
 Z,h77R R R X Y 87R R R R RrG   r  _CTc                       e Zd Zd fdZddZeedd                        Z edd          eedd                                    Z	e e
ej        e          dd                        Z xZS )_CustomTargetHolderrB  r  rx  r}   c                    t                                          ||           | j                            | j        | j        d           | j                            t          j        | j	        i           d S )N)r  to_list)
r   r   r   r   r  to_list_method	operatorsr   INDEXop_indexr  s      rH   r   z_CustomTargetHolder.__init__#  s    ((($*?(,(;  	  	  	  	
 	 	 	 	 	rG   rU   r?   c                    d}| j         }|                    | j        j        |                                |j                  S r  )r   r   r   rB   r|  commandr  s      rH   r  z_CustomTargetHolder.__repr__-  s4    xx/QYGGGrG   r   r   r1   r8   c                J    | j         j                            | j                  S r  r  r   s      rH   r  z$_CustomTargetHolder.full_path_method2  s!     '??@PQQQrG   zcustom_target.to_listr  T.List[build.CustomTargetIndex]c                H    g }| j         D ]}|                    |           |S r  )r   r  )r   r   r1   resultis        rH   r  z"_CustomTargetHolder.to_list_method7  s5     ! 	 	AMM!rG   otherr   r  c                    	 | j         |         S # t          $ r6 t          d| d| j         j         dt	          | j                    d          w xY w)NzIndex z  out of bounds of custom target z output of size rc  )r   
IndexErrorr#   r]   r  )r   r  s     rH   r  z_CustomTargetHolder.op_index@  s    	T#E** 	T 	T 	T"  $SE  $S  $SSWScSh  $S  $Sz}  C  O  {P  {P  $S  $S  $S  T  T  T	Ts
    A A)rB  r  rx  r}   r   r  )r   r   r1   r8   rU   r  )r  r   rU   r  )rB   rC   rD   r   r  r   r   r  r   r  r   r   r  r   r  r   r   s   @rH   r  r  "  s            H H H H
 R R R X YR Z'22   X Y 32 ^M'--T T T .- XT T T T TrG   r  c                      e Zd ZdS )CustomTargetHolderNr  rF   rG   rH   r  r  H  r  rG   r  c                      e Zd ZdS )RunTargetHolderNr  rF   rG   rH   r  r  K  r  rG   r  c                      e Zd ZdS )AliasTargetHolderNr  rF   rG   rH   r  r  N  r  rG   r  c                      e Zd ZdS )GeneratedListHolderNr  rF   rG   rH   r  r  Q  r  rG   r  c                      e Zd Zd fdZ eddeej        ej	        ej
        ej        f           ed ed	eefd
           ed eee          dg            ej        d                    dd                        Z xZS )GeneratorHoldergenbuild.Generatorr|   r}   c                    t                                          ||           | j                            d| j        i           d S )Nprocess)r   r   r   r   process_method)r   r  r|   r   s      rH   r   zGeneratorHolder.__init__U  sA    k***Y(;<=====rG   zgenerator.processr0   )r%  r$  preserve_path_fromz0.45.0r  
extra_argsT)r.   rT   r  r   DT.Tuple[T.List[T.Union[str, mesonlib.File, 'build.GeneratedTypes']]]r1   'kwargs.GeneratorProcess'rU   build.GeneratedListc                   |d         }|Mt           j                            |          }t           j                            |          st	          d          t          d |d         D                       r t          j        dd| j        j	                   | j
                            |d         | j        ||d         |d         	          }|S )
Nr  z;Preserve_path_from must be an absolute path for now. Sorry.c              3  x   K   | ]5}t          |t          j        t          j        t          j        f          V  6d S r  )rZ   r	   r  r  r  )rj   as     rH   	<genexpr>z1GeneratorHolder.process_method.<locals>.<genexpr>j  s=      rrefz!e0%2I5K^_``rrrrrrrG   r   zECalling generator.process with CustomTarget or Index of CustomTarget.rk  r  r   )r  r   )r   r   normpathisabsr#   anyr   r  r|   rP   r   process_files)r   r   r1   r  gls        rH   r  zGeneratorHolder.process_methodY  s     $$89)!#!1!12D!E!E7==!344 f&'deeerrjnopjqrrrrr 	7!W$*57 7 7 ++DGT5E,>6R^K_eklqer , t t 	rG   )r  r  r|   r}   )r   r  r1   r  rU   r  )rB   rC   rD   r   r   r?   r   r  r	   r  r  r  r   r   r%   r   ro  r&   r  r  r   r   s   @rH   r  r  T  s       > > > > > > ^'QhmUZUgin  jA  CH  CV  AW  X  X  X\	&hxHHH	, 1 1$ < <dTVWWWG$$$	     X  X    rG   r  c                        e Zd Zd fdZ xZS )StructuredSourcesHolderrz  build.StructuredSourcesrx  r}   c                L    t                                          ||           d S r  )r   r   )r   rz  rx  r   s      rH   r   z StructuredSourcesHolder.__init__w  s#    &)))))rG   )rz  r  rx  r}   )rB   rC   rD   r   r   r   s   @rH   r  r  u  s=        * * * * * * * * * *rG   r  )NT)
r1   rO   rP   rQ   rR   rS   rT   rK   rU   rV   )r1   rd   rU   re   )
__future__r   r   r   r   r   r  pathlibr   r   r   r   r   r	   r
   modulesr   r   r   r   r   backend.backendsr   interpreterbaser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   interpreter.type_checkingr%   r&   r'   r(   dependenciesr)   r*   r+   programsr,   r-   r.   r/   typingr   TYPE_CHECKINGr1   cmake.interpreterr2   	envconfigr3   r4   r5   r6   r7   r8   r9   r:   r|   r;   typing_extensionsr<   r>   rJ   r?   rN   rE   rc   rw   r[   ry   r   EnvironmentVariablesr  r3  rt  r5  rK   r  r|  TypeVarr  r  r  r  r  r  r  r  r  Headersr  Datar  SymlinkDatar   
InstallDirr"  Manr$  EmptyDirr&  ExtractedObjectsr(  r*  rA  rD  rF  r`  rq  Unionr  r  ru  rw  r  r  StaticLibraryr  SharedLibraryr  r  SharedModuler  Jarr  r  r  r  r  r  r  	RunTargetr  AliasTargetr  r  r  	Generatorr  StructuredSourcesr  rF   rG   rH   <module>r3     s   " " " " " " " 				        " " " " " " " "                         g g g g g g g g g g g g g g + + + + + +{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ` _ _ _ _ _ _ _ _ _ _ _ J J J J J J J J J J & & & & & & : : : : : : : : : :    ? 444444'''''' B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B((((((++++++               -6IoX,W,W W W W W
 JN+/' ' ' ' ':
) 
) 
) 
)nj nj nj nj nj,w'@A nj nj njbP P P P P' P P Pd0D 0D 0D 0D 0Dh.K!LNf 0D 0D 0Df 2;=3PX/1Z1Z  Z Z Z Zg; g; g; g; g;l5+BCE] g; g; g;V IndE222IkdE222IgdE222IjdE222IidE222 \C \C \C \C \C|J/ \C \C \C| 19Z777-( -( -( -( -(\(3 -( -( -(^	 	 	 	 	2?C 	 	 	% % % % %L9 % % %D+Z +Z +Z +Z +ZL/ +Z +Z +Z\	 	 	 	 	U%67 	 	 	
W 
W 
W 
W 
Whm, 
W 
W 
W	 	 	 	 	L/ 	 	 		 	 	 	 	ej) 	 	 		 	 	 	 	U%67 	 	 		 	 	 	 	|E$45 	 	 		 	 	 	 	UY' 	 	 		 	 	 	 	\%.1 	 	 		 	 	 	 	\%*@A 	 	 	    !   @1 1 1 1 1d 1 1 1	 	 	 	 	 	 	 	,/ ,/ ,/ ,/ ,/- ,/ ,/ ,/\    l3   6C C C C C 24L C C C qyqwu7H%J]7]/^___^( ^( ^( ^( ^(\2 ^( ^( ^(@	 	 	 	 	()9: 	 	 		 	 	 	 	+E,?@ 	 	 		 	 	 	 	+E,?@ 	 	 	    +E,?@   6	 	 	 	 	*5+=> 	 	 		 	 	 	 	!%), 	 	 	R R R R Rl5+BC R R R aiU/000$T $T $T $T $T,s+ $T $T $TL	 	 	 	 	,U-?@ 	 	 		 	 	 	 	l5?3 	 	 		 	 	 	 	U%67 	 	 		 	 	 	 	,u':; 	 	 	    l5?3   B* * * * *l5+BC * * * * *rG   