
    -Ph                    j    d dl mZ ddlmZ ddlmZ ddlmZ d dlZej	        rddl
mZmZ dd	ddZdS )    )annotations   )mesonlib)mlog   )cmake_is_debugN)CMakeTraceParserCMakeTarget)context_tgtrawstrtrace'CMakeTraceParser'r   T.Optional['CMakeTarget']returnc          
        	
 d vr S d}dd7d}d8d	
d7fd
}d7fd}i dd dd dd dd dd dd dd d|d|d
fdd
fdd 
fd!d"
fd#d$
fd%d&d' d(d) d*d+ d, d- d. d/ fd0fd1||d2	d9 	fd3t                     k     rbt                     d4z
  k     r)          d5k    r d4z            d6k    r|             z  }n|          z  }d4z  t                     k     b|S ):zParse CMake generator expressions

    Most generator expressions are simply ignored for
    simplicity, however some are required for some common
    use cases.
    z$< r   argr   r   c                v    |                      d          }|dk     rdS | d |         | |dz   d          k    rdndS )N,r   0r   1)find)r   col_poss     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/cmake/generator.pyequalz*parse_generator_expressions.<locals>.equal"   sH    ((3--Q;;3hwh-3w{||+<<<33#E    opc           	         |                     d          }|dk     rdS t          j        |d |         d                    | ||dz   d                              rdndS )Nr   r   r   z{}{}r   r   )r   r   version_compareformat)r   r   r   s      r   	vers_compz.parse_generator_expressions.<locals>.vers_comp)   sf    ((3--Q;;3"23xx=&--PRTWX_bcXcXdXdTeBfBfggp33mppr   c                J   d| vr2dS d                     j                            | g                     S |                     d          }|d         j        v r2j        |d                  j                            |d         g           ng }d                     |          S )Nr   r   ;r   r   )join
propertiesgetsplittargets)r   argspropsr   r   s      r   target_propertyz4parse_generator_expressions.<locals>.target_property0   s    c>>"r88K266sB??@@@yy~~FJ1gQVQ^F^F^d1g&155d1grBBBdfxxr   c                   | j         vrt          j        d|  d           dS j         |          }g }d}d|j        v rd |j        d         D             }|d         }t	          j                  rd|v rd}nd|v rd}nd|v rd}d	| |j        v r-d
                    d |j        d	|          D                       S d|j        v r*d
                    d |j        d         D                       S d| |j        v r-d
                    d |j        d|          D                       S d|j        v r*d
                    d |j        d         D                       S dS )Nz5Unable to evaluate the cmake variable '$<TARGET_FILE:z>'.r   IMPORTED_CONFIGURATIONSc                    g | ]}||S  r0   .0xs     r   
<listcomp>zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>E   s    NNN!ANANNNr   r   DEBUGRELEASEIMPORTED_IMPLIB_r$   c                    g | ]}||S r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>R   s    VVV1TUVQVVVr   IMPORTED_IMPLIBc                    g | ]}||S r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>T   s    OOO1QOQOOOr   IMPORTED_LOCATION_c                    g | ]}||S r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>V   s    XXX1VWXQXXXr   IMPORTED_LOCATIONc                    g | ]}||S r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>X   s    QQQ1qQQQQQr   )r)   r   warningr&   r   envr%   )r   tgtcfgscfgr   s       r   target_filez0parse_generator_expressions.<locals>.target_file;   s   em##LYQTYYYZZZ2mC $66NNs~.GHNNNDq'C%)$$ 	 $d""D  #c##s~5588VV7O#7O7O(PVVVWWW#.0088OO7H(IOOOPPP'#''3>9988XX7QC7Q7Q(RXXXYYY CN2288QQ7J(KQQQRRRrr   BOOLc                `    |                                  dv s|                     d          rdndS )N>   r   r   NNOOFFFALSEIGNORENOTFOUNDz	-NOTFOUNDr   r   )upperendswithr3   s    r   <lambda>z-parse_generator_expressions.<locals>.<lambda>]   sC    .h!h!hlmlvlv  xC  mD  mD!h##  JM r   ANDc                b    t          d |                     d          D                       rdndS )Nc              3  "   K   | ]
}|d k    V  dS r   Nr0   r2   ys     r   	<genexpr>z@parse_generator_expressions.<locals>.<lambda>.<locals>.<genexpr>^   s&      #C#CAH#C#C#C#C#C#Cr   r   r   r   )allr(   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>^   s0    #C#Caggcll#C#C#C C CL r   ORc                b    t          d |                     d          D                       rdndS )Nc              3  "   K   | ]
}|d k    V  dS rT   r0   rU   s     r   rW   z@parse_generator_expressions.<locals>.<lambda>.<locals>.<genexpr>_   s&      "B"B18"B"B"B"B"B"Br   r   r   r   )anyr(   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>_   s0    s"B"BQWWS\\"B"B"BBBK r   NOTc                    | dk    rdndS Nr   r   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>`   s    Sc r   IFc                    |                      d          d         dk    r|                      d          d         n|                      d          d         S )Nr   r   r   r   r   )r(   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>b   s?    1773<<?c+A+AQqwws||TU r   r   c                    dS Nr   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>d   s    r r   r   c                    | S Nr0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>e   s    q r   STREQUALEQUALVERSION_LESSc                     d|           S )N<r0   r3   r"   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>j   s    ))C"3"3 r   VERSION_GREATERc                     d|           S N>r0   rk   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>k   s    YYsA%6%6 r   VERSION_EQUALc                     d|           S )N=r0   rk   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>l   s    99S!#4#4 r   VERSION_LESS_EQUALc                     d|           S )Nz<=r0   rk   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>m   s    		$(:(: r   VERSION_GREATER_EQUALc                     d|           S )Nz>=r0   rk   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>n   s    99T1+=+= r   
LOWER_CASEc                *    |                                  S re   )lowerrO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>q       		 r   
UPPER_CASEc                *    |                                  S re   )rM   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>r   rz   r   INSTALL_INTERFACEc                    dS rc   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>x   s    r r   c                    | S re   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>y   s    Q r   c                    dS rn   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>|   s    S r   c                    dS )Nr   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>}   s    3 r   c                    dS )Nr$   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>~   s    s r   c                    | j         v rdndS r_   r)   r3   r   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>   s    !u}*<*<33# r   c                    | j         v r| ndS rc   r   r   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>   s    U]0B0B11 r   )BUILD_INTERFACEzANGLE-RCOMMA	SEMICOLONTARGET_EXISTSTARGET_NAME_IF_EXISTSTARGET_PROPERTYTARGET_FILEc                 
   dz  d} d}d}d}t                    k     ro         dk    rnbt                    dz
  k     r)         dk    rdz            dk    r|             z  }n|         z  }dz  t                    k     o|                    d          }|dk     r|} n|d |         } ||dz   d          }|                                 } |                                }| v r |          |          }|S )	Nr   r   ro   r   $rj   :r   )lenr   strip)	funcr*   resexpr   eval_generator_expressionsir   	supporteds	        r   r   z?parse_generator_expressions.<locals>.eval_generator_expressions   s2   	Q #c((ll1v}}SXX\!!c!fmmAE
c8I8I11333 s1vFA #c((ll ((3--Q;;DDxx=Dw{||$Dzz||zz|| 9!)D/$''C
r   r   r   rj   )r   r   r   r   )r   r   r   r   r   r   )r   r   )r   )r   r   r   outr   r,   rD   r   r   r   r"   s   ```    @@@@r   parse_generator_expressionsr      s    3

C	AF F F Fq q q q	 	 	 	 	 	 	     @*6  M  M*6 	LL*6 	KK	*6
 	11*6 	VV*6 	\\*6 	[[*6 	E*6 	*6 	3333*6  	6666!*6" 	4444#*6$ 	::::%*6& 	 !=!=!=!='*6, 	))-*6. 	))/*6: 	\\;*6< '; !="] FEEE!J!J!J!J*"S*6 *6 *6IZ& & & & & & & & &P c#hh,,s3xx!|A##a!e*2C2C--///CC 3q6MC	Q c#hh,, Jr   )r   r   r   r   r   r   r   r   )
__future__r   r   r   r   commonr   typingTTYPE_CHECKINGtraceparserr	   r
   r   r0   r   r   <module>r      s    # " " " " "             " " " " " "    ? ;:::::::: 6:	l l l l l l l lr   