
    <h0L                        S SK Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SS	K
JrJrJr  SS
KJr  SSKJrJrJr  SSKJrJrJrJr  S SKr\R4                  (       a  SSKJr  SSKJrJr  SSKJr   " S S\5      r g)    )annotations   )extract_required_kwarg   )mlog)dependencies)build)WrapMode)extract_as_liststringlistifyversion_compare_many)	OptionKey)
DependencyDependencyExceptionNotFoundDependency)MesonInterpreterObject
FeatureNewInterpreterExceptionInvalidArgumentsN)Interpreter)TYPE_nkwargs	TYPE_nvar)SubprojectHolderc                     ^  \ rS rSr  S         SU 4S jjjrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jr\S S j5       rS!S jrS"S#S jjrSrU =r$ )$DependencyFallbacksHolder   c                  > [         TU ]  UR                  S9  Xl        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  R                  U l        X0l        S U l	        S U l
        SU=(       d    0 0U l        / U l        SU l        SU l        U Hl  nU(       d  [        S5      eSU;   d  SU;   d  SU;   a  [!        S5      eXPR                  ;   a  [        S	U< S
35      eU R                  R#                  U5        Mn     U R                  (       a  U R                  S   U l        g SU l        g )N)
subprojectdefault_optionsFz1dependency_fallbacks empty name '' is not allowed<>=zCharacters <, > and = are forbidden in dependency names. To specifyversion
 requirements use the 'version' keyword argument instead.zdependency_fallbacks name z is duplicatedr   z(anonymous))super__init__r   interpretercoredatar	   environmentwrap_resolverallow_fallbacksubproject_namesubproject_varnamesubproject_kwargsnamesforcefallback
nofallbackr   r   append_display_name)selfr%   r-   r)   r   name	__class__s         ڋ/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/interpreter/dependencyfallbacks.pyr$   "DependencyFallbacksHolder.__init__   s9   
 	K$:$:;&%00#,, &&
&22(44BB,0437"3_5J!K"$
#( %D*+`aad{cTkSD[& (n o ozz!*-Gx~+^__JJd#  /3jjTZZ]m    c                P   Uc  g U R                   b  [        S5      e[        U5      n[        U5      S:X  a  SU l         g [        U5      S:X  a)  [        R
                  " SSU R                  5        US   S p2O[        U5      S:X  a  Uu  p#O[        S5      eU R                  X#5        g )	Nz@"fallback" and "allow_fallback" arguments are mutually exclusiver   Fr   zFallback without variable namez0.53.0r   z)Fallback info must have one or two items.)	r)   r   r   lenr   
single_user   r   _subproject_impl)r2   fbinfo	subp_namevarnames       r5   set_fallback&DependencyFallbacksHolder.set_fallback8   s    >*"#effv&v;!"'Dv;!!!"BHdoo^!'Dw[A!'Iw&'RSSi1r7   c                :    U R                   b   eXl         X l        g N)r*   r+   )r2   r=   r>   s      r5   r;   *DependencyFallbacksHolder._subproject_implL   s     ##+++(")r7   c                b    US   nU R                  XA5      nU(       a  U R                  U5        U$ Nr   )_get_cached_dep_verify_fallback_consistency)r2   kwargs	func_argsfunc_kwargsr3   
cached_deps         r5   _do_dependency_cache.DependencyFallbacksHolder._do_dependency_cacheQ   s2    |))$7
--j9r7   c                R   US   nU R                  U5        [        R                  " X@R                  U5      nUR	                  5       (       a[  U R
                  R                  U5      n[        R                  " XA5      nU R                  R                  U   R                  Xu5        U$ g rE   )_handle_featurenew_dependenciesr   find_external_dependencyr'   foundr%   machine_from_native_kwargget_dep_identifierr&   depsput)r2   rH   rI   rJ   r3   depfor_machine
identifiers           r5   _do_dependency(DependencyFallbacksHolder._do_dependencyX   s    
 |,,T233D:J:JFS99;;**DDVLK%88FJMM{+//
@Jr7   c                    US   nU R                   nU(       a(  U R                  U5      (       a  U R                  XEU5      $ g rE   )r+   _get_subproject_get_subproject_dep)r2   rH   rI   rJ   r=   r>   s         r5   _do_existing_subproject1DependencyFallbacksHolder._do_existing_subprojectg   s?    aL	))--i88++IGGr7   c                   U R                   (       a7  [        R                  " S[        R                  " U R                  5      S5        O}U R
                  (       a7  [        R                  " S[        R                  " U R                  5      S5        g [        R                  " S[        R                  " U R                  5      5        UR                  S5      n0 nUb1  U(       a  SOSn[        R                  " SU 35        Xe[        S5      '   U R                  nU R                  nUR                  S	/ 5        U R                  R                  XsUS
9  U R                  XxU5      $ )Nz4Looking for a fallback subproject for the dependencyz0because:
Use of fallback dependencies is forced.z8Not looking for a fallback subproject for the dependencyz2because:
Use of fallback dependencies is disabled.staticsharedz2Building fallback subproject with default_library=default_libraryversion)forced_options)r.   r   logboldr1   r/   getr   r*   r+   
setdefaultr%   do_subprojectr]   )	r2   rH   rI   rJ   ra   re   rc   r=   r>   s	            r5   _do_subproject(DependencyFallbacksHolder._do_subprojectn   s   HHKYYt1124gi__HHOYYt1124ikHHKYYt1124
 H%*0hhOHHI/IZ[\;J9%678 ((	))y"-&&yn&]''	FCCr7   c                    U R                   R                  R                  U5      nU(       a  UR                  5       (       a  U$ g rB   )r%   subprojectsrh   rQ   )r2   r=   subs      r5   r\   )DependencyFallbacksHolder._get_subproject   s3    **..y9399;;Jr7   c                   U R                  U5      nU(       dw  [        R                  " S[        R                  " U R                  5      S[        R                  " U5      S[        R
                  " S5      [        R                  " S5      5        g S nU R                   H  nU R                  Xc5      nU(       d  M    O   U(       a  U R                  U5        U$ U(       d7  U R                   H'  nU R                  R                  X5      nU(       d  M'    O   U(       d  [        R                  " SU< SU R                  < S35        [        R                  " S[        R                  " U R                  5      S[        R                  " UR                  5      S[        R
                  " S5      5        U R                  5       $ U R                  XB5      =(       d    U R                  5       nUR!                  5       (       dm  [        R                  " S[        R                  " U R                  5      S[        R                  " UR                  5      S[        R
                  " S5      5        U$ [#        UR%                  S	/ 5      5      nUR'                  5       n	U R)                  X5      (       d  [        R                  " S[        R                  " U R                  5      S[        R                  " UR                  5      S[        R
                  " S5      S
[        R*                  " U	5      S[        R                  " SR-                  U V
s/ s H	  n
SU
 S3PM     sn
5      5      5
        U R                  5       $ [        R                  " S[        R                  " U R                  5      S[        R                  " UR                  5      S[        R.                  " S5      U	(       a  [        R*                  " U	5      5        U$ S 5        U$ s  sn
f )Nr   zfrom subprojectfound:NOz (subproject failed to configure)zSubproject z did not override z* dependency and no variable name specifiedrd   rQ   	but need:, 'YES)r\   r   rf   rg   r1   redbluer-   rF   rG   r(   get_varnamewarningsubdir_notfound_dependency_get_subproject_variablerQ   r   rh   get_version_check_versionnormal_cyanjoingreen)r2   r=   r>   rH   r   rK   r3   var_depwantedrQ   es              r5   r]   -DependencyFallbacksHolder._get_subproject_dep   s    )))4
HH\499T-?-?#@BSYYy)8TXXd^YYABD  
JJD--d;Jz  --j9  

,,88I7 # LL;ym3EdFXFXE[  \F  G  HHH\499T-?-?#@BSYYz0018TXXd^M,,..//
DcHaHaHc}}HH\499T-?-?#@BSYYz0018TXXd^MNvzz)R89##%""611HH\499T-?-?#@BSYYz0018TXXd^d..u5{YYtyyF)CFqAaS(F)CDEG ,,..tyy););<>O:,,-xE9J,1!!%(	=  8<	=  *Ds   	P	"c                   U R                   R                  U5      n[        R                  " X5      n[	        UR                  S/ 5      5      nU R                  R                  U   R                  U5      nU(       a  [        R                  " UR                  (       a  SOS5      /nUR                  nUR                  5       (       dN  [        R                  " S[        R                  " U R                  5      S[        R                   " S5      /UQ76   U$ OdU R"                  (       a  U R$                  (       a  S nO?[        R                  " S5      /nU R&                  R(                  U   R                  U5      nU(       Ga>  UR+                  5       n	U R-                  XY5      (       d  U(       d  g [        R                  " S[        R                  " U5      S[        R                   " S5      S[        R.                  " U	5      S[        R                  " S	R1                  U V
s/ s H	  n
S
U
 S
3PM     sn
5      5      /WQ76   U R3                  5       $ U	(       a  [        R.                  " U	5      /WQn[        R                  " S[        R                  " U R                  5      S[        R4                  " S5      /WQ76   U$ g s  sn
f )Nrd   z(overridden)z(cached)r   rr   rs   rQ   rt   ru   rv   rw   )r%   rR   r   rS   r   rh   r	   dependency_overridesr   ry   explicitrV   rQ   rf   rg   r1   rx   r.   r*   r&   rT   r   r   r   r   r}   r   )r2   r3   rH   rW   rX   wanted_versoverrideinforK   
found_versr   s              r5   rF   )DependencyFallbacksHolder._get_cached_dep   s$   
 &&@@H!44TB
#FJJy"$=>::22;?CCJOII0A0AnzRSD!J ##%%tyy1C1C'D!488D>:48:!! & D$8$8JIIj)*D++K8<<ZHJ#//1J&&{??  tyy!488D> $"2"2:">499-L1!Ah-L#MN  	 
 0022((4<t<HH\499T-?-?#@tzz%09379 .Ms   "Kc                     UR                  U/0 5      n[        U[        5      (       d0  [        R
                  " SU< SUR                  < S3Uc  SOS5        g U$ ! [         a    S n NUf = f)Nz	Variable z in the subproject z isz	not foundznot a dependency object)get_variable_methodr   
isinstancer   r   r{   r|   )r2   r   r>   r   s       r5   r~   2DependencyFallbacksHolder._get_subproject_variable   sy    	 44gYCG ':..LL9WK/B:CTCTBWWZ[(/=VX   	G	s   A A+*A+c                   U R                   nU R                  nU R                  U5      nU(       aX  U(       aP  U R                  XC5      nU(       a7  UR	                  5       (       a!  XQ:w  a  [
        R                  " SU< 35        g g g g g g )NzSInconsistency: Subproject has overridden the dependency with another variable than )r*   r+   r\   r~   rQ   r   r{   )r2   rK   r=   r>   r   r   s         r5   rG   6DependencyFallbacksHolder._verify_fallback_consistency  s{    ((	)))))4
'33JHG:++--'2Grszr}~ 3H-w ":r7   c                   US:X  a#  [         R                  " SSU R                  5        gUS:X  a#  [         R                  " SSU R                  5        gUS:X  a#  [         R                  " SSU R                  5        gUS:X  a#  [         R                  " S	S
U R                  5        gUS:X  a#  [         R                  " SSU R                  5        gg)z:Do a feature check on dependencies used by this subprojectmpizMPI Dependencyz0.42.0pcapzPcap DependencyvulkanzVulkan DependencylibwmfzLibWMF Dependencyz0.44.0openmpzOpenMP Dependencyz0.46.0N)r   r:   r   )r2   r3   s     r5   rO   9DependencyFallbacksHolder._handle_featurenew_dependencies  s    5=!!"2HdooNV^!!"3XtOX!!"5xQX!!"5xQX!!"5xQ r7   c                    [        U R                  (       a  U R                  S   U R                  5      $ SU R                  5      $ )Nr    )r   r-   r'   )r2   s    r5   r}   .DependencyFallbacksHolder._notfound_dependency  s3    !4::$**Q-tGWGWXX2tGWGWXXr7   c                Z    U (       d  gUS:H  =(       d    [        X5      S   (       + (       + $ )NT	undefinedr   )r   )r   rQ   s     r5   r   (DependencyFallbacksHolder._check_version!  s*    [(V0DU0STU0V,VWWr7   c                &   / nU R                    H"  nUR                  U R                  U/0 45        M$     U R                  (       a3  UR                  U R                  U R                  /U R
                  45        U R                  (       a  U R                  (       d2  U R                    H"  nUR                  U R                  U/0 45        M$     U R                  (       a3  UR                  U R                  U R                  /U R
                  45        U$ rB   )	r-   r0   rL   r*   r^   r,   r.   rY   rk   )r2   
candidatesr3   s      r5   _get_candidates)DependencyFallbacksHolder._get_candidates'  s    
JJDt884&"EF  t;;d>R>R=SUYUkUklm!!)=)=

!!4#6#6"CD # t22T5I5I4JDLbLbcdr7   c                ,  ^ [        US5      nU(       a:  U =R                  SR                  SR                  S U 5       5      5      -  sl        [	        XR
                  5      u  pEnU(       a\  [        R                  " S[        R                  " U R                  5      S[        R                  " U5      S5        U R                  5       $ [        R                  " U R                  R                  R                  [        S5      5      5      nU R                  R                  R                  [        S	5      5      m[!        T["        5      (       d   S
5       eU[        R$                  :H  U l        U=(       dO    U[        R&                  :H  =(       d5    [)        U4S jU R*                   5       5      =(       d    U R,                  T;   U l        U R,                  (       d  U R.                  SLa  U R*                   H  nU R0                  R3                  U5      u  pU	(       d  M)  U =R&                  U	T;   -  sl        U R&                  (       d,  U R.                  SL d  U(       d  U R5                  U	5      (       a  U R7                  X5          O   U R9                  5       nU(       d  U(       a  [;        S5      e[=        U5      S-
  n[?        U5       GH5  u  pUu  nnnU=(       a    X:H  US'   U=(       a    X:H  US'   U" UUU5      nU(       a  URA                  5       (       a  U R*                   H  nU RB                  RE                  U5      n[F        RH                  " X5      nUU RJ                  RL                  U   ;  d  MS  [J        RN                  " UU RB                  RP                  SS9U RJ                  RL                  U   U'   M     Us  $ U(       a&  U(       d  X:X  a  [S        SU R                  < S35      eU(       d  GM4  Us  $    U R                  5       $ )Nmodulesz (modules: {})ru   c              3  8   #    U  H  n[        U5      v   M     g 7frB   )str).0is     r5   	<genexpr>3DependencyFallbacksHolder.lookup.<locals>.<genexpr>;  s     CYTXqCFFTXs   r   zskipped: featuredisabled	wrap_modeforce_fallback_forzfor mypyc              3  ,   >#    U  H	  oT;   v   M     g 7frB    )r   r3   r   s     r5   r   r   I  s     !T*<"<s   FTz-Dependency is required but has no candidates.r   required)r   zDependency z is required but not found.)*r   r1   formatr   r   r   r   rf   rg   r}   r
   from_stringr&   optstoreget_value_forr   r   listr/   r.   anyr-   r*   r)   r(   find_dep_providerr\   r;   r   r   r9   	enumeraterQ   r%   rR   r   rS   r	   r   DependencyOverridecurrent_noder   )r2   rH   force_fallbackmodsr   r   featurer   r3   r=   r>   r   lastr   itemfuncrI   rJ   rV   rW   rX   r   s                        @r5   lookup DependencyFallbacksHolder.lookup8  sN   vy1"2"9"9$))CYTXCY:Y"ZZ&<V__&U#GHH\499T-?-?#@BTVZV_V_`gVhjtu,,.. (()?)?)M)MiXcNd)ef	!]]33AA)L`Bab,d33?Z?3#x':'::, I'8+A+AAI!!T!TTI #226HH 	 ##(;(;5(H

%)%7%7%I%I$%O"	9&&)7I*II&))T-@-@D-HHX\XlXlmvXwXw--iA # ))+
 h"#RSS :" ,GA+/(D)[&.&>AIK
#!)!9qyF:vy+6Csyy{{ !JJD"&"2"2"L"LV"TK!-!@!@!NJ!)H)H)UU!44S$:J:J:W:Wbgh 

77DZP	 ' 
sai *K8J8J7MMh*ijj
- -. ((**r7   )r1   r)   r	   r&   r'   r.   r%   r-   r/   r   r,   r*   r+   r(   )NN)
r%   z'Interpreter'r-   T.List[str]r)   zT.Optional[bool]r   zT.Optional[T.Dict[str, str]]returnNone)r<   z%T.Optional[T.Union[T.List[str], str]]r   r   )r=   r   r>   r   r   r   )rH   r   rI   r   rJ   r   r   T.Optional[Dependency])r=   r   r   zT.Optional[SubprojectHolder])r=   r   r>   r   rH   r   r   r   )r3   r   rH   r   r   r   )r   r   r>   r   r   r   )rK   r   r   r   )r3   r   r   r   )r   r   )r   r   rQ   r   r   bool)r   zuT.List[T.Tuple[T.Callable[[TYPE_nkwargs, TYPE_nvar, TYPE_nkwargs], T.Optional[Dependency]], TYPE_nvar, TYPE_nkwargs]])F)rH   r   r   r   r   r   )__name__
__module____qualname____firstlineno__r$   r?   r;   rL   rY   r^   rk   r\   r]   rF   r~   rG   rO   r}   staticmethodr   r   r   __static_attributes____classcell__)r4   s   @r5   r   r      s     59AE	L+L#L "2L #?	L KO	L L<2(*
D8=~,\	@RY X X
"B+ B+r7   r   )!
__future__r   interpreterobjectsr   r   r   r   r	   wrapr
   mesonlibr   r   r   optionsr   r   r   r   interpreterbaser   r   r   r   typingTTYPE_CHECKINGr%   r   r   r   r   r   r   r7   r5   <module>r      sX   
 # 6     K K  N NG G ??(94a+ 6 a+r7   