
    <hw                       % S SK Jr   S SKJr  S SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKrS SKrSSKJrJrJrJrJr  SSKJrJrJrJrJr  SSKJr  SS	KJr  SS
KJ r J!r!  SSKJ"r"  \RF                  (       a
  S SK$r$SSK%J&r&   " S S\RN                  5      r(S5S jr)S6S jr*S7S jr+ " S S5      r,   S8     S9S jjr-S:S jr.S;S jr/S<S jr0S=S jr1S>S jr2S?S jr3S@S jr4SAS jr5SBSCS jjr6SDS jr7SES  jr8SFS! jr9SGS" jr:SHS# jr;SIS$ jr<SIS% jr=SJS& jr>SKS' jr?SLS( jr@SMS) jrASNS* jrBSBSOS+ jjrCSBSPS, jjrDSBSQS- jjrESRS. jrF/ rGS\HS/'   SSS0 jrISTS1 jrJSUS2 jrKSVS3 jrLSWSXS4 jjrMg)Y    )annotations)redirect_stdoutN)PathPurePath   )buildenvironmentmesonliboptionscoredata)IntrospectionInterpreterAstConditionLevelAstIDGeneratorAstIndentationGeneratorAstJSONPrinter)backends)
Dependency)ObjectHolderUnknownValue)	OptionKey)Interpreterc                      \ rS rSrSS jrSrg)IntrospectionEncoder"   c                l    [        U[        5      (       a  g[        R                  R	                  X5      $ )Nunknown)
isinstancer   jsonJSONEncoderdefault)selfobjs     r/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/mintro.pyr    IntrospectionEncoder.default#   s)    c<((''22     N)r"   T.Anyreturnr'   )__name__
__module____qualname____firstlineno__r    __static_attributes__r&   r%   r#   r   r   "   s    3r%   r   c                B    [         R                  R                  U S5      $ )Nmeson-info.jsonospathjoin)info_dirs    r#   get_meson_info_filer5   (   s    77<<"344r%   c                     g)Nz1.0.0r&   r&   r%   r#   get_meson_introspection_versionr7   +   s    r%   T.List[str]c                 
    SS/$ )Nz>=1.0z<2.0r&   r&   r%   r#   (get_meson_introspection_required_versionr:   .   s    Vr%   c                  4    \ rS rSr  S       SS jjrSrg)IntroCommand1   Nc                0    US-   U l         X l        X0l        g )N.descfuncno_bd)r!   rA   rB   rC   s       r#   __init__IntroCommand.__init__2   s     3J		
r%   r@   )NN)rA   strrB   z/T.Optional[T.Callable[[], T.Union[dict, list]]]rC   zGT.Optional[T.Callable[[IntrospectionInterpreter], T.Union[dict, list]]]r(   None)r)   r*   r+   r,   rD   r-   r&   r%   r#   r<   r<   1   s=     JNbfF ` lp r%   r<   c                  ^ ^^^^^^ T(       ab  T(       a[  TR                  TR                  5       5      mTR                  TR                  5       5      mTR                  5       mTR                  mOS =m=mm[
        R                  " S[        S[        S94S[        SU4S jS94S[        S	U 4S
 j[        S94S[        SUU4S jS94S[        SU 4S jS94S[        SUU 4S j[        S94S[        S[        S94S[        SU4S jS94S[        SU4S jS94S[        SU4S jS94S [        S!U4S" j[        S94S#[        S$UUU4S% j[        S94S&[        S'U4S( jS94/5      $ ))NastzDump the AST of the meson file)rC   
benchmarkszList all benchmarksc                    > [        T 5      $ N)list_benchmarks)benchmarkdatas   r#   <lambda>/get_meson_introspection_types.<locals>.<lambda>H   s    XeHfr%   )rB   buildoptionszList all build optionsc                    > [        T 5      $ rL   )list_buildoptionsr   s   r#   rO   rP   I   s    M^_gMhr%   )rB   rC   buildsystem_filesz(List files that make up the build systemc                    > [        T T5      $ rL   )list_buildsystem_files)	builddatainterpreters   r#   rO   rP   J   s    dz  |E  GR  eSr%   	compilerszList used compilersc                    > [        T 5      $ rL   )list_compilersrT   s   r#   rO   rP   K   s    ~V^G_r%   dependencieszList external dependenciesc                    > [        TT 5      $ rL   )	list_deps)backendr   s   r#   rO   rP   L   s    QZ[celQmr%   scan_dependenciesz2Scan for dependencies used in the meson.build file	installedz(List all installed files and directoriesc                    > [        T 5      $ rL   )list_installedinstalldatas   r#   rO   rP   N   s    \jkv\wr%   install_planz;List all installed files and directories with their detailsc                    > [        T 5      $ rL   )list_install_planre   s   r#   rO   rP   O   s      sD  EP  sQr%   machinesz2Information about host, build, and target machinesc                    > [        T 5      $ rL   )list_machinesrX   s   r#   rO   rP   P   s    ers|e}r%   projectinfozInformation about projectsc                    > [        T 5      $ rL   )list_projinform   s   r#   rO   rP   Q   s    P]^gPhr%   targetszList top level targetsc                    > [        TTT 5      $ rL   )list_targets)r`   rX   rf   s   r#   rO   rP   R   s    U^`kmtHur%   testszList all unit testsc                    > [        T 5      $ rL   )
list_teststestdatas   r#   rO   rP   S   s
    :hCWr%   )create_test_serialisationget_benchmarks	get_testscreate_install_datarY   collectionsOrderedDictr<   dump_astlist_buildoptions_from_sourcelist_deps_from_sourcelist_projinfo_from_sourcelist_targets_from_source)r   rX   r`   rN   rf   rY   rx   s   ```@@@@r#   get_meson_introspection_typesr   :   s    999):R:R:TU44Y5H5H5JK113))1555; ""	=XNO	|$9@fgh	&>Eh  qN  O  	P	l+U  ]S  T  	U	l#8?_`a	&BIm  vK  L  	M	l+_g|}~	l#MTwxy	&c  kQ  R  	S	\"V]}~	%AHh  qJ  K  	L	L!9@u  ~V  W  	X	,4;WXY$  r%   c           	        [        5       nUR                  5        H7  u  p#SUR                  SS5      -   nU R                  USUSUR                  S9  M9     U R                  S[        [        R                  5      SS	S
S9  U R                  SSSSSSS9  U R                  SSSSSSS9  U R                  SSSSSSS9  U R                  SSSSS9  g )Nz--_-
store_trueF)actiondestr    helpz	--backendr`   ninjaz8The backend to use for the --buildoptions introspection.)choicesr   r    r   z-az--allallz Print all available information.z-iz--indentindentzEnable pretty printed JSON.z-fz--force-object-output
force_dictz]Always use the new JSON format for multiple entries (even for 0 and 1 introspection commands)builddir?r?   zThe build directory)nargsr    r   )r   itemsreplaceadd_argumentrA   sortedr   backendlist)parserintro_typeskeyvalflags        r#   add_argumentsr   X   s    /1K%%'ckk#s++DCUXU]U]^ ( VG4G4G-HybiW  Y
glPU?  A
jHV[:  <
5lQ]gl|  ~

#sAVWr%   c                d    [        5       nU R                  R                  U5        UR                  $ rL   )r   rI   acceptresult)intrprinters     r#   r   r   h   s$    GHHOOG>>r%   c                (   0 nU Gb  U R                    H  n[        R                  R                  U R                  UR
                  [        R                  R                  UR                  5      5      U[        R                  R                  U R                  UR                  5      '   M     U R                   HC  n[        R                  R                  U R                  UR                  5      XR                  '   ME     U R                   Hk  n[        R                  R                  U R                  UR                  [        R                  R                  UR                  5      5      XR                  '   Mm     U R                   HC  n[        R                  R                  U R                  UR                  5      XR                  '   ME     U R                   HC  n[        R                  R                  U R                  UR                  5      XR                  '   ME     U R                   Hc  n[        R                  R                  UR                  5      n[        R                  R                  U R                  UR                  U5      X'   Me     U$ rL   )rq   r1   r2   r3   prefixoutdirbasenamefname	build_dirdatainstall_pathheadersmaninstall_subdirssymlinksname)rf   restisr   s         r#   rd   rd   m   s   
C$$A[//277;K;KAGG;TU [22AGG<= % !!A'',,{'9'91>>JCK "$$A'',,{'9'91>>277K[K[\]\b\bKcdCK %A'',,{'9'91>>JCK !,,A'',,{'9'91>>JCK -%%Aww''/HGGLL););Q^^XVCM & Jr%   c                   SU R                    Vs0 s H  n[        R                  R                  U R                  UR
                  5      UR                  UR                  =(       d    S UR                  =(       d    S UR                  =(       d    S [        S UR                   5       5      S._M     sn0nU R                  U R                  U R                  U R                  S.R!                  5        GH	  u  p4U H  nUR"                  =(       d    UnUR$                  nUS:X  aG  [        R                  R                  U[        R                  R'                  UR                  5      5      nUUR                  =(       d    S UR                  =(       d    S S.nUS:X  a5  UR(                  =(       d    / / 4u  p[+        U
5      US'   [+        U	5      US	'   UR-                  U0 5      X&'   XU   UR                  '   M     GM     U$ s  snf )
Nrq   c              3  B   #    U  H  oR                  S 5      v   M     g7f)utf8N)decode).0xs     r#   	<genexpr>$list_install_plan.<locals>.<genexpr>   s     &]A\Axx'7'7A\s   )destinationtag
subprojectinstall_rpathbuild_rpaths)r   r   r   r   r   )r   r   r   r   exclude_dirsexclude_files)rq   r1   r2   r3   r   r   out_namer   r   r   r   rpath_dirs_to_remover   r   r   r   r   	data_typeinstall_path_namer   excludelistget)rf   targetplanr   	data_listr   r   r   entryr   r   s              r#   ri   ri      s    &--	
 . GGLL..=%zz)T$//74!'!5!5!= &&]A\A\&] ]@  .	
TD   &&&66	
 eg D-#I $ 6 6i$&GGLL1BBGGDTDTUYU^U^D_$`!  1xx'4"oo5E ''.2ll.Fr2h+(,\(:n%)-m)<o&"hhy"5DO).ODII&% 6 KM	
s   B"Hc                X    U R                   R                  [        S5      5      S:X  a  gU$ )Nlayoutflatz	meson-out)optstoreget_value_forr   )r   subdirs     r#   get_target_dirr      s(    &&y':;vEr%   c                   / n[        U R                  5      R                  5       nU R                   GH  nU R	                  X#R
                  UR                  5      nU R	                  X#R
                  UR                  (       a  UR                  /O/ 5      n[        U R                  UR
                  5      nUUR                  UR                  UR                  UR                  UR                   Vs/ s H"  n[        R                   R#                  Xg5      PM$     snUR$                  SUR&                  / / U/ S.// US UR(                  S./-  nGM     U$ s  snf )Nr   )languagemachinecompiler
parameterssourcesgenerated_sources)r   idtype
defined_infilenamebuild_by_defaulttarget_sourcesdependsextra_filesr   rb   )r   source_rootresolverq   nodes_to_pretty_filelistr   source_nodesr   r   r   r   r   typenamer   outputsr1   r2   r3   r   r   rb   )r   tlistroot_dirr   r   r   r   r   s           r#   r   r      s   ED$$%--/H\\//((ANNS33Hhh[\[h[hnpqqxx8FF$$JJ,,:;))D)Qf0)D ! 2 2%99 "%'   &%
  	 6 L! Es   1)Ec                   / nU R                   R                  5       nU R                   R                  5       n0 nUR                   HY  n[        R
                  R                  UR                  5      n[        [        UR                  UR                  U5      5      /Xh'   M[     UR                   H  n	[        R
                  R                  U	R                  5      n U[        R
                  R                  U	R                  5         Xh'   Xh   R                  [        [        UR                  U	R                   U5      5      5        M     U R%                  5       R'                  5        GH  u  p[)        U[*        R,                  5      (       d  [/        S5      e[1        U R                   R2                  UR4                  5      nUR7                  5       U
UR9                  5       [        R
                  R;                  [        R
                  R=                  X[R4                  [         R>                  5      5      URA                  5        Vs/ s H#  n[        R
                  R=                  XLU5      PM%     snURB                  URE                  X5      URF                   Vs/ s HT  n[        R
                  R;                  [        R
                  R=                  X]R4                  UR                  5      5      PMV     snURH                  =(       d    S [K        US/ 5       Vs/ s H  oR                  PM     sn[K        US/ 5       Vs/ s H  oRM                  5       PM     snS.n[K        USS 5      nUb  URO                  5       US'   [K        USS 5      nUb  UUS'   U(       al  URQ                  5       (       aW  SUS'   URA                  5        Vs/ s H  oRS                  US /5      PM     nnU VVs/ s H  nU  H  oPM     M     snnUS	'   OS
US'   UR                  U5        GM     U$ ! ["         a     GM  f = fs  snf s  snf s  snf s  snf s  snf s  snnf )NzxThe target object in `builddata.get_targets()` is not of type `build.Target`. Please file a bug with this error message.external_depsr]   )r   r   r   r   r   r   r   r   r   r]   r   vs_module_defswin_subsystemTrb   install_filenameF)*r	   get_build_dirget_source_dirrq   r1   r2   r   r   rF   r   r   r   r   r   r   appendr   KeyErrorget_targetsr   r   r   TargetRuntimeErrorr   r   r   get_basenameget_typenamenormpathr3   build_filenameget_outputsr   get_introspection_datar   r   getattrget_idrelative_nameshould_installr   )rX   rf   r`   r   r   src_dirinstall_lookuptabler   r   r   idnamer   r   r   dlibr   r   r   ifnsublists                        r#   rs   rs      s   E%%335I##224G   77##AGG,),Xk6H6H!((T\-])^(_% ! !! 77##AFF+	,?@P@PQRQYQY@Z,[))00Xk>P>PRSR`R`bj5k1lm " &11399;&%,,//   Z  [  [	 5 5 > >N'')'')''**277<<P[PjPj+klEKEWEWEYZEYi;EYZ & 7 7%<<VL`f`r`rs`r[\BGG,,RWW\\'88QWW-UV`rs ++3t-4V_b-QR-QVV-QR07PR0ST0S

0ST
 !)94@%"0">">"@A>$!.Ao60022!AkN?E?Q?Q?ST?S!**1tf5?SCT69$Kc77aQ7Qc$KA !"AkNQA <B LI  		 [ tRT U$Ks8   A)P&*P8AP=Q Q	Q,Q&
P54P5c                z    U R                   S    Vs/ s H  oS   PM	     nn[        U R                  U5      $ s  snf )Nsubprojectsr   )project_datarS   r   )r   r   r  s      r#   r   r     s<    &*&7&7&FG&FV9&FKGT]]K88 Hs   8c           	       ^ ^ / mU=(       d    / n[        [        R                  5      n[        S5      [        S5      1n0 n0 n0 nT R                  R                  5        Hn  u  pxXr;   a  XU'   M  Xs;   a  XU'   M  T R                  R                  U5      (       d  M=  XU'   UR                  (       a  MT  U H  n	XUR                  U	S9'   M     Mp     SU U4S jjn
U
" US5        U
" T R                  R                  5        VVs0 s H)  u  pxT R                  R                  U5      (       d  M'  Xx_M+     snnS5        U
" T R                  R                  5        VVs0 s H)  u  pxT R                  R                  U5      (       d  M'  Xx_M+     snnS5        U
" [        T R                  R                  5       S S	9 VVs0 s H)  u  pxT R                  R                  U5      (       d  M'  Xx_M+     snnS
5        U
" US5        SS jnU
" T R                  R                  5        VVs0 s H0  u  pxT R                  R                  U5      (       d  M'  U" U5      U_M2     snnS5        U
" US5        T$ s  snnf s  snnf s  snnf s  snnf )N	errorlogsstdsplitr   c           	     J  > [        U R                  5       5       GH  u  p#[        U5      UR                  UTR                  R                  U5      (       a  UR                  R                  5       OSS.n[        U[        R                  5      (       a  SnO[        U[        R                  5      (       a  SnO[        U[        R                  5      (       a  UR                  5       US'   SnO[        U[        R                  [        R                  45      (       a  SnO[[        U[        R                   5      (       a  SnUR                  5       nU(       a  XdS'   O[#        S	[%        ['        U5      5      5      eXTS
'   UR(                  US'   TR+                  U5        GM     g )Nany)r   valuesectionr   stringbooleanr   combointegerarrayzUnknown option type: r   description)r   r   rF   r  r   is_per_machine_optionr   get_lower_case_namer   r   UserStringOptionUserBooleanOptionUserComboOptionprintable_choicesUserIntegerOptionUserUmaskOptionUserStringArrayOptionr   reprr   r  r   )	optsr  r   optoptdicttypestrcr   optlists	          r#   add_keys#list_buildoptions.<locals>.add_keys"  sB   tzz|,HC"3x#))GOGXGXGnGnorGsGs#++"A"A"Cy~@G#w7788"C!:!:;;#C!8!899%(%:%:%<	"!C'";";W=T=T!UVV#C!>!>??!))+)*I&"#:DcOLL%FO%(__GM"NN7#+ -r%   corer`   basec                     U S   R                   $ )Nr   )r   )r   s    r#   rO   #list_buildoptions.<locals>.<lambda>>  s    !A$,,r%   r   r   	directoryc                b    U R                   c   eU R                   S:X  a  U R                  S S9$ U $ )N r  )r   evolver1  s    r#   project_option_key_to_introname:list_buildoptions.<locals>.project_option_key_to_intronameC  s4    ~~)))>>R:::..
r%   usertest)r%  z@T.Union[options.MutableKeyedOptionDictType, options.OptionStore]r  rF   r(   rG   )r   r   r(   r   )setr   BUILTIN_DIR_OPTIONSr   r   r   is_builtin_optionyieldingr5  is_backend_optionis_base_optionr   is_compiler_optionis_project_option)r   r  dir_option_namestest_option_namesdir_optionstest_optionscore_optionskvr   r+  r6  r*  s   `           @r#   rS   rS     sV   IKG#K7667";/":.0 79K79L79L!!'') N#O0033O:::$A;<Q!78 % *$ $0 \6"x00668c8tqH<M<M<_<_`a<bdad8cenox00668`8tqH<M<M<\<\]^<_dad8`bhi !2!2!8!8!:@VW  	DW$![c[l[l[[  AB  \CW  	D [+& "++113_3$!x7H7H7Z7Z[\7] 4-a0!33_`fh\6"N# d` 	D_s0   &I,
,I,
&I2
I2
;&I8
%I8
!&I>
I>
c                   ^ ^ [        1 Sk5      n/ n[        R                  " T 5       H1  u  mp4UR                  UU 4S jUR	                  U5       5       5        M3     U$ )N>   meson.buildmeson.optionsmeson_options.txtc              3     >#    U  HC  n[         R                  R                  [         R                  R                  TU5      T5      v   ME     g 7frL   )r1   r2   relpathr3   )r   frootr  s     r#   r   .find_buildsystem_files_list.<locals>.<genexpr>S  s:      B!@A T1(=wGG!@s   AA)	frozensetr1   walkextendintersection)r  build_filesfilelistr   filesrP  s   `    @r#   find_buildsystem_files_listrY  N  sX    QRKH'''*a B!,!9!9%!@B 	B + Or%   c                    U R                   R                  5       n[        UR                  5       5      nU Vs/ s H  n[	        X$5      R                  5       PM     nnU$ s  snf rL   )r	   r   r   get_build_def_filesr   as_posix)rX   rY   r  rW  r   s        r#   rW   rW   W  sV    ##224GK3356H9ABA$--/HBO Cs   #Ac                f   0 nS H  n0 X'   [        U R                  U5      R                  5        Hy  u  p4UR                  5       UR	                  5       UR                  5       UR                  UR                  5       UR                  UR                  UR                  5       S.X   U'   M{     M     U$ )N)hostr   )r   exelistlinker_exelistfile_suffixesdefault_suffixversionfull_version	linker_id)r   rZ   r   r   get_exelistget_linker_exelistra  get_default_suffixrc  rd  get_linker_id)r   rZ   r   r   r   s        r#   r\   r\   ]  s    <>I$	")(*<*<g"F"L"L"NHoo'#//1"*"="="?!)!7!7"*"="="?#++ ( 5 5%335	,Ix( #O % r%   c                    / nU R                    HA  nUUR                  UR                  UR                  UR                  UR
                  S./-  nMC     U$ )N)r   requiredrc  has_fallbackconditional)r]   r   rk  rc  rl  rm  )r   r   r   s      r#   r   r   n  sU    QSFFF

yyNN==
  	  Mr%   c                  ^^ 0 nSUU4S jjmSSUU4S jjjnU R                   R                  R                  5        H.  nUR                  5       (       d  M  U" U5      X$R                  '   M0     TR
                  R                  R                  5        H  u  pV[        U[        5      (       d  M  UR                  n[        U[        5      (       d  M?  UR                  5       (       d  MV  UR                  U;   a7  [        R                  " SX$R                     S   5      R                  U5        M  U" XE5      X$R                  '   M     [        UR                  5       5      $ )Nr8   c                P  > [        U [        5      (       a  U /$ [        U [        R                  5      (       a'  U R	                  TR
                  TR                  5      /$ [        U [        R                  [        R                  [        R                  45      (       a  U R                  5       $ [        U [        R                  5      (       a2  U R                  5        VVs/ s H  nT" U5        H  o"PM     M     snn$ [        R                  " S[        U 5       S35      es  snnf )NzInvalid file type r?   )r   rF   r
   Fileabsolute_path
source_dirr   r   CustomTargetCustomTargetIndexGeneratedListr   StructuredSourcesas_listMesonBugExceptionr   )src_filer   rO  _src_to_strr`   s      r#   rz  list_deps.<locals>._src_to_str}  s    h$$:h..**7+=+=w?P?PQRRh!3!3U5L5LeNaNa bcc''))h 7 788'//1J1!;q>aA>A1JJ((+=d8n=MQ)OPP Ks    D"c                  > U R                   U R                  U R                  5       U R                  5       U R	                  5       U R                  5        VVs/ s H1  o"R                  T	R                  T	R                  5        H  o3PM     M3     snnU R                  5        VVs/ s H  nT" U5        H  oUPM     M     snnU R                  5        VVs/ s H  nT" U5        H  oUPM     M     snnU R                   Vs/ s H  ofR                   PM     sn[        U S/ 5       Vs/ s H  owR                  5       PM     snU(       a  U/S.$ / S.$ s  snnf s  snnf s  snnf s  snf s  snf )N	libraries)r   r   rc  compile_args	link_argsinclude_directoriesr   r   r]   r   meson_variables)r   	type_nameget_versionget_compile_argsget_link_argsget_include_dirsto_string_listrr  r   get_sourcesget_extra_filesext_depsr   r   )
r  varnameidirsr   r   rO  er  rz  r`   s
           r#   _create_result!list_deps.<locals>._create_result  sB   FFKK}}..0*343E3E3G  $N3G%QeQefmfxfx  {B  {L  {L  RMAA  RMA3G  $N#$==?K?aKNqN?K'('8'8':S':!KPQNqANA':S-.ZZ8ZVVZ807;0KL0K

0KL,3y
 	
 :<
 	
 $NKS8Ls   8E&EE E&)E+r  )ry  zyT.Union[mesonlib.FileOrString, build.CustomTarget, build.StructuredSources, build.CustomTargetIndex, build.GeneratedList]r(   r8   rL   )r  r   r  T.Optional[str]r(   T.Dict[str, T.Any])depsr^  valuesfoundr   rY   	variablesr   r   r   held_objectr   Tcastr   r   )r   r`   r   r  r  r  holderrz  s    `     @r#   r_   r_   z  s    BDF	Q 	Q
 
 ]]&&(7799+A.F66N ) #..88>>@fl++""A!Z((QWWYY66V#FF=&.9J*KLSST[\%3A%?F66N A   r%   c                   / nU  GHH  n0 n[        UR                  [        5      (       a  UR                  /nOUR                  nXBR                  -   US'   [        UR                  [
        R                  5      (       a  UR                  R                  0 5      US'   OUR                  US'   UR                  US'   UR                  US'   UR                  US'   UR                  US'   UR                  US'   UR                  US'   [        UR                  5      US	'   UR                  US
'   UR                   US'   UR#                  U5        GMK     U$ )Ncmdenvr   workdirtimeoutsuiteis_parallelpriorityprotocolr   extra_paths)r   r   rF   cmd_argsr  r
   EnvironmentVariablesget_envr   r  r  r  r  r  r  r   r  r   )rx   r   r   tor   s        r#   get_test_listr    s   TVFLNaggs##WWIEGGEJJ&5	aeeX::;;b)BuIBuIVV6
		9		9gg7MM=:QZZ:		9MM=b) * Mr%   c                    [        U 5      $ rL   r  rw   s    r#   rv   rv     s    ""r%   c                    [        U 5      $ rL   r  )	benchdatas    r#   rM   rM     s    ##r%   c                   0 nS Hv  n[        U R                  R                  U5      n[        R                  " U5      X'   UR
                  X   S'   UR                  5       X   S'   UR                  5       X   S'   Mx     U$ )N)r^  r   r   	is_64_bit
exe_suffixobject_suffix)r   r	   rj   dataclassesasdictr  get_exe_suffixget_object_suffix)rX   rj   mr   s       r#   rl   rl     s~    =?H()//88!<!((1#*#4#4K $+$:$:$<L!'.'@'@'BO$ ) Or%   c                   U R                   U R                  U R                  U R                     R                  U R                  U R                     R                   Vs/ s H  oS   R
                  PM     snU R                  S.n/ nU R                  R                  5        H5  u  pEUUU R                  R                  U5      S.nUR                  U5        M7     X2S'   U$ s  snf )Nr   )rc  descriptive_namelicenselicense_filessubproject_dir)r   rc  r  r  )project_versionproject_namedep_manifestr  r  r   r  r  r   projectsr   r   )rX   rO  r   r  rG  rH  r)  s          r#   rp   rp     s    ,,%22)))*@*@AII.7.D.DYE[E[.\.j.jk.jA$**.jk#22PF K%%++- ) 2 2 6 6q 9

 	1 . (=M ls   C!
c                D   U R                   n[        U5      nU Vs/ s H"  n[        R                  R	                  U5      PM$     nnU R
                  S    H  n[        R                  R                  U R                  US   5      nU Vs/ s H  o3R                  U5      (       d  M  UPM     snUS'   U Vs/ s H  o3R                  U5      (       a  M  UPM     nnM     X R
                  S'   U R                  U R
                  S'   U R
                  $ s  snf s  snf s  snf )Nr  r   rU   r  )	r   rY  r1   r2   r   r  r3   r  
startswith)r   	sourcedirrX  r   r   basedirs         r#   r   r     s      I'	2E*/0%QRWWa %E0}-'',,t22AfI>-2!LUll76K!U!L
!?Eqg)>E? .
 .3)**.*=*=D&' 1 "M?s   )D
D'D7DDc                N   U(       d  U R                   (       d  [        S5        g[        U5      S:X  a;  U R                   (       d*  [        [        R                  " US   S   U[
        S95        g0 nU H  nUS   X4S   '   M     [        [        R                  " X2[
        S95        g)NzNo command specifiedr   r   )r   cls)r   printlenr   dumpsr   )r   resultsr   outr   s        r#   print_resultsr    s    7--$%	W	7#5#5djjAv;OPQ 	 A!C!I djj1EFGr%   c                N    SnU b  [         R                  R                  X5      nU$ )Nz
meson-infor0   )r   infodirs     r#   get_infodirr    s$    G'',,x1Nr%   c                d    [         R                  R                  U U(       d  S5      $ SU S35      $ )Nr/   intro-.jsonr0   )r  kinds     r#   get_info_filer    s9    77<<15)Q Q=CD6;OQ Qr%   c                    [        [        X5      SS9 n[        R                  " U5      sS S S 5        $ ! , (       d  f       g = f)Nutf-8encoding)openr  r   load)r  r  fps      r#   load_info_filer    s*    	mG*W	=yy} 
>	=	=s	   4
Ac           
     z   Sn[        U R                  5      nU R                  b*  [        R                  R	                  U R                  U5      nU R
                  (       a  SOS n/ n[        5       n[        R                  R                  U R                  5      [        R                  :X  Ga?  U R                  [        R                  :X  a  SO&U R                  S [        [        R                  5      *  n[        [        R                  5         [        R                  " U R                   5      nUc   e[#        USUR$                  ['        5       [)        5       [+        5       /S9nUR-                  5         S S S 5        UR/                  5        HP  u  pU R0                  (       d  [3        X	S5      (       a  U
R4                  (       d  M:  XIU
R5                  W5      4/-  nMR     [7        XU5      $  [9        U5      nUR;                  S0 5      R;                  S0 5      R;                  S	S
5      n[G        5       nU HJ  n[H        RJ                  " X5      (       a  M   [A        SRC                  USR	                  U5      5      5          g   UR/                  5        HM  u  pURL                  (       d  M  U R0                  (       d  [3        XS5      (       d  M<   XN[9        X.5      4/-  nMO     [7        XU5      $ ! , (       d  f       GN= f! [<         az    [        R                  R?                  U5      (       a$  [        R                  R?                  U5      (       d  [A        S5        O#[A        SRC                  [E        U5      5      5         gf = f! [<         a'    [A        SRC                  [E        X.5      5      5           gf = f)Nzmeson-private   r?   r4  )visitorsFintrospectionrc  fullz0.0.0zyCurrent directory is not a meson build directory.
Please specify a valid build dir or change the working directory to it.zIntrospection file {} does not exist.
It is also possible that the build directory was generated with an old
meson version. Please regenerate it in this case.r   zFIntrospection version {} is not supported. The required version is: {}z and z%Introspection file {} does not exist.)'r  r   r1   r2   r3   r   r   r   r	   r   r  r   sysstderrr   get_backend_from_namer`   r   r   r   r   r   analyzer   r   r   rC   r  r  r   FileNotFoundErrorisdirr  formatr  r:   r
   version_comparerB   )r   datadirr  r   r  r   r  r`   r   r   r   raw
intro_versvers_to_checkr   rH  s                   r#   runr    s!   G'**+G#'',,w//9..QdFBDG/1K 
ww(()[-G-GG"++{/I/IICwO_O_  aBbefq  gA  gA  cB  bB  PC	SZZ(44W__EG&&&+Ir7<<UcUeg~  hA  CT  CV  UW  XDLLN	 ) $))+HCKKe(D(DSYYciio.//G , Wv66W%WW_b155iDHHQXY
 =>M''
66 06*gll=&ABD   !!#vv{{77u#=#=	N76788G $ 622[ )(  ww}}W%%RWW]]7-C-C \ ]  FFLf][bMcFdf 4 ! 	9@@wAZ[\	s2   A'K0,=L N	0
K?BNN	-N:9N:updated_introspection_filesc                   U  H  u  p#[         R                  R                  USU S35      n[         R                  R                  US5      n[        USSS9 n[        R
                  " X6SS9  UR                  5         S S S 5        [         R                  " XT5        [        R                  U5        M     g ! , (       d  f       N>= f)	Nr  r  tmp_dump.jsonwr  r     )r   )
r1   r2   r3   r  r   dumpflushr   r  r   )
intro_infor4   r  r   out_filetmp_filer  s          r#   write_intro_infor  J  s     
77<<F4&*>?77<</:(C'2bIIdq)HHJ 3 	

8&#**40 ! 32s   &B55
C	c                   U R                   R                  5       n[        X US9n/ nUR                  5        H-  u  pVUR                  (       d  M  XEUR	                  5       4/-  nM/     [        X@R                   R                  5        g )N)r   rX   r`   )r	   get_coredatar   r   rB   r  r4   )rX   r`   r   r   r  r   r   s          r#   generate_introspection_filer  T  ss    $$113H/`ghKEGJ%%'xxSXXZ())
 (
 Z!6!6!?!?@r%   c                6    S[        U 5      4/n[        X!5        g )NrQ   )rS   r  )r   r4   r  s      r#   update_build_optionsr  `  s!    	*845J Z*r%   c                    U R                  S5      nU [        [        U5      S:  a  US   OS5      [        [        U5      S:  a  US   OS5      [        [        U5      S:  a  US   5      S.$ S5      S.$ )Nr?   r   r   r  )r  majorminorpatch)splitintr  )rc  	vers_lists     r#   split_version_stringr  g  sx    c"IS^a%7Yq\Q?S^a%7Yq\Q?S^a%7Yq\?	  >??	 r%   c                B   U R                   R                  n[        U5      n[        5       n0 nUR	                  5        H*  u  pxUR
                  (       d  M  SU S3U[        ;   S.Xg'   M,     [        [        R                  5      U R                   R                  5       U R                   R                  5       US.[        [        5       5      US.US.n	U(       a<  SU	S'   U V
s/ s H%  n
[        U
[        5      (       a  U
O
[        U
5      PM'     sn
U	S	'   OS
U	S'   [        R                   R#                  US5      n[%        USSS9 n[&        R(                  " X5        UR+                  5         S S S 5        [        R,                  " X5        g s  sn
f ! , (       d  f       N*= f)Nr  r  )fileupdated)sourcer   info)rc  information)meson_versiondirectoriesr  build_files_updatedTerror
error_listFr  r  r  r  )r	   r4   r5   r   r   rB   r  r  cdatarc  r   r   r7   r   rF   r1   r2   r3   r  r   r  r  r   )rX   errorsr  r4   	info_filer   r  r   rH  	info_datar   r  r  s                r#   write_meson_info_filer  p  sg   $$--H#H-I/1KJ!!#vvQCu%77

 $ .emm<++::<**88:
 ,,K,MN%
  3I !	'PV"WPV1
1c(:(:1A#FPV"W	,"	' ww||Ho6H	hg	."		) 

 
/ JJx# #X 
/	.s   ",F'F
F)r4   rF   r(   rF   )r(   rF   )r(   r8   )NNN)r   zT.Optional[cdata.CoreData]rX   zT.Optional[build.Build]r`   zT.Optional[backends.Backend]r(   zT.Mapping[str, IntroCommand])r   zargparse.ArgumentParserr(   rG   )r   r   r(   r  )rf   backends.InstallDatar(   zT.Dict[str, str])rf   r  r(   zFT.Dict[str, T.Dict[str, T.Dict[str, T.Union[str, T.List[str], None]]]])r   cdata.CoreDatar   rF   r(   rF   )r   r   r(   zT.List[T.Dict[str, object]])rX   build.Buildrf   r  r`   backends.Backendr(   zT.List[T.Any])r   r   r(   9T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]rL   )r   r  r  zT.Optional[T.List[str]]r(   r  )r  rF   r(   r8   )rX   r  rY   r   r(   r8   )r   r  r(   z*T.Dict[str, T.Dict[str, T.Dict[str, str]]])r   r   r(   zBT.List[T.Dict[str, T.Union[str, bool, T.List[str], UnknownValue]]])r   r  r`   r  r(   z.T.List[T.Dict[str, T.Union[str, T.List[str]]]])rx   "T.List[backends.TestSerialisation]r(   ET.List[T.Dict[str, T.Union[str, int, T.List[str], T.Dict[str, str]]]])r  r  r(   r  )rX   r  r(   z,T.Dict[str, T.Dict[str, T.Union[str, bool]]])rX   r  r(   z@T.Dict[str, T.Union[str, T.List[str], T.List[T.Dict[str, str]]]])r   r   r(   z3T.Dict[str, T.Union[str, T.List[T.Dict[str, str]]]])r   argparse.Namespacer  6T.Sequence[T.Tuple[str, T.Union[dict, T.List[T.Any]]]]r   zT.Optional[int]r(   r  )r   r  r(   rF   )r  rF   r  r  r(   rF   )r  rF   r  r  r(   r'   )r   r  r(   r  )r  r  r4   rF   r(   rG   )rX   r  r`   r  r(   rG   )r   r  r4   rF   r(   rG   )rc  rF   r(   zT.Dict[str, T.Union[str, int]])F)rX   r  r  r   r  boolr(   rG   )N
__future__r   
contextlibr   r}   r  r   r1   pathlibr   r   r  typingr  r4  r   r	   r
   r   r   r  rI   r   r   r   r   r   r`   r   r]   r   interpreterbaser   r   r   TYPE_CHECKINGargparserY   r   r   r   r5   r7   r:   r<   r   r   r   rd   ri   r   r   rs   r   rS   rY  rW   r\   r   r_   r  rv   rM   rl   rp   r   r  r  r  r  r  r  __annotations__r  r  r  r  r  r&   r%   r#   <module>r'     sP   #+ '    	 " 
  F F u u  $ 7 ??(34++ 35  JNGKJN-D+GSo<X 
&(TB5n9@D"
*!X2#$&Q:3x ,. [ -1
A+'$r%   