
    <hb                    "   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
rS S	KJr  S S
KJr  S SKrS SKrS SKr\R&                  (       a  SSKJr   " S S5      r " S S\R.                  5      r " S S5      r " S S\5      r " S S5      rg)    )annotations   )CMakeException)parse_generator_expressions   )mlog)version_compareNPath)	lru_cache)Environmentc                  N    \ rS rSrSS jr\\" SS9S	S j5       5       rS
S jrSr	g)CMakeTraceLine   c                z    [         R                  U5      U l        X l        UR	                  5       U l        X@l        g N)r   _to_pathfilelinelowerfuncargs)selffile_strr   r   r   s        }/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/cmake/traceparser.py__init__CMakeTraceLine.__init__   s+    "++H5		JJL		    N)maxsizec                    [        U 5      $ r   r
   )r   s    r   r   CMakeTraceLine._to_path   s     H~r   c                ~    SnUR                  U R                  U R                  U R                  U R                  5      $ )NzCMake TRACE: {0}:{1} {2}({3}))formatr   r   r   r   )r   ss     r   __repr__CMakeTraceLine.__repr__#   s,    +xx		499diiCCr   )r   r   r   r   )
r   strr   intr   r'   r   T.List[str]returnNone)r   r'   r*   r   r*   r'   )
__name__
__module____qualname____firstlineno__r   staticmethodr   r   r%   __static_attributes__ r   r   r   r      s.     t  Dr   r   c                  *    \ rS rSr% S\S'   S\S'   Srg)CMakeCacheEntry'   r)   valuer'   typer3   N)r-   r.   r/   r0   __annotations__r2   r3   r   r   r5   r5   '   s    
Ir   r5   c                  N    \ rS rSr   S         SS jjrS	S jrS
S jrSrg)CMakeTarget+   Nc                t    Uc  0 nXl         X l        X0l        X@l        XPl        / U l        S U l        S U l        g r   )namer8   
propertiesimportedtlinedependscurrent_bin_dircurrent_src_dir)r   r>   target_typer?   r@   rA   s         r   r   CMakeTarget.__init__,   s?     J		$ 
$&1515r   c                    SnSnU R                    H$  nUSR                  X0R                   U   5      -  nM&     UR                  U R                  U R                  U R                  X R
                  5      $ )NzsCMake TARGET:
  -- name:      {}
  -- type:      {}
  -- imported:  {}
  -- properties: {{
{}     }}
  -- tline: {} z      '{}': {}
)r?   r#   r>   r8   r@   rA   )r   r$   propSTRis       r   r%   CMakeTarget.__repr__?   sa     HA)00OOA4FGGG !xx		499dmmWjjQQr   c                   U R                   (       d  g U R                   R                  5        HX  u  pU Vs/ s H  o3R                  5       PM     snU R                   U'   [        S U R                   U    5       5      (       a  MX   e   g s  snf )Nc              3  ,   #    U  H
  nS U;  v   M     g7f);Nr3   ).0xs     r   	<genexpr>/CMakeTarget.strip_properties.<locals>.<genexpr>L   s     B-As!|-As   )r?   itemsstripall)r   keyvalrP   s       r   strip_propertiesCMakeTarget.strip_propertiesF   si    --/HC7:#;s!GGIs#;DOOC BT__S-ABBBBB 0#;s   B
)rC   rD   rB   r@   r>   r?   rA   r8   )NFN)
r>   r'   rE   r'   r?   z$T.Optional[T.Dict[str, T.List[str]]]r@   boolrA   zT.Optional[CMakeTraceLine]r,   )r*   r+   )r-   r.   r/   r0   r   r%   rX   r2   r3   r   r   r;   r;   +   sQ    
 EI$):>6 6 !6 B	6
 "6 86&RCr   r;   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )CMakeGeneratorTargetN   c                `   > [         TU ]  US0 5        / U l        / U l        / U l        S U l        g )NCUSTOM)superr   outputs_outputs_strcommandworking_dir)r   r>   	__class__s     r   r   CMakeGeneratorTarget.__init__O   s2    x,%')+,.-1r   )rb   rc   ra   rd   )r>   r'   r*   r+   )r-   r.   r/   r0   r   r2   __classcell__)re   s   @r   r\   r\   N   s    2 2r   r\   c                  n   \ rS rSrS%S&S jjrS'S jrS(S jrS)S*S jjrS+S jrS,S jr	S-S	 jr
S.S
 jrS/S jrS0S jrS1S jrS1S jrS1S jrS1S jrS)S2S jjrS1S jrS1S jrS1S jrS1S jrS1S jrS1S jrS1S jrS1S jrS1S jrS1S jrS3S4S jjrS1S jrS1S jrS1S jr S5S  jr!S5S! jr"S6S" jr#S7S# jr$S$r%g)8CMakeTraceParserV   c                   0 U l         0 U l        0 U l        0 U l        [	        5       U l        / U l        X0l        X@l        Xl	        SU l
        X R                  -  U l        [        US5      (       a  SOSU l        / U l        / U l        / U l        0 SU R"                  _SU R$                  _SU R&                  _SU R(                  _S	U R*                  _S
U R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _SU R@                  _SU RB                  _SU RD                  0EU l#        [        U R                  S5      (       a8  [H        RJ                  " [L        RN                  " SU R                   S35      SS9  g g )Nzcmake_trace.txtz>=3.17json-v1humansetunsetadd_executableadd_libraryadd_custom_commandadd_custom_targetset_propertyset_target_propertiestarget_compile_definitionstarget_compile_optionstarget_include_directoriestarget_link_librariestarget_link_optionsadd_dependenciesmessagemeson_ps_execute_delayed_callsmeson_ps_reload_varsmeson_ps_disabled_functionz<3.17.0z                CMake support for versions <3.17 is deprecated since Meson 0.62.0.
                |
                |   However, Meson was only able to find CMake a  .
                |
                |   Support for all CMake versions below 3.17.0 will be removed once
                |   newer CMake versions are more widely adopted. If you encounter
                |   any errors please try upgrading CMake to a newer version first.
            T)once)(varsvars_by_filetargetscachern   explicit_headerscustom_targetsenv
permissivecmake_version
trace_filetrace_file_pathr	   trace_formaterrorsdelayed_commandsstored_commands
_cmake_set_cmake_unset_cmake_add_executable_cmake_add_library_cmake_add_custom_command_cmake_add_custom_target_cmake_set_property_cmake_set_target_properties!_cmake_target_compile_definitions_cmake_target_compile_options!_cmake_target_include_directories_cmake_target_link_libraries_cmake_target_link_options_cmake_add_dependencies_cmake_message_meson_ps_execute_delayed_calls_meson_ps_reload_vars_meson_ps_disabled_function	functionsr   deprecationtextwrapdedent)r   r   	build_dirr   r   s        r   r   CMakeTraceParser.__init__W   s<   CE	DFCEGI
-0U =?$*+(??:)8)Q)QIW^#%
 .079K
4??K
T&&K
 d88K
 422	K

 !$"@"@K
  !>!>K
 D44K
 $T%F%FK
 )$*P*PK
 %d&H&HK
 )$*P*PK
 $T%F%FK
 "4#B#BK
  < <K
 t**K
( -d.R.R)K
* #D$>$>+K
, )$*J*J-K
2 4--y99X__ 2@ AE@R@R?S T.   :r   c                    SS/SS/S.nS/nU R                  5       (       d  USU R                   3/-  nXR                     U-   $ )Nz--tracez--trace-expandz--trace-format=json-v1)rm   rl   z--no-warn-unused-cliz--trace-redirect=)requires_stderrr   r   )r   arg_map	base_argss      r   
trace_argsCMakeTraceParser.trace_args   sb    !12(*BC

 ,,	##%%-doo->?@@I(()I55r   c                .    [        U R                  S5      $ )Nz<3.16)r	   r   )r   s    r   r    CMakeTraceParser.requires_stderr   s    t117;;r   Nc                	  ^  T R                  5       (       dS  T R                  R                  5       (       d  [        ST R                  < S35      eT R                  R	                  SSS9nU(       d  [        S5      eS nT R
                  S:X  a  T R                  U5      nO;T R
                  S:X  a  T R                  U5      nO[        S	T R
                   S
35      eU Hl  nUR                  T R                  ;   a  T =R                  U/-  sl
        M5  T R                  R                  UR                  S 5      nU(       d  Md  U" U5        Mn     U 4S jnU 4S jnT R                  R                  5        VVs0 s H  u  pxXu" U5      _M     snnT l        T R                  R                  5        V	V
VVs0 s H0  u  pXR                  5        VVs0 s H  u  pxXu" U5      _M     snn_M2     snnn
n	T l        T R                    Vs1 s H!  n[#        [%        ['        U5      T 5      5      iM#     snT l        T R(                  R                  5        VVs0 s H,  u  pxU[+        U" UR,                  5      UR.                  5      _M.     snnT l        T R0                  R3                  5        H  nU 4S jn[%        UR4                  T US9Ul        [%        UR.                  T US9Ul        UR6                  b5  UR6                  R                  5        VVs0 s H  u  pxX}" X5      _M     snnOS Ul        U" UR8                  U5      Ul        M     T R:                   H  nU" UR<                  5      Ul        UR@                  nUR@                   Vs/ s H
  o" U5      PM     snUl         [C        UR@                  U5       H,  u  nnUS   S:X  d  M  [        SRE                  US   5      5      e   URF                  b(  [#        [%        ['        URF                  5      T 5      5      OS Ul#        M     T R0                  R3                  5        H  nURI                  5         M     g s  snnf s  snnf s  snnn
n	f s  snf s  snnf s  snnf s  snf )NzCMake: Trace file "z" not foundignorezutf-8)r   encodingz3CMake: The CMake trace was not provided or is emptyrm   rl   z,CMake: Internal error: Invalid trace format z. Expected [human, json-v1]c                j   > U (       a*  [        SR                  U 5      T5      R                  S5      $ / $ NrN   r   joinsplit)strlistr   s    r   <lambda>(CMakeTraceParser.parse.<locals>.<lambda>   s[      SZOjknkskst{k|  C  PD  PJ  PJ  KN  PO  Pb  `b  Pbr   c                   > U (       aD  [        SR                  U 5      T5      R                  S5       Vs/ s H  n[        U5      PM     sn$ / $ s  snf r   )r   r   r   r   )r   rP   r   s     r   r   r      s      gnb}  B  G  G  HO  P  RV  cW  c]  c]  ^a  cb  Qc  cb]^QUVWQX  cb  Qc  Qv  tv  Qv  Qcs   Ac                h   > U (       a)  [        SR                  U 5      TUS9R                  S5      $ / $ )NrN   context_tgtr   )r   tr   s     r   r   r      sv      u|b}  B  G  G  HO  P  RV  de  cf  cl  cl  mp  cq  cD  BD  cDr   r   r   rH   zdWe evaluated the cmake variable '{}' to an empty string, which is not a valid path to an executable.)%r   r   is_filer   	read_textr   _lex_trace_human_lex_trace_jsonr   r   r   r   getr   rS   r   r   r   r   r'   r   r5   r7   r8   r   valuesr>   r?   rB   r   rb   ra   rc   zipr#   rd   rX   )r   tracelexer1lfnstrlist_genpathlist_genkvpdrP   tgttgtlist_genctgttemprc   srcs   `                 r   parseCMakeTraceParser.parse   s   ##%%''//11$':4;O;O:RR]%^__((22(W2UE !VWW '**51F)+))%0F #OPTPaPaObb}!~ Avv...$$+$ ##AFFD1Br1  @b Av3799??3DE3D41QA&3DE	 ))//1
1 ggi8ida;q>!i881
 [_ZoZo pZoUV&A#a&$&O!PZo p 

((*

 +	 AGG$  +

 <<&&(C PDK2388TsSCH2388TsSCH + 47>>3G3G3I3I41;q&&3I15 N &ckk37CK ) ''D'(9(9:DL<<D48LLALqKNLADL #DLL$ 71:#(~  F  F  GJ  KL  GM  N  !8
 bfaqaqa}t$?DDTDT@UW[$\]  DHD ( <<&&(C  " )G F8
 !q
 Bs6   6Q2Q$
Q!Q$
(Q,3Q1Q7Q=Q$
c                X    U H#  nX R                   ;   d  M  U R                   U   s  $    / $ r   r   )r   var_listrJ   s      r   get_first_cmake_var_of'CMakeTraceParser.get_first_cmake_var_of   s*    AII~yy|#  	r   c                B    XR                   ;   a  U R                   U   $ / $ r   r   r   vars     r   get_cmake_varCMakeTraceParser.get_cmake_var   s    ))99S>!	r   c                n    XR                   ;   a&  U R                   U   (       a  U R                   U   S   $ g )Nr   r   r   s     r   
var_to_strCMakeTraceParser.var_to_str   s,    ))		#99S>!$$r   c                    U(       d  g[        U[        5      (       a  US   nOUnUR                  5       nUS;  =(       a    UR                  S5      (       + $ )NFr   )0OFFNOFALSENIGNORENOTFOUND)
isinstancelistupperendswith)r   exprexpr_strs      r   _str_to_boolCMakeTraceParser._str_to_bool  sP    dD!!AwHH>>#IIoRZRcRcdnRoNoor   c                X    U R                  U R                  R                  U/ 5      5      $ r   )r   r   r   r   s     r   var_to_boolCMakeTraceParser.var_to_bool  s"      sB!788r   c                    U R                   (       a   [        R                  " SU SU SU 35        g [        SU SU SU 35      e)NzCMake trace warning: z() 
zCMake: )r   r   debugr   )r   functionerrorrA   s       r   _gen_exceptionCMakeTraceParser._gen_exception  sL     ??JJ.xjE7"UGLMwxjE7"UGDEEr   c                2   SnSUR                   ;   n UR                   R                  S5      nUR                   US-      n/ nUR                    H+  nU(       a  US:X  a  M  US:X  a    OUR	                  U5        M-     [        U5      S:  a  U R                  SSU5      $ UR                  S5      nS	R                  U5      nU(       a>  XpR                  ;  d  U(       a(  [        UR                  S
5      U5      U R                  U'   U(       d  XpR                  ;   a  U R                  U	 ggUR                  S
5      U R                  U'   UR                  S
5      U R                  R                  UR                  0 5      U'   g! [        [        4 a     GNUf = f)a  Handler for the CMake set() function in all varieties.

comes in three flavors:
set(<var> <value> [PARENT_SCOPE])
set(<var> <value> CACHE <type> <docstring> [FORCE])
set(ENV{<var>} <value>)

We don't support the ENV variant, and any uses of it will be ignored
silently. the other two variates are supported, with some caveats:
- we don't properly handle scoping, so calls to set() inside a
  function without PARENT_SCOPE set could incorrectly shadow the
  outer scope.
- We don't honor the type of CACHE arguments
NFORCECACHEr   PARENT_SCOPErn   requires at least one argumentr    rN   )r   index
ValueError
IndexErrorappendlenr   popr   r   r5   r   r   r   
setdefaultr   )	r   rA   
cache_typecache_force	cache_idxr   rJ   
identifierr7   s	            r   r   CMakeTraceParser._cmake_set  sf   " 
+	

((1IIM2J
 A^+ G|KKN  t9q=&&u.NPUVV XXa[
 +{)8S9I:)V

:&YY&IIj) ' %*KK$4DIIj!GL{{SVGWD((R8DK J' 		s   -F FFc                    [        UR                  5      S:  a  U R                  SSU5      $ UR                  S   U R                  ;   a  U R                  UR                  S   	 g g )Nr   ro   r  r   )r	  r   r   r   r   rA   s     r   r   CMakeTraceParser._cmake_unsetT  sV    uzz?Q&&w0PRWXX::a=DII%		%**Q-( &r   c                   [        UR                  5      nSnSU;  a  U R                  SSU5      $ UR                  S5        [	        U5      S:  a  U R                  SSU5      $ [        US   S0 XS	9U R                  US   '   g )
NTIMPORTEDrp   z*non imported executables are not supportedr   requires at least 1 argumentr   
EXECUTABLErA   r@   )r   r   r   remover	  r;   r   )r   rA   r   is_importeds       r   r   &CMakeTraceParser._cmake_add_executable\  s    EJJ T!&&'79eglmmJt9q=&&'79WY^__ +DG\2U iT!Wr   c                   [        UR                  5      nSU;   aW  UR                  S5        [        U5      S:  a  U R	                  SSU5      $ [        US   S0 USU;   S9U R                  US   '   g SU;   aW  UR                  S5        [        U5      S:  a  U R	                  SS	U5      $ [        US   US   0 US
S9U R                  US   '   g SU;   aY  UR                  S5        [        U5      S:  a  U R	                  SS	U5      $ [        US   SSUS   /0US9U R                  US   '   g SU;   a  U R	                  SSU5      $ [        US   S0 US9U R                  US   '   g )N	INTERFACEr   rq   z$interface library name not specifiedr   r  r  r   zrequires at least 2 argumentsTALIASINTERFACE_LINK_LIBRARIES)rA   OBJECTz"OBJECT libraries are not supportedNORMAL)r   r   r  r	  r   r;   r   r   rA   r   s      r   r   #CMakeTraceParser._cmake_add_libraryl  s~   EJJ $KK$4y1}**=:`bghh$/QbPU`jnr`r$sDLLa!4KK
# 4y1}**=:Y[`aa$/Qa"E\`$aDLLa!_KK  4y1}**=:Y[`aa %0QC]`def`g_hBiqv$wDLLa!&&}6Z\abb$/Q2U$SDLLa!r   c                  ^ U R                  [        UR                  5      5      nU(       d  U R                  SSU5      $ US   S:X  a  U R                  SSU5      $ / SQn[	        U5      nSS jnSS jnSS	 jnS mSU4S
 jjn	S n
U HS  nX;   a>  US:X  a  Un
O3US:X  a  Un
O*US:X  a  U	n
O!US:X  a  Un
U=R
                  / /-  sl        OS n
MF  U
c  MK  U
" X5        MU     U R                  S5      nU R                  S5      nT(       a  [        T5      OS Ul        U(       a  [        U5      OS Ul	        U(       a  [        U5      OS Ul
        U R                  UR                  5      Ul        U R                  UR                  5      Ul        UR
                   Vs/ s H  oR                  U5      PM     snUl        U =R                  U/-  sl        U(       a  XPR                  U'   g g s  snf )Nrr   r  r   TARGETz(TARGET syntax is currently not supported)OUTPUTCOMMANDMAIN_DEPENDENCYDEPENDS
BYPRODUCTSIMPLICIT_DEPENDSWORKING_DIRECTORYCOMMENTDEPFILEJOB_POOLVERBATIMAPPENDUSES_TERMINALCOMMAND_EXPAND_LISTSc                0    U=R                   U /-  sl         g r   )rb   rV   targets     r   handle_outputACMakeTraceParser._cmake_add_custom_command.<locals>.handle_output  s    C5(r   c                B    U S:X  a  g UR                   S==   U /-  ss'   g )NARGS)rc   r5  s     r   handle_commandBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_command  s"    f}NN23%'r   c                0    U=R                   U /-  sl         g r   )rB   r5  s     r   handle_dependsBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_depends  s    NNse#Nr   c                &   > Tc  U mg TS-  mTU -  mg )Nr  r3   )rV   r6  rd   s     r   handle_working_dirFCMakeTraceParser._cmake_add_custom_command.<locals>.handle_working_dir  s"    "!s"s"r   r&  r)  r,  r'  !MESON_PS_CMAKE_CURRENT_BINARY_DIR!MESON_PS_CMAKE_CURRENT_SOURCE_DIR)rV   r'   r6  r\   r*   r+   )_flatten_argsr   r   r   r\   rc   r   r   rd   rC   rD   _guess_filesrb   rB   r   r   )r   rA   r>   r   
magic_keysr6  r7  r<  r?  rB  r   rJ   cbinary_dircsource_dirrP   rd   s                  @r   r   *CMakeTraceParser._cmake_add_custom_command  s   !!$uzz"23&&';=[]bcc 7h&&';=ginooa
 &d+	)	(
	$ 	# A=&B)^'B--+B)^'BNNrd*NB~1! $ oo&IJoo&IJ2=T+.46Ak!2t6Ak!2t"//0C0CD**6>>:8>G1++A.Gx'!'LL  Hs   G)c                    [        UR                  5      S:  a  U R                  SSU5      $ U R                  XR                  S   5        g )Nr   rs   r  r   )r	  r   r   r   r  s     r   r   )CMakeTraceParser._cmake_add_custom_target  sD     uzz?Q&&':<\^cdd 	&&ujjm<r   c                  ^ ^^^^ [        TR                  5      nUR                  S5      nSm/ nU(       a>  UR                  S5      nUS;   a  SmM"  US:X  a  OXER                  S5      -  nU(       a  M>  U(       d  T R	                  SST5      $ [        U5      S	:X  a  g UR                  S5      mT R                  S
:X  a!  SR                  U5      R                  S5      mO,U VVs/ s H  ofR                  S5        H  owPM     M     snnmT(       d  g SUUU UU4S jjnSUU U4S jjn	US:X  a  U H  n
U" U
5        M     g US:X  a#  T R                  U5      nU H  n
U	" U
5        M     g g s  snnf )Nr   F>   r1  APPEND_STRINGTPROPERTYrN   rt   zfailed to parse argument listr   rm   r  c                  > U TR                   ;  a  TR                  SSU  S3T5      $ TR                   U    nTUR                  ;  a  / UR                  T'   T(       a  UR                  T==   T-  ss'   g TUR                  T'   g )Nrt   TARGET 
 not found)r   r   r?   )r   r   r  r  r   rA   r7   s     r   	do_target7CMakeTraceParser._cmake_set_property.<locals>.do_target  sz    $**>WQCz;RTYZZ,,q/C/-/z*z*e3*-2z*r   c                \  > TS:w  d  TR                  T5      (       d  g TR                  S5      nU(       d,  [        R                  " [        R
                  " S5      5        Sn[        U5      n[        U 5      nUR                  5       (       d  X#-  nTR                  R                  U5        g )NHEADER_FILE_ONLYrE  z                    CMake trace: set_property(SOURCE) called before the preload script was loaded.
                    Unable to determine CMAKE_CURRENT_SOURCE_DIR. This can lead to build errors.
                .)
r   r   r   warningr   r   r   is_absoluter   add)r   rD   cur_psrc_pr  r   r7   s       r   	do_source7CMakeTraceParser._cmake_set_property.<locals>.do_source  s    //t7H7H7O7O"oo.QRO"X__ .   #&)EIE$$&&!!%%e,r   r%  SOURCE)r   r'   r*   r+   )r   r'   r*   r+   )	r   r   r
  r   r   r	  r   r   rG  )r   rA   r   scoper   currrP   yrT  r^  rJ   filesr  r  r7   s   ``          @@@r   r   $CMakeTraceParser._cmake_set_property  sU   EJJ88A;D 22z!zz#&G d &&~7VX]^^t9>XXa[
'HHTN((-E $;1ggclQlQ;E	3 	3	- 	-& H! h%%g.E!  O <s   &#E-c                   [        UR                  5      n/ nU(       a2  UR                  S5      nUS:X  a  OUR                  U5        U(       a  M2  / nU R                  S:X  a  UR                  S5      n/ n[
        R                  " S5      nU Hh  n	UR                  U	5      (       a>  U(       a1  UR                  USR                  U5      R                  S5      45        U	n/ nMW  UR                  U	5        Mj     U(       a1  UR                  USR                  U5      R                  S5      45        O>[        US S S2   USS S2   5       V
s/ s H  oS   U
S   R                  S5      4PM     nn
U HS  u  pkU HH  nXR                  ;  a  U R                  S	S
U S3U5      s  s  $ XR                  U   R                  U'   MJ     MU     g s  sn
f )Nr   
PROPERTIESrm   z	^[A-Z_]+$r  rN   r   r   ru   rR  rS  )r   r   r
  r  r   recompilematchr   r   r   r   r   r?   )r   rA   r   r   rb  arglistr>   r   
prop_regexarP   r7   rJ   s                r   r   -CMakeTraceParser._cmake_set_target_properties+  s   EJJ88A;D|#NN4  d. 68'88A;D"$FL1J##A&&chhv.>.D.DS.I'JKDFMM!$  chhv&6&<&<S&ABC8;D1ItADqDz8RS8R1!adjjo.8RGS"KDLL(../F'RSQTT^H_afgg38Q**40	  # Ts   "Gc                B   [        UR                  5      n[        U5      S:  a  U R                  SSU5      $ U R                  R                  US   5      nU(       d  U R                  SSU5      $ USS   H'  nU=R                  UR                  S5      -  sl        M)     g )Nr   r{   ztakes at least 2 argumentsr   ztarget not foundr   rN   )r   r   r	  r   r   r   rB   r   )r   rA   r   r6  rJ   s        r   r   (CMakeTraceParser._cmake_add_dependencies`  s    EJJt9q=&&'9;WY^__!!$q'*&&'9;MuUUabANNaggcl*N r   c                ,    U R                  SSSU5        g )Nrv   COMPILE_DEFINITIONSINTERFACE_COMPILE_DEFINITIONS_parse_common_target_optionsr  s     r   r   2CMakeTraceParser._cmake_target_compile_definitionsn  s!    ))*FH]_~  AF  	Gr   c                ,    U R                  SSSU5        g )Nrw   COMPILE_OPTIONSINTERFACE_COMPILE_OPTIONSrt  r  s     r   r   .CMakeTraceParser._cmake_target_compile_optionsr  s    ))*BDUWrtyzr   c           	     0    U R                  SSSUSS/SS9  g )Nrx   INCLUDE_DIRECTORIESINTERFACE_INCLUDE_DIRECTORIESSYSTEMBEFORET)r   pathsrt  r  s     r   r   2CMakeTraceParser._cmake_target_include_directoriesv  s@    ))*FH]_~  AF  PX  Zb  Oc  ko)  	pr   c                ,    U R                  SSSU5        g )Nrz   LINK_OPTIONSINTERFACE_LINK_OPTIONSrt  r  s     r   r   +CMakeTraceParser._cmake_target_link_optionsz  s    ))*?Qikpqr   c                ,    U R                  SSSU5        g )Nry   LINK_LIBRARIESr  rt  r  s     r   r   -CMakeTraceParser._cmake_target_link_libraries~  s    ))*ACSUoqvwr   c                   [        UR                  5      n[        U5      S:  a  U R                  SSU5      $ US   R	                  5       R                  5       S;  a  g U =R                  SR                  USS  5      /-  sl        g )Nr   r|   ztakes at least 1 argumentr   )FATAL_ERROR
SEND_ERRORr  )r   r   r	  r   r   rT   r   r   r"  s      r   r   CMakeTraceParser._cmake_message  sp    EJJt9q=&&y2MuUU7==?  "*GGab*++r   c                <   Uc  S/n[        UR                  5      n[        U5      S:  a  U R                  USU5      $ US   nXR                  ;  a  U R                  USU S3U5      $ / n	/ n
SnUSS   HH  nX;   a  M
  US;   a  UnM  US	;   a  XR                  S
5      -  n	US;   d  M5  XR                  S
5      -  n
MJ     U(       a"  U R                  U	5      n	U R                  U
5      n
U	 Vs/ s H  o(       d  M  UPM     n	nU
 Vs/ s H  o(       d  M  UPM     n
nX*4X944 Hl  nUS   U R                  U   R                  ;  a  / U R                  U   R                  US   '   U R                  U   R                  US   ==   US   -  ss'   Mn     g s  snf s  snf )Nr  r   r  r   rR  rS  PUBLIC>   r  PRIVATEr  LINK_PUBLICLINK_PRIVATELINK_INTERFACE_LIBRARIES>   r  r  r  r  rN   >   r  r  r  )r   r   r	  r   r   r   rG  r?   )r   r   private_propinterface_proprA   r   r  r   r6  	interfaceprivatemoderJ   rP   js                  r   ru  -CMakeTraceParser._parse_common_target_options  s   >ZFEJJt9q=&&t-MuUUa%&&twvhj-I5QQ	abA{qqYYWWS\)	<<773<'  )))4I''0G )/	1QQ		/%+g1g+)N+FGAQ44<</:::8:V$//!5LL ++AaD1QqT91	 H 0+s   -
F;F
FFc                    U R                    H:  nU R                  R                  UR                  S 5      nU(       d  M2  U" U5        M<     / U l         g r   )r   r   r   r   )r   rA   r   r   s       r   r   0CMakeTraceParser._meson_ps_execute_delayed_calls  sB    %%A##AFFD1Br1 &  "r   c                0    U R                  S5      U l        g )NMESON_PS_DELAYED_CALLS)r   r   r  s     r   r   &CMakeTraceParser._meson_ps_reload_vars  s     $ 2 23K Lr   c                    [        UR                  5      nU(       d  [        R                  " S5        g [        R                  " SUS    S35        g )Nz_Invalid preload.cmake script! At least one argument to `meson_ps_disabled_function` is expectedzThe CMake function "r   z8" was disabled to avoid compatibility issues with Meson.)r   r   r   r   rY  r"  s      r   r   ,CMakeTraceParser._meson_ps_disabled_function  s>    EJJJJxy+DG94lmnr   c              #    #    [         R                  " S[         R                  5      n[         R                  " S5      nSnU[        U5      :  Ga	  UR	                  X5      nU(       dB  UR	                  X5      nU(       d  [        XS  5        [        S5      eUR                  5       nMj  UR                  5       nUR                  S5      nUR                  S5      nUR                  S5      n	UR                  S5      n
U
R                  S	5      nU Vs/ s H  oR                  5       PM     nn[        U[        U5      X5      v   U[        U5      :  a  GM  g g s  snf 7f)
Nz>\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(([\s\S]*?) ?\)\s*\nz[^\n]*\nr   zFailed to parse CMake tracer            r  )rh  ri  	MULTILINEr	  rj  printr   endgroupr   rT   r   r(   )r   r   	reg_tline	reg_otherlocmo_file_line
skip_matchr   r   r   r   arglrm  s                r   r   !CMakeTraceParser._lex_trace_human  s!    JJ`bdbnbno	JJ{+	CJ$??56L&__U8
!%+&()FGG nn&""$C%%a(D%%a(D%%a(D%%a(D::c?D'+,t!GGItD, s4y$==) CJ$ -s   DEE,)EEc              #    #    UR                  SS9nUR                  S5        U H  n[        R                  " U5      n[	        US   [
        5      (       d   e[	        US   [        5      (       d   e[	        US   [
        5      (       d   e[	        US   [        5      (       d   eUS   nU H  n[	        U[
        5      (       a  M   e   [        US   US   US   U5      v   M     g 7f)NF)keependsr   r   r   cmdr   )	
splitlinesr
  jsonloadsr   r'   r(   r   r   )r   r   linesrJ   datar   r  s          r   r    CMakeTraceParser._lex_trace_json  s       % 0		!A::a=Dd6lC0000d6lC0000d5kC0000d6lD1111<D!!S))))  ftF|T%[$OO s   CC)"C)c                B    / nU H  nX#R                  S5      -  nM     U$ r   )r   )r   r   resrJ   s       r   rF  CMakeTraceParser._flatten_args  s&    A773<C 
r   c                @   U R                   S:w  a  U$ [        R                  " S5      n[        R                  " S5      n/ nS nSnU H  nUc  UnSnM  [        U5      R	                  5       (       a  XE/-  nUnSnM5  UR                  U5      (       d  XE/-  nUnSnMV  UR                  U5      (       a  U SU 3nXE/-  nS nSnM~  [        U SU 35      R                  5       (       a  U SU 3nSnM  U(       a  XE/-  nUnSnM  U SU 3nSnM     U(       a  XE/-  nU$ )Nrm   z^([A-Za-z]:)?/(.*/)*[^./]+$z^.*\.[a-zA-Z]+$Fr  T)r   rh  ri  r   r   rj  exists)r   broken_list	reg_startreg_end
fixed_listcurr_str
path_foundrJ   s           r   rG  CMakeTraceParser._guess_files  sR   ' JJ=>	**/0"$
$(
A"
h''))j(
"
__X..j(
"
q!!&Zq,j(
"

!A3'(//11&Zq,!
j(
"
&Zq,"
? B *$Jr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )T)
r   r'   r   r   r   z'Environment'r   rZ   r*   r+   )r*   r)   )r*   rZ   r   )r   T.Optional[str]r*   r+   )r   r)   r*   r)   )r   r'   r*   r)   )r   r'   r*   r  )r   zT.Union[str, T.List[str]]r*   rZ   )r   r'   r*   rZ   )r   r'   r   r'   rA   r   r*   r+   )rA   r   r*   r+   )rA   r   r>   r  r*   r+   )NF)r   r'   r  r'   r  r'   rA   r   r   zT.Optional[T.List[str]]r  rZ   r*   r+   )r   r'   r*   z'T.Generator[CMakeTraceLine, None, None])r   r)   r*   r)   )r  r)   r*   r)   )&r-   r.   r/   r0   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru  r   r   r   r   r   rF  rG  r2   r3   r   r   ri   ri   V   s    =~
6<F#Pp9F;Xz)j  TDF(P=JX39j+G{prx
,*:X"Mo>6P1r   ri   )
__future__r   commonr   	generatorr   rH   r   mesonlibr	   typingTpathlibr   	functoolsr   rh  r  r   TYPE_CHECKINGenvironmentr   r   
NamedTupler5   r;   r\   ri   r3   r   r   <module>r     ss    # " 2  &    	  ??)D D all !C !CF2; 2X Xr   