
    e|              	      	   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 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.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 ddlm6Z6m7Z7m8Z8m9Z9 d dl:Z;e;jx                  r;d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 edeNe,f      ZOdePd<   	 	 dx	 	 	 	 	 	 	 dydZQdzdZR G d deej                           ZT G d  d!e      ZU G d" d#eej                     e      ZW ed$eNe,f      ZXdePd%<    G d& d'eej                     e      ZZ ed(e[d)*       ed+e[d)*       ed,e[d)*       ed-e[d)*       ed.e[d)*      gZ\ G d/ d0ee1         Z] e;j                  d1e52      Z_ G d3 d4ee_         Z` G d5 d6e`e5         Za G d7 d8ee2         Zb G d9 d:ed;         Zc G d< d=eej                           Ze G d> d?eej                           Zg G d@ dAeej                           Zi G dB dCeej                           Zk G dD dEeej                           Zm G dF dGeej                           Zo G dH dIeej                           Zq G dJ dKeej                           Zs G dL dMeej                           Zu G dN dOe      Zv G dP dQe6      Zw G dR dSe      Zx G dT dUee         Zy G dV dWeye      Zz e;j                  dXe;j                  ej                  ej                  f   2      Z~ G dY dZee~         Z G d[ d\eej                            Z G d] d^eej                           Z G d_ d`eej                           Z G da dbeej                           Z G dc ddeej                           Z G de dfeej                           Z G dg dheej                           Z e;j                  diej                  2      Z G dj dkee         Z G dl dmeej                           Z G dn doeej"                           Z G dp dqeej&                           Z G dr dseej*                           Z G dt dueej.                           Z G dv dweej2                           Zy){    )annotationsN)PathPurePath   )mesonlib)coredata)build)mlog)ModuleReturnValueModuleObjectModuleStateExtensionModule)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	OptionKey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<   y)EnvironmentSeparatorKWstr	separatorN)__name__
__module____qualname____annotations__     K/usr/lib/python3/dist-packages/mesonbuild/interpreter/interpreterobjects.pyr>   r>   (   s    rF   r>   error_messagezKwargInfo[T.Optional[str]]_ERROR_MSG_KWc                Z    | j                   d|      }d}d}d }t        |t        j                        rQ|st	        dd      }|j                  |       |j                  }|j                         rd}n1|j                         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_enabledboolr!   )r1   
subprojectfeature_checkdefaultvaldisabledrK   features           rG   extract_required_kwargrZ   /   s     &**Z
)CHH#G#x112&'>IM*%((??H^^H	C	"#bcc
 "F:Xw&&rF   c                   t        j                   | j                  dg             }|D cg c]  }t        |      j	                          }}|D ]Q  }t        j
                         r|j                  j                  d      r3|j                         rDt        d| d       |D cg c]  }t        |       c}S c c}w c c}w )Ndirs\zSearch directory z is not an absolute path.)r   stringlistifyrL   r   
expanduser
is_windowsroot
startswithis_absoluter#   r?   )r1   search_dirs_strdsearch_dirsss        rG   extract_search_dirsrh   L   s    ,,ZVZZ-CDO1@AA47%%'AKA P QVV%6%6t%< }} 1!4MNOOP ((qCF(( B )s    B<'Cc                  F    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d dZ edd       ede       ede      d!d                     Z edd       ede       ede      d!d                     Z edd       ede       ede      d!d                     Z edd      e	 ede      d"d                     Z edd      e	 ede      d"d                     Z xZS )#FeatureOptionHolderc                2   t         |   ||       |r|j                         rut        j                  d| j
                  j                  j                  t        d               }t        j                  |      | _
        |j                  | j                  _        | j                  j                  | j                  | j                  | j                   | j"                  | j$                  | j&                  | j(                  | j*                  | j,                  d	       y )Ncoredata.UserFeatureOptionauto_features)	enabledrX   allowedautorequiredisable_auto_ifenable_auto_if
disable_if	enable_if)super__init__is_autoTcastenvr   optionsr-   copyheld_objectrP   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)selfoptioninterpreterrp   	__class__s       rG   rw   zFeatureOptionHolder.__init__Y   s    -fnn&6668I8I8Q8QR[\kRl8mnD#yyD$*KKD!(;(;)-)=)=(,(;(;%)%5%5(,(;(;040K0K/3/I/I+/+A+A*.*?*?	 		 rF   c                J    | j                   sdS | j                   j                  S NrX   )r~   valuer   s    rG   r   zFeatureOptionHolder.valuek   s!    !%!1!1zMt7G7G7M7MMrF   c                R    t        j                  | j                        }d|_        |S r   r}   deepcopyr~   r   )r   rX   s     rG   as_disabledzFeatureOptionHolder.as_disabledo   s"    ==!1!12#rF   c                R    t        j                  | j                        }d|_        |S Nrn   r   )r   rn   s     rG   
as_enabledzFeatureOptionHolder.as_enabledt   s"    -- 0 01!rF   c                     | j                   dk(  S r   r   r   argsr1   s      rG   r   z"FeatureOptionHolder.enabled_methody   s     zzY&&rF   c                     | j                   dk(  S r   r   r   s      rG   r   z#FeatureOptionHolder.disabled_method~   s     zzZ''rF   zfeature_option.allowed()0.59.0c                     | j                   dk7  S r   r   r   s      rG   r   z"FeatureOptionHolder.allowed_method   s     zzZ''rF   c                     | j                   dk(  S )Nrp   r   r   s      rG   r   zFeatureOptionHolder.auto_method   s     zzV##rF   c                    |st        j                  | j                        S | j                  dk(  r/d| j                  j                   d}|r|d| z  }t        |      | j                         S )Nrn   Feature z cannot be enabled: )r}   r   r~   r   rP   r!   r   )r   	conditionmessageerr_msgs       rG   _disable_ifzFeatureOptionHolder._disable_if   so    ==!1!122::" !1!1!6!6 77IJGRy>)&w//!!rF   zfeature_option.require()zfeature_option.requirec                4    | j                  |d    |d         S Nr   rH   r   r   s      rG   r   z"FeatureOptionHolder.require_method   s"     DGVO-DEErF   zfeature_option.disable_if()z1.1.0zfeature_option.disable_ifc                2    | j                  |d   |d         S r   r   r   s      rG   r   z%FeatureOptionHolder.disable_if_method   s      Q)@AArF   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        |      | j                         S )Nr   rX   r   z cannot be disabledrH   r   )r}   r   r~   r   rP   r!   r   )r   r   r1   r   s       rG   r   z$FeatureOptionHolder.enable_if_method   s     Aw==!1!122::# !1!1!6!6 77JKGo&R 7899&w//  rF   z feature_option.disable_auto_if()zfeature_option.disable_auto_ifc                    | j                   dk7  s|d   st        j                  | j                        S | j	                         S Nrp   r   )r   r}   r   r~   r   r   s      rG   r   z*FeatureOptionHolder.disable_auto_if_method   s:     37**2FdSTgt}}T--.m[_[k[k[mmrF   zfeature_option.enable_auto_if()zfeature_option.enable_auto_ifc                    | j                   dk(  r|d   r| j                         S t        j                  | j                        S r   )r   r   r}   r   r~   r   s      rG   r   z)FeatureOptionHolder.enable_auto_if_method   s7     %)JJ&$8T!Wt i$--X\XhXhJiirF   )r   rl   r   'Interpreter'returnr?   )r   rl   r   T.List[TYPE_var]r1   r8   r   rS   )r   rS   r   T.Optional[str]r   rl   )r   T.Tuple[bool]r1   z'kwargs.FeatureOptionRequire'r   rl   )r   r   r1   r8   r   rl   )rA   rB   rC   rw   propertyr   r   r   r   r   r   r   r   r   r   r   r   rS   r   rI   r   r   r   r   r   __classcell__r   s   @rG   rj   rj   X   s    $ N N

 '  ' (  ( *H5( 6  ( $  $	" *H5,d3 F	 4 6F -w7/6#B	 7 8B ,g6.5"	!	 6 7	! 2H=4d;n <  >n 17;3T:j ;  <jrF   rj   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 )
RunProcessc                8   t         |           t        |t              st	        d      |
| _        | j                  |||||||||		      \  | _        | _        | _	        | j                  j                  | j                  | j                  | j                  d       y )Nz1BUG: RunProcess must be passed an ExternalProgram)
returncodestdoutstderr)rv   rw   rM   r+   AssertionErrorcapturerun_commandr   r   r   r   r   returncode_methodstdout_methodstderr_method)r   cmdr   r{   
source_dir	build_dirsubdirmesonintrospectin_builddircheckr   r   s              rG   rw   zRunProcess.__init__   s     	#/ !TUU484D4DS$PSU_ajlr  uD  FQ  SX  5Y1dk4+A+A'+'9'9'+'9'9 	 rF   c
                   |j                         |z   }
|||dj                  |D cg c]  }t        j                  |       c}      d}|r!t        j
                  j                  ||      }n t        j
                  j                  ||      }t        j                  j                         }|j                  |       |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       |	rG|j&                  d	k7  r8t)        d
j+                  t!        j"                  |
      |j&                              |j&                  ||fS c c}w # t,        $ r" t)        dt!        j"                  |
      z        w xY w)N )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shlexquote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xmenvr   	child_envr   poes                      rG   r   zRunProcess.run_command   s    )D0%/$- &#&88_,UU[[^,U#V
 '',,y&1C'',,z62CJJOO%	KK	*	$(LLj6H6H

%x'9'9-'HI	n v9RUVGAq!||

+,

1

45JJ'(JJqMJJrN**+P+W+WX`XjXjkxXy{|  |H  |H  ,I  J  J<<A%%5 -V6 ! 	n&'H8K]K]^kKl'lmm	ns   H$C7H! !+Ic                    | j                   S N)r   r   s      rG   r   zRunProcess.returncode_method  s     rF   c                    | j                   S r   )r   r   s      rG   r   zRunProcess.stdout_method       {{rF   c                    | j                   S r   )r   r   s      rG   r   zRunProcess.stderr_method  r   rF   )FFT)r   r+   r   T.List[str]r{   mesonlib.EnvironmentVariablesr   r?   r   r?   r   r?   r   r   r   rS   r   rS   r   rS   r   None)F)r   r+   r   r   r{   r   r   r?   r   r?   r   r?   r   r   r   rS   r   rS   r   zT.Tuple[int, str, str])r   r   r1   r8   r   intr   r   r1   r8   r   r?   )rA   rB   rC   rw   r   r   r   r   r   r   r   r   s   @rG   r   r      sH    &+$!% % "  4  !	 
      #.  #      +/ < #(*n(*n%*n 7*n !$	*n
  #*n  *n &1*n "&*n  *n -C*nX         rF   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	eed       e	d	e
      dd
              Z edeed       e	de
      dd              Z xZS )EnvironmentVariablesHolderc                    t         |   ||       | j                  j                  | j                  | j
                  | j                  d       y )N)setappendprepend)rv   rw   r   r   
set_methodappend_methodprepend_methodr   objr   r   s      rG   rw   z#EnvironmentVariablesHolder.__init__  sA    k*DOO'+'9'9(,(;(; 	 rF   c                z    d}|j                  | j                  j                  | j                  j                        S )Nz
<{0}: {1}>)r   r   rA   r~   envvars)r   repr_strs     rG   __repr__z#EnvironmentVariablesHolder.__repr__$  s.    t~~668H8H8P8PQQrF   c                h    t        t        j                  | j                        | j                        S r   )r   r}   r   r~   r   r   memos     rG   __deepcopy__z'EnvironmentVariablesHolder.__deepcopy__(  s$    )$--8H8H*I4K[K[\\rF   c                    | j                   j                  |      r7d|d}t        |d      j                  | j                  | j
                         y y )Nz2Overriding previous value of environment variable z with a new one0.58.0)r~   has_namer   rO   rT   current_node)r   rP   ms      rG   warn_if_has_namez+EnvironmentVariablesHolder.warn_if_has_name,  sJ    $$T*DTHO\Aq(#''9J9JK +rF   zenvironment.setr0   )varargsmin_varargsc                N    |\  }}| j                   j                  |||d          y Nr@   )r~   r   r   r   r1   rP   valuess        rG   r   z%EnvironmentVariablesHolder.set_method2  s*     fT66++>?rF   zenvironment.appendc                p    |\  }}| j                  |       | j                  j                  |||d          y r  )r  r~   r   r  s        rG   r   z(EnvironmentVariablesHolder.append_method8  s8     fd#ff[.ABrF   zenvironment.prependc                p    |\  }}| j                  |       | j                  j                  |||d          y r  )r  r~   r   r  s        rG   r   z)EnvironmentVariablesHolder.prepend_method?  s8     fd#  vvk/BCrF   )r   r   r   r   r   )r  zT.Dict[str, object]r   z'EnvironmentVariablesHolder')rP   r?   r   r   )r   zT.Tuple[str, T.List[str]]r1   z'EnvironmentSeparatorKW'r   r   )rA   rB   rC   rw   r  r  r  r   r?   r   r&   r   r   r   r   r   s   @rG   r   r     s     R]L %sCQG#%56@ 7 H@ (#sJ&(89C : KC
 )3K')9:D ; LDrF   r   description_CONF_DATA_SET_KWSc                  N    e Zd Zd fdZddZdd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d'd                     Zd(dZ edej4                        ed)d              Z xZS )*ConfigurationDataHolderc                   t         |   ||       | j                  j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  d       y )N)r   set10
set_quotedhasrL   keysget_unquoted
merge_from)rv   rw   r   r   r   set10_methodset_quoted_method
has_method
get_methodkeys_methodget_unquoted_methodmerge_from_methodr   s      rG   rw   z ConfigurationDataHolder.__init__L  sj    k*DOO&*&7&7+/+A+A$(OO$(OO%)%5%5-1-E-E+/+A+A 	 rF   c                h    t        t        j                  | j                        | j                        S r   )r  r}   r   r~   r   r  s     rG   r  z$ConfigurationDataHolder.__deepcopy__X  s$    &t}}T5E5E'FHXHXYYrF   c                .    | j                   j                  S r   )r~   usedr   s    rG   is_usedzConfigurationDataHolder.is_used[  s    $$$rF   c                :    | j                         rt        d      y )Nz>Can not set values on configuration object that has been used.)r+  r!   r   s    rG   __check_usedz$ConfigurationDataHolder.__check_used^  s    <<>&'ghh rF   zconfiguration_data.setc                l    | j                          |d   |d   f| j                  j                  |d   <   y )Nr0   r  r   )$_ConfigurationDataHolder__check_usedr~   r  r   s      rG   r   z"ConfigurationDataHolder.set_methodb  s8     	,0GVM5J+KQ(rF   zconfiguration_data.set_quotedc                    | j                          dj                  |d   j                  d            }d| d|d   f| j                  j                  |d   <   y )Nz\"r0   "r  r   )r/  r   splitr~   r  )r   r   r1   escaped_vals       rG   r"  z)ConfigurationDataHolder.set_quoted_methodh  sX     	jjas!34./}A,>}@U+VQ(rF   zconfiguration_data.set10c                `   | j                          t        |d   t              s^t        j                  d| j
                  j                         |d   dk  r+t        j                  d| j
                  j                         t        |d         |d   f| j                  j                  |d   <   y )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.r  )r/  rM   rS   r
   deprecationr   r  warningr   r~   r  r   s      rG   r!  z$ConfigurationDataHolder.set10_methodo  s     	 $q'4( H&*&6&6&C&CE Aw{ P&*&6&6&C&CE -0QL&:O+PQ(rF   zconfiguration_data.hasc                8    |d   | j                   j                  v S Nr   r~   r  r   s      rG   r#  z"ConfigurationDataHolder.has_method  s     Aw$**1111rF   zconfiguration_data.get()z0.38.0zconfiguration_data.getoptargsc                    |d   }|| j                   v r| j                   j                  |      d   S |d   |d   S t        d| d      )Nr   r0   Entry  not in configuration data.)r~   rL   r!   )r   r   r1   rP   s       rG   r$  z"ConfigurationDataHolder.get_method  s_    
 Aw4#####''-a00!W 7N"VD61L#MNNrF   z!configuration_data.get_unquoted()0.44.0zconfiguration_data.get_unquotedc                    |d   }|| j                   v r| j                   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   r?  r@  r1  )r~   rL   r!   rM   r?   )r   r   r1   rP   rW   s        rG   r&  z+ConfigurationDataHolder.get_unquoted_method  s    
 Aw4###""&&t,Q/C!W q'C&v5P'QRRc3CFcMc"gnq9
rF   c                4    | j                   j                  |   S r   r;  )r   rP   s     rG   rL   zConfigurationDataHolder.get  s    &&t,,rF   zconfiguration_data.keys()0.57.0c                4    t        | j                               S r   )sortedr  r   s      rG   r%  z#ConfigurationDataHolder.keys_method  s     diik""rF   c                \    t        | j                  j                  j                               S r   )listr~   r  r  r   s    rG   r  zConfigurationDataHolder.keys  s"    D$$++00233rF   zconfiguration_data.merge_fromc                l    |d   }| j                   j                  j                  |j                         y r:  )r~   r  r   )r   r   r1   from_objects       rG   r'  z)ConfigurationDataHolder.merge_from_method  s-     1g&&{'9'9:rF   )r   zbuild.ConfigurationDatar   r   )r  zT.Dictr   z'ConfigurationDataHolder'r   rS   )r   r   )r   z%T.Tuple[str, T.Union[str, int, bool]]r1   'kwargs.ConfigurationDataSet'r   r   )r   zT.Tuple[str, str]r1   rM  r   r   )r   z T.Tuple[str, T.Union[int, bool]]r1   rM  r   r   )r   z T.Tuple[T.Union[str, int, bool]]r1   r8   r   rS   )r   z1T.Tuple[str, T.Optional[T.Union[str, int, bool]]]r1   r8   r   zT.Union[str, int, bool])rP   r?   r   z1T.Tuple[T.Union[str, int, bool], T.Optional[str]])r   r   r1   r8   r   r   )r   r   )r   z T.Tuple[build.ConfigurationData]r1   r8   r   r   )rA   rB   rC   rw   r  r+  r/  r   r?   r   rS   r   r  r   r"  r!  r   r#  r   r$  r&  rL   r   r%  r  r	   ConfigurationDatar'  r   r   s   @rG   r  r  J  s   
 Z%i ,cCd3CD*,>?L @ EL 3S#>13EFW G ?W
 .c4[A,.@AQ B BQ ,sC.>?2  @2 *H5,cS#t<L;MNO&O+BO  O 6O 3X>5sc3PTEUDVW$/4K  X ?- +X6#   7#4 3U5L5LM;  N;rF   r  compile_argsFrV   	link_argslinksincludessourcesc                  (    e Zd Zd* fdZd+dZeed,d              Zeed-d              Zeed,d              Z	eed,d              Z
 eddd	       ede       ed ed
ed       ej"                  d            d.d                     Z edd       eddd      e ede      d/d                            Z edd      e edge d0d                     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d!eef      e      d1d"                     Z ed#d$      eed,d%                     Z ed&d$      e ed&eg      d2d'                     Z ed(d      eed3d)                     Z xZS )4DependencyHolderc                P   t         |   ||       | j                  j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  d       y )N)found	type_nameversionrP   get_pkgconfig_variableget_configtool_variableget_variablepartial_dependencyinclude_type	as_systemas_link_whole)rv   rw   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)r   depr   r   s      rG   rw   zDependencyHolder.__init__  s    k*d&7&7*.*?*?(,(;(;%)%5%57;7L7L8<8N8N-1-A-A373Q3Q-1-E-E*.*?*?.2.G.G 	 rF   c                &    | j                  g i       S r   )rb  r   s    rG   rX  zDependencyHolder.found  s      R((rF   c                .    | j                   j                  S r   r~   rY  r   s      rG   rc  z!DependencyHolder.type_name_method       )))rF   c                j    | j                   j                  dk(  ry| j                   j                         S )NinternalT)r~   rY  rX  r   s      rG   rb  zDependencyHolder.found_method  s0     %%3%%''rF   c                6    | j                   j                         S r   )r~   get_versionr   s      rG   rd  zDependencyHolder.version_method  s     ++--rF   c                6    | j                   j                         S r   )r~   get_namer   s      rG   re  zDependencyHolder.name_method  s     ((**rF   z!dependency.get_pkgconfig_variablez0.56.0z4use dependency.get_variable(pkgconfig : ...) insteadrV   r   rP  define_variablerP   c                Z   ddl m} t        | j                  |      s&t	        | j                  j                         d      |d   r>t        |d         dkD  r-t        j                  dd| j                  | j                         | j                  j                  |d	   |d
   |d         S )Nr   )PkgConfigDependencyz is not a pkgconfig dependencyrx  r0   z]dependency.get_pkgconfig_variable keyword argument "define_variable"  with more than one pair1.3.0r5  r   rV   )	pkgconfigdefault_valuepkgconfig_define)dependencies.pkgconfigr{  rM   r~   r"   rw  lenr   
single_userT   r  r]  )r   r   r1   r{  s       rG   rf  z!DependencyHolder.pkgconfig_method  s     	A$**,?@"d&6&6&?&?&A%DDb#cdd#$V4E-F)G!)K!!  #B")4??TEVEVX,,1g +#$56 - 
 	
rF   z"dependency.get_configtool_variablerA  z5use dependency.get_variable(configtool : ...) insteadz#dependency.get_config_tool_variablec                    ddl m} t        | j                  |      s&t	        | j                  j                         d      | j                  j                  |d   d      S )Nr   )ConfigToolDependencyz  is not a config-tool dependencyr   r   )
configtoolr~  )dependencies.configtoolr  rM   r~   r"   rw  r]  )r   r   r1   r  s       rG   rg  z"DependencyHolder.configtool_method  sd     	C$**,@A"d&6&6&?&?&A%DDd#eff,,Aw - 
 	
rF   dependency.partial_dependency0.46.0c                >     | j                   j                  di |}|S NrE   r~   get_partial_dependencyr   r   r1   pdeps       rG   ri  z*DependencyHolder.partial_dependency_method  $     7t66@@rF   zdependency.get_variablez0.51.0r<  cmaker}  r  rs  0.54.0sincer~  c           	     |   |d   }|0t        dd      j                  | j                  | j                         |d   r>t	        |d         dkD  r-t        j
                  dd| j                  d| j                         | j                  j                  |d	   xs ||d
   xs ||d   xs ||d   xs ||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  rs  r~  )r  r}  r  rs  r~  r  )r   rO   rT   r  r  r  r~   r]  )r   r   r1   default_varnames       rG   rh  z DependencyHolder.variable_method  s     q'&I8TXXY]YhYhjnj{j{|$%#f5G.H*IA*M!!"w")4??<}"&"3"35 ,,/4_[)<_l+>J':? 1#$67 - 
 	
rF   zdependency.include_typez0.52.0c                6    | j                   j                         S r   )r~   get_include_typer   s      rG   rj  z$DependencyHolder.include_type_method+  s     0022rF   zdependency.as_systemc                F    | j                   j                  |d   xs d      S )Nr   system)r~   generate_system_dependencyr   s      rG   rk  z!DependencyHolder.as_system_method1  s$     ::47;NhOOrF   zdependency.as_link_wholec                    t        | j                  t              st        d      | j                  j	                         }|S )NzFas_link_whole method is only supported on declare_dependency() objects)rM   r~   r*   r!   generate_link_whole_dependency)r   r   r1   new_deps       rG   rl  z%DependencyHolder.as_link_whole_method7  s:     $**,>?&'opp""AACrF   )rm  r(   r   r   rL  r   r   )r   T.Tuple[str]r1   z'kwargs.DependencyPkgConfigVar'r   r?   )r   r  r1   r8   r   r?   r   T.List[TYPE_nvar]r1   z*'kwargs.DependencyMethodPartialDependency'r   r(   )r   T.Tuple[T.Optional[str]]r1   z'kwargs.DependencyGetVariable'r   r?   )r   r  r1   r8   r   r(   )r   r   r1   r8   r   r(   )rA   rB   rC   rw   rX  r   r   rc  rb  rd  re  r   r   r?   r   r   r'   evolverf  r   rg  _PARTIAL_DEP_KWARGSri  r$   rh  rj  rk  rl  r   r   s   @rG   rV  rV    s}    ) *  * (  (
 .  . +  + :HMO7=+)S"-"""(9:

 >O
 4h?;XNP93?
 @ P @

 /:1H4GH I  ; )84-u=!'C?++X/,h0*sHoX>/C?3
 > 5
" )843   53 &1*SE:P ;  2P *H5   6rF   rV  _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 )_ExternalProgramHolderc                    t         |   ||       | j                  j                  | j                  | j
                  | j                  | j                  d       y )N)rX  r   rZ  	full_path)rv   rw   r   r   rb  path_methodrd  full_path_method)r   epr   r   s      rG   rw   z_ExternalProgramHolder.__init__C  sN    [)d&7&7%)%5%5(,(;(;*.*?*?A 	BrF   c                "    | j                         S r   rX  r   s      rG   rb  z#_ExternalProgramHolder.found_methodJ       zz|rF   zExternalProgram.path0.55.0z'use ExternalProgram.full_path() insteadc                "    | j                         S r   
_full_pathr   s      rG   r  z"_ExternalProgramHolder.path_methodO  s    
   rF   zExternalProgram.full_pathc                "    | j                         S r   r  r   s      rG   r  z'_ExternalProgramHolder.full_path_methodV  s       rF   c                x    | j                         st        d      | j                  j                         }|J |S )Nz6Unable to get the path of a not-found external program)rX  r!   r~   get_path)r   r   s     rG   r  z!_ExternalProgramHolder._full_path\  s<    zz|&'_``((*rF   zExternalProgram.versionz0.62.0c                    | j                         st        d      	 | j                  j                  | j                        S # t
        j                  $ r Y yw xY w)Nz9Unable to get the version of a not-found external programunknown)rX  r!   r~   ru  r   r   MesonExceptionr   s      rG   rd  z%_ExternalProgramHolder.version_methodc  sS     zz|&'bcc	##//0@0@AA&& 		s   $A AAc                6    | j                   j                         S r   r~   rX  r   s    rG   rX  z_ExternalProgramHolder.foundn  s    %%''rF   )r  r  r   r   r   r   r   r   r   rL  )rA   rB   rC   rw   r   r   rb  r   r  r   r  r  rd  rX  r   r   s   @rG   r  r  B  s    B    -x@B!B  ! +X6! 7  ! )84 5  (rF   r  c                      e Zd Zy)ExternalProgramHolderNrA   rB   rC   rE   rF   rG   r  r  q      rF   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
 d
d                     Z xZS )ExternalLibraryHolderc                    t         |   ||       | j                  j                  | j                  | j
                  | j                  d       y )N)rX  rY  r^  )rv   rw   r   r   rb  rc  ri  )r   elr   r   s      rG   rw   zExternalLibraryHolder.__init__u  sC    [)d&7&7*.*?*?373Q3Q 	 rF   c                .    | j                   j                  S r   rp  r   s      rG   rc  z&ExternalLibraryHolder.type_name_method|  rq  rF   c                6    | j                   j                         S r   r  r   s      rG   rb  z"ExternalLibraryHolder.found_method  s     %%''rF   r  r  c                >     | j                   j                  di |}|S r  r  r  s       rG   ri  z/ExternalLibraryHolder.partial_dependency_method  r  rF   )r  r)   r   r   r   r   r  )rA   rB   rC   rw   r   r   rc  rb  r   r   r  ri  r   r   s   @rG   r  r  t  sy      *  * (  ( /:1H4GH I  ;rF   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 )
MachineHolderc           	         t         |   ||       | j                  j                  | j                  | j
                  | j                  | j                  | j                  | j                  d       y )N)r  cpu
cpu_familyendiankernel	subsystem)
rv   rw   r   r   system_method
cpu_methodcpu_family_methodendian_methodkernel_methodsubsystem_method)r   machine_infor   r   s      rG   rw   zMachineHolder.__init__  s\    {3t'9'9$(OO+/+A+A'+'9'9'+'9'9*.*?*? 	 rF   c                .    | j                   j                  S r   )r~   r  r   s      rG   r  zMachineHolder.cpu_family_method  s     ***rF   c                .    | j                   j                  S r   )r~   r  r   s      rG   r  zMachineHolder.cpu_method  s     ###rF   c                .    | j                   j                  S r   )r~   r  r   s      rG   r  zMachineHolder.system_method       &&&rF   c                .    | j                   j                  S r   )r~   r  r   s      rG   r  zMachineHolder.endian_method  r  rF   c                p    | j                   j                  | j                   j                  S t        d      )Nz0Kernel not defined or could not be autodetected.)r~   r  r!   r   s      rG   r  zMachineHolder.kernel_method  s4     "".##***"#UVVrF   c                p    | j                   j                  | j                   j                  S t        d      )Nz3Subsystem not defined or could not be autodetected.)r~   r  r!   r   s      rG   r  zMachineHolder.subsystem_method  s4     %%1##---"#XYYrF   )r  z'MachineInfo'r   r   r   )rA   rB   rC   rw   r   r   r  r  r  r  r  r  r   r   s   @rG   r  r    s      +  + $  $ '  ' '  ' W  W
 Z  ZrF   r  r3   c                      e Zd Zy)IncludeDirsHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)
FileHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)HeadersHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)
DataHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)SymlinkDataHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)InstallDirHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)	ManHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)EmptyDirHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)GeneratedObjectsHolderNr  rE   rF   rG   r  r    r  rF   r  c                  \     e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZddZddZ xZS )Testc                   t         |           || _        t        |      | _        || _        || _        || _        || _        || _	        || _
        |	| _        |
| _        || _        t        j                  |      | _        || _        || _        y r   )rv   rw   rP   r.   suiteproject_nameexedependsis_parallelcmd_argsr{   should_failtimeoutworkdirr   from_strprotocolpriorityverbose)r   rP   projectr  r  r  r  r  r{   r  r  r  r  r  r  r   s                  rG   rw   zTest.__init__  s     		U^
#& &$--h7 rF   c                    | j                   S r   )r  r   s    rG   get_exezTest.get_exe  s    xxrF   c                    | j                   S r   ry  r   s    rG   rw  zTest.get_name  s    yyrF   )rP   r?   r  r?   r  r   r  >T.Union[ExternalProgram, build.Executable, build.CustomTarget]r  z6T.List[T.Union[build.CustomTarget, build.BuildTarget]]r  rS   r  z1T.List[T.Union[str, mesonlib.File, build.Target]]r{   r   r  rS   r  r   r  r   r  r?   r  r   r  rS   )r   r  r   )rA   rB   rC   rw   r  rw  r   r   s   @rG   r  r    s    TP # M	
 4 # .1 <K WZ  *.0rF   r  c                      e Zd Zy)NullSubprojectInterpreterNr  rE   rF   rG   r  r    r  rF   r  c                       e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 d fdZeedd              ZddZeee	d	d                     Z
 xZS )
SubprojectHolderc                   t         |           || _        || _        || _        || _        t        |      j                         | _        d | _	        || _
        | j                  j                  | j                  | j                  d       y )N)r]  rX  )rv   rw   r~   warningsdisabled_feature	exceptionr   as_posixr   cm_interpreter	callstackr   r   get_variable_methodrb  )r   subinterpreterr   r	  r
  r  r  r   s          rG   rw   zSubprojectHolder.__init__  sz     	)  0"v&//1<@"T-E-E&*&7&7 	 rF   c                "    | j                         S r   r  r   s      rG   rb  zSubprojectHolder.found_method  r  rF   c                8    t        | j                  t               S r   )rM   r~   r  r   s    rG   rX  zSubprojectHolder.found  s    d..0IJJJrF   c                   t        |      dk  st        |      dkD  rt        d      t        | j                  t              rt        d| j
                   d      |d   }t        |t              st        d      	 | j                  j                  |   S # t        $ r Y nw xY wt        |      dk(  r| j                  j                  |d         S t        d| d	      )
Nr0   r   z(Get_variable takes one or two arguments.zSubproject "z$" disabled can't get_variable on it.r   z-Get_variable first argument must be a string.zRequested variable "z" not found.)r  r!   rM   r~   r  r   r?   	variablesKeyError
_holderifyr"   )r   r   r1   varnames       rG   r  z$SubprojectHolder.get_variable_method  s     t9q=CIM&'QRRd&&(AB&dkk]Bg'hiiq''3'&'VWW	##--g66 		 t9>##..tAw77!5gYlKLLs   <B 	B! B!)r   NNN)r  z1T.Union['Interpreter', NullSubprojectInterpreter]r   r?   r	  r   r
  r   r  zT.Optional[Exception]r  zT.Optional[T.List[str]]r   r   r   rL  )r   r   r1   r8   r   z$T.Union[TYPE_var, InterpreterObject])rA   rB   rC   rw   r   r   rb  rX  r   r   r  r   r   s   @rG   r  r    s     "#59486:    $3  2	 
 4 
 @D $   K M   MrF   r  c                      e Zd ZddZy)ModuleObjectHolderc                   | j                   }|j                  j                  |      }|st        d|d      t	        |dd      st        |      }t	        |dd      st        ||      \  }}t        | j                        }t        |t              r| j                  |_         ||||      }t        |t              r1| j                  j                  |j                         |j                  }|S )NzUnknown method z in object.zno-args-flatteningFz!no-second-level-holder-flattening)r~   r   rL   r#   getattrr   r    r   r   rM   r   r   process_new_valuesnew_objectsreturn_value)r   method_namer   r1   modobjmethodstaterets           rG   method_callzModuleObjectHolder.method_call.  s    !!##K0kJKKv3U;4=DvBEJ7fELD&D,,-
 fo.!%!1!1FUD&)c,-//@""C
rF   N)r  r?   r   r   r1   r8   r   r7   )rA   rB   rC   r$  rE   rF   rG   r  r  -  s    rF   r  c                      e Zd ZddZy)MutableModuleObjectHolderc                n    t        j                  | j                  |      }t        || j                        S r   )r}   r   r~   r&  r   )r   r  r   s      rG   r  z&MutableModuleObjectHolder.__deepcopy__E  s+    t//6(1A1ABBrF   N)r  zT.Dict[int, T.Any]r   z'MutableModuleObjectHolder')rA   rB   rC   r  rE   rF   rG   r&  r&  D  s    CrF   r&  _BuildTargetc                  8    e Zd Zd fdZddZed d       Zd!dZee	d"d              Z
ee	d#d              Zee	d$d              Zee	 edd	d
      d$d                     Zee	d$d              Ze	 edej$                  eej*                  ej,                  ej.                  f      d%d              Ze ed ededd ej:                  d                  d&d              Zee	 eddd      d$d                     Z e dd      ee	d$d                     Z! xZ"S )'BuildTargetHolderc                $   t         |   ||       | j                  j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  d	       y )N)	extract_objectsextract_all_objectsrP   get_idoutdirr  r   rX  private_dir_include)rv   rw   r   r   extract_objects_methodextract_all_objects_methodre  get_id_methodoutdir_methodr  r  rb  private_dir_include_methodr   targetinterpr   s      rG   rw   zBuildTargetHolder.__init__N  sy    (0K0K484S4S%)%5%5'+'9'9'+'9'9*.*?*?%)%5%5&*&7&7484S4S	 		 rF   c                    d}| j                   }t        |t        j                        sJ |j	                  | j
                  j                  |j                         |j                        S Nz<{} {}: {}>)	r~   rM   r	   BuildTargetr   r   rA   r.  filenamer   rhs      rG   r  zBuildTargetHolder.__repr__[  sO    !U..///xx//QZZHHrF   c                    t        | j                  t        j                        r| j                  j	                         S t        | j                  t        j
                        sJ | j                  S r   )rM   r~   r	   BothLibrariesget_default_objectr;  r   s    rG   _target_objectz BuildTargetHolder._target_objecta  sU    d&&(;(;<##6688$**E,=,=>>>rF   c                    | j                   j                  j                  j                  | j                   j                         S r   )rC  environmentmachinesmatches_build_machinefor_machiner   s    rG   is_crosszBuildTargetHolder.is_crossh  s5    &&22;;QQRVReReRqRqrrrrF   c                    t        | j                  t        j                        r| j                  j                  s,t        j                  dd| j                  j                         y)NzBuildTarget.foundr   )rT   T)rM   r~   r	   
Executablewas_returned_by_find_programr   r  rT   r   s      rG   rb  zBuildTargetHolder.found_methodk  sJ     4++U-=-=>4CSCSCpCp!!"5xDL\L\LgLghrF   c                    t        j                  dg d| j                  j                  j	                  | j
                        g      S )Nr   F)r	   IncludeDirsr   backendget_target_private_dirrC  r   s      rG   r5  z,BuildTargetHolder.private_dir_include_methodr  s<       R1A1A1I1I1`1`aeatat1u0vwwrF   c                `    | j                   j                  j                  | j                        S r   r   rO  get_target_filename_absrC  r   s      rG   r  z"BuildTargetHolder.full_path_methodw  s'     ''??@S@STTrF   zBuildTarget.pathr  z!Use BuildTarget.full_path insteadc                `    | j                   j                  j                  | j                        S r   rR  r   s      rG   r  zBuildTargetHolder.path_method|  s'     ''??@S@STTrF   c                `    | j                   j                  j                  | j                        S r   )r   rO  get_target_dirrC  r   s      rG   r4  zBuildTargetHolder.outdir_method  s'     ''66t7J7JKKrF   r,  )r  c                >    | j                   j                  |d         S r:  )rC  r,  r   s      rG   r1  z(BuildTargetHolder.extract_objects_method  s     ""2247;;rF   r-  	recursiveFr  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 the future.
            )rV   r  not_set_warningc                >    | j                   j                  |d         S )NrX  )rC  r-  r   s      rG   r2  z,BuildTargetHolder.extract_all_objects_method  s      ""66vk7JKKrF   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                6    | j                   j                         S r   )rC  r.  r   s      rG   r3  zBuildTargetHolder.get_id_method  s     ""))++rF   rP   r  c                .    | j                   j                  S r   )rC  rP   r   s      rG   re  zBuildTargetHolder.name_method  s     ""'''rF   )r7  r(  r8  r   r   )r   zbuild.BuildTargetrL  r   )r   r   r1   r8   r   zbuild.IncludeDirsr   )r   zGT.Tuple[T.List[T.Union[mesonlib.FileOrString, 'build.GeneratedTypes']]]r1   r:   r   build.ExtractedObjects)r   r  r1   z*'kwargs.BuildTargeMethodExtractAllObjects'r   r]  )#rA   rB   rC   rw   r  r   rC  rI  r   r   rb  r5  r  r   r  r4  r   r   Filer?   r	   CustomTargetCustomTargetIndexGeneratedListr1  r   r   rS   textwrapdedentr2  r3  r   re  r   r   s   @rG   r*  r*  M  s    I    s   
 x  x U  U )85XYU Z  U L  L %sEDVDVX]XoXoqv  rE  rE  0F  G< G < uH+HOO - 	
L L +WKL,L  
, !(   "(rF   r*  c                      e Zd Zy)ExecutableHolderNr  rE   rF   rG   re  re    r  rF   re  c                      e Zd Zy)StaticLibraryHolderNr  rE   rF   rG   rg  rg    r  rF   rg  c                      e Zd Zy)SharedLibraryHolderNr  rE   rF   rG   ri  ri    r  rF   ri  c                  `     e Zd Zd fdZddZeedd              Zeedd              Z xZ	S )	BothLibrariesHolderc                    t         |   ||       | j                  j                  | j                  | j
                  d       y )N)get_shared_libget_static_lib)rv   rw   r   r   get_shared_lib_methodget_static_lib_method)r   libsr8  r   s      rG   rw   zBothLibrariesHolder.__init__  s<     	v&t/I/I/3/I/I 	 rF   c                   d}| j                   j                  }| j                   j                  }|j                  | j                  j
                  |j                         |j                  |j                         |j                        S )Nz<{} {}: {}, {}: {}>)r~   sharedstaticr   r   rA   r.  r<  )r   r>  h1h2s       rG   r  zBothLibrariesHolder.__repr__  sa    !$$$$xx//bkk299;XZXcXcddrF   c                .    | j                   j                  S r   )r~   rs  r   s      rG   ro  z)BothLibrariesHolder.get_shared_lib_method  r  rF   c                .    | j                   j                  S r   )r~   rt  r   s      rG   rp  z)BothLibrariesHolder.get_static_lib_method  r  rF   )rq  zbuild.BothLibrariesr8  r   r   )r   r   r1   r8   r   zbuild.SharedLibrary)r   r   r1   r8   r   zbuild.StaticLibrary)
rA   rB   rC   rw   r  r   r   ro  rp  r   r   s   @rG   rk  rk    sF     e '  ' '  'rF   rk  c                      e Zd Zy)SharedModuleHolderNr  rE   rF   rG   rz  rz    r  rF   rz  c                      e Zd Zy)	JarHolderNr  rE   rF   rG   r|  r|    r  rF   r|  c                  T     e Zd Zd fdZ edd      eedd                     Z xZS )CustomTargetIndexHolderc                t    t         |   ||       | j                  j                  d| j                  i       y )Nr  )rv   rw   r   r   r  r6  s      rG   rw   z CustomTargetIndexHolder.__init__  s3    ([$*?*?  	 rF   zcustom_target[i].full_pathr  c                    | j                   j                  J | j                   j                  j                  | j                        S r   r   rO  rS  r~   r   s      rG   r  z(CustomTargetIndexHolder.full_path_method  s?     ''333''??@P@PQQrF   )r7  build.CustomTargetIndexr8  r   r   )	rA   rB   rC   rw   r   r   r   r  r   r   s   @rG   r~  r~    s6     
 ,h7R   8RrF   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 )_CustomTargetHolderc                    t         |   ||       | j                  j                  | j                  | j
                  d       | j                  j                  t        j                  | j                  i       y )N)r  to_list)
rv   rw   r   r   r  to_list_method	operatorsr   INDEXop_indexr6  s      rG   rw   z_CustomTargetHolder.__init__  sb    ($*?*?(,(;(; 	  	
 	rF   c                    d}| j                   }|j                  | j                  j                  |j	                         |j
                        S r:  )r~   r   r   rA   r.  commandr=  s      rG   r  z_CustomTargetHolder.__repr__  s9    xx//QYYGGrF   c                `    | j                   j                  j                  | j                        S r   r  r   s      rG   r  z$_CustomTargetHolder.full_path_method  s'     ''??@P@PQQrF   zcustom_target.to_listr  c                N    g }| j                   D ]  }|j                  |        |S r   )r~   r   )r   r   r1   resultis        rG   r  z"_CustomTargetHolder.to_list_method  s/     !! 	AMM!	rF   c                    	 | j                   |   S # t        $ r= 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 .)r~   
IndexErrorr"   rP   r  )r   others     rG   r  z_CustomTargetHolder.op_index  s    	T##E** 	T"VE72RSWScScShShRiiyz}  C  O  O  {P  zQ  QR  $S  T  T	Ts
    AA)r7  r  r8  r   r   r   )r   r   r1   r8   r   zT.List[build.CustomTargetIndex])r  r   r   r  )rA   rB   rC   rw   r  r   r   r  r   r  r   r   r  r   r  r   r   s   @rG   r  r    s    H
 R  R '2   3 M''-T . TrF   r  c                      e Zd Zy)CustomTargetHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)RunTargetHolderNr  rE   rF   rG   r  r  
  r  rF   r  c                      e Zd Zy)AliasTargetHolderNr  rE   rF   rG   r  r    r  rF   r  c                      e Zd Zy)GeneratedListHolderNr  rE   rF   rG   r  r    r  rF   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 )GeneratorHolderc                t    t         |   ||       | j                  j                  d| j                  i       y )Nprocess)rv   rw   r   r   process_method)r   genr   r   s      rG   rw   zGeneratorHolder.__init__  s/    k*Y(;(;<=rF   zgenerator.processr0   )r  r  preserve_path_fromz0.45.0r  
extra_argsT)r.   rV   r|  c                   |d   }|It         j                  j                  |      }t         j                  j                  |      st	        d      t        d |d   D              r+t        j                  dd| j                  j                         | j                  j                  |d   | j                  ||d   |d   	      }|S )
Nr  z;Preserve_path_from must be an absolute path for now. Sorry.c              3     K   | ]=  }t        |t        j                  t        j                  t        j                  f       ? y wr   )rM   r	   r_  r`  ra  ).0as     rG   	<genexpr>z1GeneratorHolder.process_method.<locals>.<genexpr>)  s1     refz!e00%2I2I5K^K^_`rs   AAr   zECalling generator.process with CustomTarget or Index of CustomTarget.rE  r  r{   )r  r{   )r   r   normpathisabsr"   anyr   r  r   rT   r~   process_files)r   r   r1   r  gls        rG   r  zGeneratorHolder.process_method  s     $$89)!#!1!12D!E77==!34&'deerjnopjqrr!!W$**557 ++DGT5E5E,>6R^K_eklqer , t 	rF   )r  zbuild.Generatorr   r   )r   zDT.Tuple[T.List[T.Union[str, mesonlib.File, 'build.GeneratedTypes']]]r1   z'kwargs.GeneratorProcess'r   zbuild.GeneratedList)rA   rB   rC   rw   r   r?   r   r^  r	   r_  r`  ra  r   r   r$   r   rI  r%   r  r  r   r   s   @rG   r  r    s    > 'QhmmUZUgUgin  jA  jA  CH  CV  CV  AW  X&hxH, 1$ <dTVWG$	a8=P XrF   r  c                        e Zd Zd fdZ xZS )StructuredSourcesHolderc                &    t         |   ||       y r   )rv   rw   )r   rT  r8  r   s      rG   rw   z StructuredSourcesHolder.__init__6  s    &)rF   )rT  zbuild.StructuredSourcesr8  r   )rA   rB   rC   rw   r   r   s   @rG   r  r  4  s    * *rF   r  )NT)
r1   z'kwargs.ExtractRequired'rT   z'SubProject'rU   zT.Optional[FeatureCheckBase]rV   rS   r   z$T.Tuple[bool, bool, T.Optional[str]])r1   z'kwargs.ExtractSearchDirs'r   r   )
__future__r   r   r   r   r}   rb  pathlibr   r   r   r   r   r	   r
   modulesr   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.   r/   typingry   TYPE_CHECKINGr1   cmake.interpreterr2   	envconfigr3   r4   r5   r6   r7   r8   r9   r:   r   r;   typing_extensionsr<   r>   r?   rI   rD   rZ   rh   rN   rj   r   EnvironmentVariablesr   r  rN  r  rS   r  rV  TypeVarr  r  r  r  r  rN  r  r^  r  Headersr  Datar  SymlinkDatar  
InstallDirr  Manr  EmptyDirr  ExtractedObjectsr  r  r  r  r  r&  Unionr;  rA  r(  r*  rK  re  StaticLibraryrg  SharedLibraryri  rk  SharedModulerz  Jarr|  r`  r~  r_  r  r  r  	RunTargetr  AliasTargetr  ra  r  	Generatorr  StructuredSourcesr  rE   rF   rG   <module>r     s   " 	     "     S S +{ { { { { { ` _ J J & E E ??4' B  B  B(+  -6oX,W) W
 JN+/''3'*F' %)' 5Y':
)nj,x'A'AB njbP' Pd)Dh.K.K!LNf )DX 2;=3PX/1Z . Zg;l5+B+BCE] g;V ndE2kdE2gdE2jdE2idE2 B|J/ BH 199Z7-(\(3 -(^	2?C 	L9 4+ZL/ +Z\	U%6%67 		hmm, 		L/ 		ejj) 		U%6%67 		|E$4$45 		UYY' 		\%..1 		\%*@*@A 	! >	 	/M- /Mbl3 .C 24L C qyyqwwu7H7H%J]J]7]/^_[(\2 [(z	()9)9: 		+E,?,?@ 		+E,?,?@ 	'+E,?,?@ '2	*5+=+=> 		!%)), 	Rl5+B+BC R aiiU//0$T,s+ $TL	,U-?-?@ 		l5??3 		U%6%67 		,u':':; 	l5??3 B*l5+B+BC *rF   