
    -Phb                    $   d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 d dl
Zd d	lmZ d d
lmZ d dlZd dlZd dlZej        rddlmZ  G d d          Z G d dej                  Z G d d          Z G d de          Z G d d          ZdS )    )annotations   )CMakeException)parse_generator_expressions   )mlog)version_compareNPath)	lru_cache)Environmentc                  Z    e Zd Zdd
Ze ed          dd                        ZddZdS )CMakeTraceLinefile_strstrlineintfuncargsT.List[str]returnNonec                    t                               |          | _        || _        |                                | _        || _        d S N)r   _to_pathfiler   lowerr   r   )selfr   r   r   r   s        \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/cmake/traceparser.py__init__zCMakeTraceLine.__init__   s8    "++H55		JJLL				    N)maxsizer   c                     t          |           S r   r
   )r   s    r   r   zCMakeTraceLine._to_path   s     H~~r!   c                ^    d}|                     | j        | j        | j        | j                  S )NzCMake TRACE: {0}:{1} {2}({3}))formatr   r   r   r   )r   ss     r   __repr__zCMakeTraceLine.__repr__#   s'    +xx	49diCCCr!   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )__name__
__module____qualname__r    staticmethodr   r   r'    r!   r   r   r      sz            Yt    \D D D D D Dr!   r   c                  $    e Zd ZU ded<   ded<   dS )CMakeCacheEntryr   valuer   typeN)r)   r*   r+   __annotations__r-   r!   r   r/   r/   '   s%         IIIIIr!   r/   c                  .    e Zd Z	 	 	 dddZddZddZdS )CMakeTargetNFnamer   target_type
properties$T.Optional[T.Dict[str, T.List[str]]]importedbooltlineT.Optional[CMakeTraceLine]c                ~    |i }|| _         || _        || _        || _        || _        g | _        d | _        d | _        d S r   )r5   r1   r7   r9   r;   dependscurrent_bin_dircurrent_src_dir)r   r5   r6   r7   r9   r;   s         r   r    zCMakeTarget.__init__,   sO     J		$ 
$&1515r!   r   c                    d}d}| j         D ]&}|d                    || j         |                   z  }'|                    | j        | j        | j        || j                  S )NzsCMake TARGET:
  -- name:      {}
  -- type:      {}
  -- imported:  {}
  -- properties: {{
{}     }}
  -- tline: {} z      '{}': {}
)r7   r%   r5   r1   r9   r;   )r   r&   propSTRis       r   r'   zCMakeTarget.__repr__?   sh     H 	H 	HA)00DOA4FGGGGGxx	49dmWdjQQQr!   r   c                    | j         sd S | j                                         D ]?\  }}d |D             | j         |<   t          d | j         |         D                       sJ @d S )Nc                6    g | ]}|                                 S r-   strip.0xs     r   
<listcomp>z0CMakeTarget.strip_properties.<locals>.<listcomp>K   s     #;#;#;!AGGII#;#;#;r!   c              3     K   | ]}d |vV  	dS );Nr-   rI   s     r   	<genexpr>z/CMakeTarget.strip_properties.<locals>.<genexpr>L   s&      BBs!|BBBBBBr!   )r7   itemsall)r   keyvals      r   strip_propertieszCMakeTarget.strip_propertiesF   s     	F--// 	C 	CHC#;#;s#;#;#;DOC BBT_S-ABBBBBBBBB	C 	Cr!   )NFN)
r5   r   r6   r   r7   r8   r9   r:   r;   r<   r(   )r   r   )r)   r*   r+   r    r'   rT   r-   r!   r   r4   r4   +   sl        
 EI$):>6 6 6 6 6&R R R RC C C C C Cr!   r4   c                        e Zd Zd fdZ xZS )CMakeGeneratorTargetr5   r   r   r   c                    t                                          |di            g | _        g | _        g | _        d | _        d S )NCUSTOM)superr    outputs_outputs_strcommandworking_dir)r   r5   	__class__s     r   r    zCMakeGeneratorTarget.__init__O   sC    x,,,%')+,.-1r!   )r5   r   r   r   )r)   r*   r+   r    __classcell__)r^   s   @r   rV   rV   N   s=        2 2 2 2 2 2 2 2 2 2r!   rV   c                     e Zd ZdDdEdZdFdZdGdZdHdIdZdJdZdKdZdLdZ	dMdZ
dNdZdOd!ZdPd"ZdPd#ZdPd$ZdPd%ZdHdQd'ZdPd(ZdPd)ZdPd*ZdPd+ZdPd,ZdPd-ZdPd.ZdPd/ZdPd0ZdPd1ZdRdSd9ZdPd:ZdPd;ZdPd<ZdTd>Z dTd?Z!dUdAZ"dVdCZ#dS )WCMakeTraceParserTcmake_versionr   	build_dirr   env'Environment'
permissiver:   r   r   c                   i | _         i | _        i | _        i | _        t	                      | _        g | _        || _        || _        || _	        d| _
        || j
        z  | _        t          |d          rdnd| _        g | _        g | _        g | _        i d| j        d| j        d| j        d| j        d	| j        d
| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j         d| j!        d| j"        i| _#        t          | j	        d          r3tI          j%        tM          j'        d| j	         d          d           d S d S )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cacherj   explicit_headerscustom_targetsrd   rf   rb   
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   rb   rc   rd   rf   s        r   r    zCMakeTraceParser.__init__W   s7   CE	DFCEGI
-0UU =?$*+(4?:)8)Q)Q^IIW^#%
 .079K
4?K
T&K
 d8K
 42	K

 !$"@K
  !>K
 D4K
 $T%FK
 )$*PK
 %d&HK
 )$*PK
 $T%FK
 "4#BK
  <K
 t*K
( -d.R)K
* #D$>+K
, )$*J-K
 K
2 4-y99 		X_ . AE@R. . .        		 		r!   r   c                ~    ddgddgd}dg}|                                  s|d| j         gz  }|| j                 |z   S )Nz--tracez--trace-expandz--trace-format=json-v1)ri   rh   z--no-warn-unused-cliz--trace-redirect=)requires_stderrr   r   )r   arg_map	base_argss      r   
trace_argszCMakeTraceParser.trace_args   sj    !12(*BC
 

 ,,	##%% 	A?do??@@It()I55r!   c                ,    t          | j        d          S )Nz<3.16)r	   rb   )r   s    r   r   z CMakeTraceParser.requires_stderr   s    t17;;;r!   NtraceT.Optional[str]c                   
                                   sM j                                        st          d j        d           j                            dd          }|st          d          d } j        dk    r                     |          }n9 j        dk    r                     |          }nt          d	 j         d
          |D ]O}|j         j	        v r xj
        |gz  c_
        " j                            |j        d           }|r ||           P fd
 fd}
fd j                                        D              _        
fd j                                        D              _         fd j        D              _        
fd j                                        D              _         j                                        D ] fdt)          j                   _        t)          j                   _        j        &fdj                                        D             nd _         j                  _         j        D ]} ||j                  |_        |j        }
fd|j        D             |_        t;          |j        |          D ]9\  }}	|d         dk    r(t          d                    |	d                             :|j        /tA          t)          tC          |j                                       nd |_        É j                                        D ]"                                 d S )NzCMake: Trace file "z" not foundignorezutf-8)r   encodingz3CMake: The CMake trace was not provided or is emptyri   rh   z,CMake: Internal error: Invalid trace format z. Expected [human, json-v1]c                x    | r6t          d                    |                                         d          ng S NrN   r   joinsplitstrlistr   s    r   <lambda>z(CMakeTraceParser.parse.<locals>.<lambda>   sn      SZ  PbOjknkskst{k|k|  C  PD  PD  PJ  PJ  KN  PO  PO  PO  `b r!   c                    | r@d t          d                    |                                         d          D             ng S )Nc                ,    g | ]}t          |          S r-   r
   rI   s     r   rL   z<CMakeTraceParser.parse.<locals>.<lambda>.<locals>.<listcomp>   s;      Qc  Qc  Qc]^QUVWQXQX  Qc  Qc  Qcr!   rN   r   r   s    r   r   z(CMakeTraceParser.parse.<locals>.<lambda>   s      gn  Qv  Qc  Qcb}  B  G  G  HO  P  P  RV  cW  cW  c]  c]  ^a  cb  cb  Qc  Qc  Qc  Qc  tv r!   c                .    i | ]\  }}| |          S r-   r-   rJ   kvstrlist_gens      r   
<dictcomp>z*CMakeTraceParser.parse.<locals>.<dictcomp>   s'    EEE41aQAEEEr!   c                X    i | ]&\  }}|fd |                                 D             'S )c                .    i | ]\  }}| |          S r-   r-   r   s      r   r   z5CMakeTraceParser.parse.<locals>.<dictcomp>.<dictcomp>   s'    888da;;q>>888r!   )rP   )rJ   pdr   s      r   r   z*CMakeTraceParser.parse.<locals>.<dictcomp>   sL     
 
 
1 8888aggii888
 
 
r!   c           	     d    h | ],}t          t          t          |                              -S r-   )r   r   r   rJ   rK   r   s     r   	<setcomp>z)CMakeTraceParser.parse.<locals>.<setcomp>   s3     p p pUV&A#a&&$&O&O!P!P p p pr!   c                ^    i | ])\  }}|t           |j                  |j                  *S r-   )r/   r0   r1   r   s      r   r   z*CMakeTraceParser.parse.<locals>.<dictcomp>   sO     
 
 

 1	 AG$$ 
 
 
r!   c                |    | r8t          d                    |           |                              d          ng S )NrN   context_tgtr   )r   tr   s     r   r   z(CMakeTraceParser.parse.<locals>.<lambda>   s      u|  cDb}  B  G  G  HO  P  P  RV  de  cf  cf  cf  cl  cl  mp  cq  cq  cq  BD r!   r   c                0    i | ]\  }}| |          S r-   r-   )rJ   r   r   tgttgtlist_gens      r   r   z*CMakeTraceParser.parse.<locals>.<dictcomp>   s8       +/1a;;q#&&  r!   c                &    g | ]} |          S r-   r-   )rJ   rK   r   s     r   rL   z*CMakeTraceParser.parse.<locals>.<listcomp>   s!    AAAqKKNNAAAr!   r   rB   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}   rP   r~   r   r   r   valuesr   r5   r1   r7   r>   r   r[   rZ   r\   zipr%   r]   r   r   rT   )r   r   lexer1lfnpathlist_genctgttempr\   srcr   r   r   s   `         @@@r   parsezCMakeTraceParser.parse   sj   ##%% 	V'//11 `$%^4;O%^%^%^___(22(W2UUE 	X !VWWW ''**511FF)++))%00FF !~PTPa!~!~!~  		 		Av...$$+$$ ##AFD11B 1 @b  @b  @b  @b Av  Av  Av  AvEEEE49??3D3DEEE	
 
 
 
)//11
 
 
 !q p p pZ^Zo p p p
 
 
 

 
((**
 
 

 <&&(( 	8 	8C PD  PD  PD  PDK238TsSSSCH238TsSSSCH +    36>3G3G3I3I   15 N &+ck377CKK' 		H 		HD'<(9::DL<DAAAADLAAADL #DL$ 7 7  1:##(~  F  F  GJ  KL  GM  N  N   $ bfaqa}t$?DDT@U@UW[$\$\]]]  DHD <&&(( 	# 	#C  """"	# 	#r!   var_listc                @    |D ]}|| j         v r| j         |         c S g S r   r}   )r   r   rD   s      r   get_first_cmake_var_ofz'CMakeTraceParser.get_first_cmake_var_of   s:     	$ 	$ADI~~y|###  	r!   varc                2    || j         v r| j         |         S g S r   r   r   r   s     r   get_cmake_varzCMakeTraceParser.get_cmake_var   s     $)9S>!	r!   c                X    || j         v r | j         |         r| j         |         d         S d S )Nr   r   r   s     r   
var_to_strzCMakeTraceParser.var_to_str   s0    $)	#9S>!$$tr!   exprT.Union[str, T.List[str]]c                    |sdS t          |t                    r	|d         }n|}|                                }|dvo|                    d           S )NFr   )0OFFNOFALSENIGNORENOTFOUND)
isinstancelistupperendswith)r   r   expr_strs      r   _str_to_boolzCMakeTraceParser._str_to_bool  sd     	5dD!! 	AwHHH>>##IIoRZRcRcdnRoRoNoor!   c                ^    |                      | j                            |g                     S r   )r   r}   r   r   s     r   var_to_boolzCMakeTraceParser.var_to_bool  s&      sB!7!7888r!   functionerrorr;   r   c                ~    | j         rt          j        d| d| d|            d S t          d| d| d|           )NzCMake trace warning: z() 
zCMake: )rf   r   debugr   )r   r   r   r;   s       r   _gen_exceptionzCMakeTraceParser._gen_exception  sc     ? 	JLxLLELLULLMMM4DxDDEDDUDDEEEr!   c                   d}d|j         v }	 |j                             d          }|j         |dz            }n# t          t          f$ r Y nw xY wg }|j         D ](}|r|dk    r|dk    r n|                    |           )t          |          dk     r|                     dd|          S |                    d          }d	                    |          }|r6|| j	        vs|r+t          |                    d
          |          | j	        |<   |s|| j        v r
| j        |= dS dS |                    d
          | j        |<   |                    d
          | j                            |j        i           |<   dS )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_SCOPErj   requires at least one argumentr    rN   )r   index
ValueError
IndexErrorappendlenr   popr   r   r/   r   r}   r~   
setdefaultr   )	r   r;   
cache_typecache_force	cache_idxr   rD   
identifierr0   s	            r   r   zCMakeTraceParser._cmake_set  s   " 
+	
((11IIM2JJJ' 	 	 	D	  	 	A ^++ G||KKNNNNt99q==&&u.NPUVVV XXa[[
  	W++{+)8S9I9I:)V)V
:& 	XTY&&Ij))) '& %*KK$4$4DIj!GL{{SVGWGWD((R88DDDs   *8 AAc                    t          |j                  dk     r|                     dd|          S |j        d         | j        v r| j        |j        d         = d S d S )Nr   rk   r   r   )r  r   r   r}   r   r;   s     r   r   zCMakeTraceParser._cmake_unsetT  s`    uz??Q&&w0PRWXXX:a=DI%%	%*Q-((( &%r!   c                6   t          |j                  }d}d|vr|                     dd|          S |                    d           t	          |          dk     r|                     dd|          S t          |d         di ||	          | j        |d         <   d S )
NTIMPORTEDrl   z*non imported executables are not supportedr   requires at least 1 argumentr   
EXECUTABLEr;   r9   )r   r   r   remover  r4   r   )r   r;   r   is_importeds       r   r   z&CMakeTraceParser._cmake_add_executable\  s    EJ T!!&&'79eglmmmJt99q==&&'79WY^___ +DG\2U]h i i iT!Wr!   c                `   t          |j                  }d|v rk|                    d           t          |          dk     r|                     dd|          S t          |d         di |d|v           | j        |d         <   d S d|v ro|                    d           t          |          dk     r|                     dd	|          S t          |d         |d         i |d
          | j        |d         <   d S d|v rq|                    d           t          |          dk     r|                     dd	|          S t          |d         dd|d         gi|          | j        |d         <   d S d|v r|                     dd|          S t          |d         di |          | j        |d         <   d S )N	INTERFACEr   rm   z$interface library name not specifiedr   r  r  r   zrequires at least 2 argumentsTALIASINTERFACE_LINK_LIBRARIES)r;   OBJECTz"OBJECT libraries are not supportedNORMAL)r   r   r  r  r   r4   r   r   r;   r   s      r   r   z#CMakeTraceParser._cmake_add_libraryl  s   EJ $KK$$$4yy1}}**=:`bghhh$/QbPU`jnr`r$s$s$sDLa!!!4KK
### 4yy1}}**=:Y[`aaa$/Qa"E\`$a$a$aDLa!!!__KK    4yy1}}**=:Y[`aaa %0QC]`def`g_hBiqv$w$w$wDLa!!!&&}6Z\abbb$/Q2U$S$S$SDLa!!!r!   r5   c                                          t          |j                            }|s                     dd|          S |d         dk    r                     dd|          S g d}t	          |          }dd}dd}dd}d dfd}	d }
|D ]L}||v r8|dk    r|}
n.|dk    r|}
n%|dk    r|	}
n|dk    r|}
|xj        g gz  c_        nd }
>|
 |
||           M                     d          }                     d          }rt                    nd |_        |rt          |          nd |_	        |rt          |          nd |_
                             |j                  |_                             |j                  |_         fd|j        D             |_         xj        |gz  c_        |r| j        |<   d S d S )Nrn   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_LISTSrR   r   targetrV   r   r   c                (    |xj         | gz  c_         d S r   )r[   rR   r,  s     r   handle_outputzACMakeTraceParser._cmake_add_custom_command.<locals>.handle_output  s    C5(r!   c                B    | dk    rd S |j         dxx         | gz  cc<   d S )NARGS)r\   r.  s     r   handle_commandzBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_command  s6    f}}N23%'r!   c                (    |xj         | gz  c_         d S r   )r>   r.  s     r   handle_dependszBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_depends  s    NNse#NNNNr!   c                (    | d S dz  | z  d S )Nr   r-   )rR   r,  r]   s     r   handle_working_dirzFCMakeTraceParser._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_DIRc                :    g | ]}                     |          S r-   )_guess_filesr   s     r   rL   z>CMakeTraceParser._cmake_add_custom_command.<locals>.<listcomp>  s'    GGG1$++A..GGGr!   )rR   r   r,  rV   r   r   )_flatten_argsr   r   r   rV   r\   r   r   r]   r?   r@   r;  r[   r>   r   r   )r   r;   r5   r   
magic_keysr,  r/  r3  r5  r7  r   rD   cbinary_dircsource_dirr]   s   `             @r   r   z*CMakeTraceParser._cmake_add_custom_command  s   !!$uz"2"233 	d&&';=[]bccc 7h&&';=ginoooa a a
 &d++	) 	) 	) 	)	( 	( 	( 	(
	$ 	$ 	$ 	$ 	# 	# 	# 	# 	# 	#  	 	AJ==&BB)^^'BB---+BB)^^'BNNrd*NNNB~1foo&IJJoo&IJJ2=GT+...46A!Kk!2!2!2t6A!Kk!2!2!2t"//0CDD**6>::GGGGGGGx' 	(!'DL	( 	(r!   c                    t          |j                  dk     r|                     dd|          S |                     ||j        d                    d S )Nr   ro   r   r   )r  r   r   r   r  s     r   r   z)CMakeTraceParser._cmake_add_custom_target  sV     uz??Q&&':<\^cddd 	&&uejm<<<<<r!   c                   
 t          j                  }|                    d          }d
g }|r=|                    d          }|dv rd
|dk    rn||                    d          z  }|=|s                     dd          S t          |          d	k    rd S |                    d           j        d
k    r)d                    |                              d          nd |D             sd S d
 fd}d fd}|dk    r|D ]} ||           d S |dk    r%                     |          }	|	D ]} ||           d S d S )Nr   F>   r)  APPEND_STRINGTPROPERTYrN   rp   zfailed to parse argument listr   ri   r   c                B    g | ]}|                     d           D ]}|S )rN   r   )rJ   rK   ys      r   rL   z8CMakeTraceParser._cmake_set_property.<locals>.<listcomp>  s/    ;;;1aggcll;;Q;;;;r!   r   r   r   r   c                    | j         vr                    dd|  d          S j         |          }|j        vr
g |j        <   r|j        xx         z  cc<   d S |j        <   d S )Nrp   TARGET 
 not found)r   r   r7   )r   r   r  r  r   r;   r0   s     r   	do_targetz7CMakeTraceParser._cmake_set_property.<locals>.do_target  s    $$**>;RQ;R;R;RTYZZZ,q/C//-/z* 3z***e3*****-2z***r!   r   c                b   dk    s                               sd S                     d          }|s(t          j        t	          j        d                     d}t          |          }t          |           }|                                s||z  }j        	                    |           d S )NHEADER_FILE_ONLYr9  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   r@   cur_psrc_pr  r   r0   s       r   	do_sourcez7CMakeTraceParser._cmake_set_property.<locals>.do_source  s    ///t7H7H7O7O/"oo.QRRO" &X_ .      #&))EIIE$$&& &!%%e,,,,,r!   r  SOURCE)r   r   r   r   )r   r   r   r   )	r   r   r  r   r   r  r   r   r;  )r   r;   r   scoper   currrJ  rS  rD   filesr  r  r0   s   ``        @@@r   r   z$CMakeTraceParser._cmake_set_property  s   EJ 	'88A;;D 222z!!tzz#&G  	'  	_&&~7VX]^^^t99>>FXXa[[
''HHTNN((--EE;;;;;E 	F	3 	3 	3 	3 	3 	3 	3 	3 	3 	3	- 	- 	- 	- 	- 	- 	- 	-& H  	! h%%g..E  	!  r!   c                ^   t          |j                  }g }|r3|                    d          }|dk    rn|                    |           |3g }| j        dk    r|                    d          }g }t          j        d          }|D ]p}	|                    |	          rD|r=|                    |d                    |          	                    d          f           |	}g }[|                    |	           q|r=|                    |d                    |          	                    d          f           n,d t          |d d d         |d	d d                   D             }|D ]G\  }}
|D ]?}|| j        vr|                     d
d| d|          c c S |
| j        |         j        |<   @Hd S )Nr   
PROPERTIESri   z	^[A-Z_]+$r   rN   c                T    g | ]%}|d          |d                              d          f&S )r   r   rN   rE  rI   s     r   rL   zACMakeTraceParser._cmake_set_target_properties.<locals>.<listcomp>W  s/    SSS1!adjjoo.SSSr!   r   r   rq   rH  rI  )r   r   r  r  r   recompilematchr   r   r   r   r   r7   )r   r;   r   r   rV  arglistr5   r   
prop_regexar0   rD   s               r   r   z-CMakeTraceParser._cmake_set_target_properties+  s   EJ 	!88A;;D|##NN4     	!. 68''88A;;D"$FL11J % %##A&& % Lchhv.>.>.D.DS.I.I'JKKKDFFMM!$$$$ Dchhv&6&6&<&<S&A&ABCCCSSD1ItADqDz8R8RSSSG" 	9 	9KD% 9 9DL((../FH_RSH_H_H_afggggggg38Q*400	9	9 	9r!   c                T   t          |j                  }t          |          dk     r|                     dd|          S | j                            |d                   }|s|                     dd|          S |dd          D ]%}|xj        |                    d          z  c_        &d S )Nr   rw   ztakes at least 2 argumentsr   ztarget not foundr   rN   )r   r   r  r   r   r   r>   r   )r   r;   r   r,  rD   s        r   r   z(CMakeTraceParser._cmake_add_dependencies`  s    EJt99q==&&'9;WY^___!!$q'** 	V&&'9;MuUUUabb 	+ 	+ANNaggcll*NNN	+ 	+r!   c                6    |                      ddd|           d S )Nrr   COMPILE_DEFINITIONSINTERFACE_COMPILE_DEFINITIONS_parse_common_target_optionsr  s     r   r   z2CMakeTraceParser._cmake_target_compile_definitionsn  s9    ))*FH]_~  AF  	G  	G  	G  	G  	Gr!   c                6    |                      ddd|           d S )Nrs   COMPILE_OPTIONSINTERFACE_COMPILE_OPTIONSre  r  s     r   r   z.CMakeTraceParser._cmake_target_compile_optionsr  s&    ))*BDUWrtyzzzzzr!   c                @    |                      ddd|ddgd           d S )Nrt   INCLUDE_DIRECTORIESINTERFACE_INCLUDE_DIRECTORIESSYSTEMBEFORET)r   pathsre  r  s     r   r   z2CMakeTraceParser._cmake_target_include_directoriesv  sX    ))*FH]_~  AF  PX  Zb  Oc  ko)  	p  	p  	p  	p  	pr!   c                6    |                      ddd|           d S )Nrv   LINK_OPTIONSINTERFACE_LINK_OPTIONSre  r  s     r   r   z+CMakeTraceParser._cmake_target_link_optionsz  s%    ))*?Qikpqqqqqr!   c                6    |                      ddd|           d S )Nru   LINK_LIBRARIESr  re  r  s     r   r   z-CMakeTraceParser._cmake_target_link_libraries~  s&    ))*ACSUoqvwwwwwr!   c                :   t          |j                  }t          |          dk     r|                     dd|          S |d                                                                         dvrd S | xj        d                    |dd                    gz  c_        d S )Nr   rx   ztakes at least 1 argumentr   )FATAL_ERROR
SEND_ERRORr   )r   r   r  r   r   rH   r   r   r  s      r   r   zCMakeTraceParser._cmake_message  s    EJt99q==&&y2MuUUU7==??  ""*GGGFabb**++r!   Fr   private_propinterface_propr   T.Optional[T.List[str]]ro  c                   |dg}t          |j                  }t          |          dk     r|                     |d|          S |d         }|| j        vr|                     |d| d|          S g }	g }
d}|dd          D ]F}||v r|dv r|}|d	v r|	|                    d
          z  }	|dv r|
|                    d
          z  }
G|r*|                     |	          }	|                     |
          }
d |	D             }	d |
D             }
||
f||	ffD ]c}|d         | j        |         j        vrg | j        |         j        |d         <   | j        |         j        |d         xx         |d         z  cc<   dd S )Nrn  r   r   r   rH  rI  PUBLIC>   r|  PRIVATEr  LINK_PUBLICLINK_PRIVATELINK_INTERFACE_LIBRARIES>   r|  r  r~  r  rN   >   r|  r}  r  c                    g | ]}||S r-   r-   rI   s     r   rL   zACMakeTraceParser._parse_common_target_options.<locals>.<listcomp>  s    ///1Q/Q///r!   c                    g | ]}||S r-   r-   rI   s     r   rL   zACMakeTraceParser._parse_common_target_options.<locals>.<listcomp>  s    ++++1+++r!   )r   r   r  r   r   r   r;  r7   )r   r   rx  ry  r;   r   ro  r   r,  	interfaceprivatemoderD   js                 r   rf  z-CMakeTraceParser._parse_common_target_options  s   >ZFEJt99q==&&t-MuUUUa%%&&t-Iv-I-I-I5QQQ	abb 	( 	(AF{{qqqYYYQWWS\\)	<<<1773<<' 	1)))44I''00G//	///	++g+++)NI+FG 	: 	:AQ44</:::8:V$/!5L +AaD111QqT91111		: 	:r!   c                    | j         D ]/}| j                            |j        d           }|r ||           0g | _         d S r   )r   r   r   r   )r   r;   r   r   s       r   r   z0CMakeTraceParser._meson_ps_execute_delayed_calls  sS    % 	 	A##AFD11B 1  "r!   c                :    |                      d          | _        d S )NMESON_PS_DELAYED_CALLS)r   r   r  s     r   r   z&CMakeTraceParser._meson_ps_reload_vars  s     $ 2 23K L Lr!   c                    t          |j                  }|st          j        d           d S t          j        d|d          d           d S )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   rN  r  s      r   r   z,CMakeTraceParser._meson_ps_disabled_function  sU    EJ 	JxyyyFmDGmmmnnnnnr!   'T.Generator[CMakeTraceLine, None, None]c              #    K   t          j        dt           j                  }t          j        d          }d}|t          |          k     r+|                    ||          }|sS|                    ||          }|s&t          ||d                     t          d          |                                }|                                }|                    d          }|                    d          }|                    d          }	|                    d          }
|
	                    d	          }d
 |D             }t          |t          |          |	|          V  |t          |          k     )d S d S )Nz>\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(([\s\S]*?) ?\)\s*\nz[^\n]*\nr   zFailed to parse CMake tracer            r   c                6    g | ]}|                                 S r-   rG   )rJ   r`  s     r   rL   z5CMakeTraceParser._lex_trace_human.<locals>.<listcomp>  s     ,,,!AGGII,,,r!   )r[  r\  	MULTILINEr  r]  printr   endgroupr   r   r   )r   r   	reg_tline	reg_otherlocmo_file_line
skip_matchr   r   r   r   argls               r   r   z!CMakeTraceParser._lex_trace_human  sm     J`bdbnoo	J{++	CJJ$??5#66L &__UC88
! H%+&&&()FGGG nn&&""$$C%%a((D%%a((D%%a((D%%a((D::c??D,,t,,,D s4yy$=====) CJJr!   c              #    K   |                     d          }|                    d           |D ]}t          j        |          }t	          |d         t
                    sJ t	          |d         t                    sJ t	          |d         t
                    sJ t	          |d         t                    sJ |d         }|D ]}t	          |t
                    sJ t          |d         |d         |d         |          V  d S )NF)keependsr   r   r   cmdr   )	
splitlinesr  jsonloadsr   r   r   r   r   )r   r   linesrD   datar   r  s          r   r   z CMakeTraceParser._lex_trace_json  s       % 00		! 		P 		PA:a==Dd6lC00000d6lC00000d5kC00000d6lD11111<D * *!!S)))))) ftF|T%[$OOOOOO		P 		Pr!   r   c                D    g }|D ]}||                     d          z  }|S r   rE  )r   r   resrD   s       r   r<  zCMakeTraceParser._flatten_args  s1     	  	 A1773<<CC
r!   broken_listc                   | j         dk    r|S t          j        d          }t          j        d          }g }d }d}|D ]}||}d}	t          |                                          r||gz  }|}d}5|                    |          s||gz  }|}d}U|                    |          r| d| }||gz  }d }d}|t          | d|                                           r
| d| }d}|r||gz  }|}d}| d| }d}|r||gz  }|S )Nri   z^([A-Za-z]:)?/(.*/)*[^./]+$z^.*\.[a-zA-Z]+$Fr   T)r   r[  r\  r   r   r]  exists)r   r  	reg_startreg_end
fixed_listcurr_str
path_foundrD   s           r   r;  zCMakeTraceParser._guess_files  s   '' J=>>	*/00"$
$(
 	# 	#A"

h'')) #xj(
"

__X.. #xj(
"

q!! #&,,,,xj(
"

''A''((//11 #&,,,,!

 #xj(
"

&,,,,"

 	%8*$Jr!   )T)
rb   r   rc   r   rd   re   rf   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   r   r   r:   )r   r   r   r:   )r   r   r   r   r;   r   r   r   )r;   r   r   r   )r;   r   r5   r   r   r   )NF)r   r   rx  r   ry  r   r;   r   r   rz  ro  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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf  r   r   r   r   r   r<  r;  r-   r!   r   ra   ra   V   s       = = = = =~
6 
6 
6 
6< < < <F# F# F# F# F#P         p p p p9 9 9 9F F F F;X ;X ;X ;Xz) ) ) )j j j j  T  T  T  TDF( F( F( F( F(P= = = =J J J JX39 39 39 39j+ + + +G G G G{ { { {p p p pr r r rx x x x
, 
, 
, 
,*: *: *: *: *:X" " " "M M M Mo o o o> > > >6P P P P   1 1 1 1 1 1r!   ra   )
__future__r   commonr   	generatorr   rB   r   mesonlibr	   typingTpathlibr   	functoolsr   r[  r  r   TYPE_CHECKINGenvironmentr   r   
NamedTupler/   r4   rV   ra   r-   r!   r   <module>r     s   # " " " " " " " " " " " 2 2 2 2 2 2       & & & & & &                 				  ? *))))))D D D D D D D D     al   !C !C !C !C !C !C !C !CF2 2 2 2 2; 2 2 2X X X X X X X X X Xr!   