§
    ƒnócö  ã                  ó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 ):z¦Parse CMake generator expressions

    Most generator expressions are simply ignored for
    simplicety, 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     ú</usr/lib/python3/dist-packages/mesonbuild/cmake/generator.pyÚequalz*parse_generator_expressions.<locals>.equal,   sH   € Ø—(’(˜3‘-”-ˆØ�QŠ;ˆ;Ø�3à˜h˜w˜hœ-¨3¨w¸©{¨|¨|Ô+<Ò<Ð<�3�3À#Ð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_comp3   sf   € Ø—(’(˜3‘-”-ˆØ�QŠ;ˆ;Ø�3å"Ô2°3°x¸°x´=À&Ç-Â-ÐPRÐTWÐX_ÐbcÑXcÐXdÐXdÔTeÑBfÔBfÑgÔgÐp�3�3ÐmpÐ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_property:   sš   ø€ à�cˆ>ˆ>ØÐ"Ø�rØ—8’8˜KÔ2×6Ò6°s¸BÑ?Ô?Ñ@Ô@Ð@à�yŠy˜‰~Œ~ˆØFJÈ1ÄgÐQVÔQ^ÐF^ÐF^�”˜d 1œgÔ&Ô1×5Ò5°d¸1´g¸rÑBÔBÐBÐdfˆØ�xŠx˜‰ŒÐ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>O   s   € ÐNÐNÐN˜!ÈAÐN�AÐ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>\   s   € ÐVÐVÐV 1ÐTUÐV˜QÐVÐVÐVr   ÚIMPORTED_IMPLIBc                ó   — g | ]}|¯|‘ŒS r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>^   s   € ÐOÐOÐO 1ÈQÐO˜QÐOÐOÐOr   ÚIMPORTED_LOCATION_c                ó   — g | ]}|¯|‘ŒS r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>`   s   € ÐXÐXÐX 1ÐVWÐX˜QÐXÐXÐXr   ÚIMPORTED_LOCATIONc                ó   — g | ]}|¯|‘ŒS r0   r0   r1   s     r   r4   zDparse_generator_expressions.<locals>.target_file.<locals>.<listcomp>b   s   € ÐQÐQÐQ 1ÈqÐQ˜QÐQÐQÐQr   )r)   r   Úwarningr&   r   Úenvr%   )r   ÚtgtÚcfgsÚcfgr   s       €r   Útarget_filez0parse_generator_expressions.<locals>.target_fileE   s¹  ø€ Ø�e”mÐ#Ð#ÝŒLÐYÐQTÐYÐYÐYÑZÔZÐZØ�2ØŒm˜CÔ ˆàˆØˆà$¨¬Ð6Ð6ØNÐN˜sœ~Ð.GÔHÐNÑNÔNˆDØ�q”'ˆCå˜%œ)Ñ$Ô$ð 	 Ø˜$ˆˆØ��Ø˜dÐ"Ð"Ø�øà˜DÐ Ð Ø�à#˜cÐ#Ð# s¤~Ð5Ð5Ø—8’8ÐVÐV¨¬Ð7OÈ#Ð7OÐ7OÔ(PÐVÑVÔVÑWÔWÐWØ #¤.Ð0Ð0Ø—8’8ÐOÐO¨¬Ð7HÔ(IÐOÑOÔOÑPÔPÐPØ' #Ð'Ð'¨3¬>Ð9Ð9Ø—8’8ÐXÐX¨¬Ð7QÈCÐ7QÐ7QÔ(RÐXÑXÔXÑYÔYÐYØ  C¤NÐ2Ð2Ø—8’8ÐQÐQ¨¬Ð7JÔ(KÐQÑQÔQÑRÔRÐRØˆrr   ÚBOOLc                ó`   — |                       ¦   «         dv s|                      d¦  «        rdndS )N>   r   ÚNÚNOÚOFFÚFALSEÚIGNOREÚNOTFOUNDz	-NOTFOUNDr   r   )ÚupperÚendswith©r3   s    r   ú<lambda>z-parse_generator_expressions.<locals>.<lambda>g   s7   €  §¢¡¤Ð.dÐ!dÐ!dÐhi×hrÒhrÐs~ÑhÔhÐ!d˜#˜#ð  FI€ 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>h   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>h   s0   € ¥Ð#CÐ#C°a·g²g¸c±l´lÐ#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>i   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>i   s0   € �sÐ"BÐ"B°Q·W²W¸S±\´\Ð"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>j   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>l   s?   € ¨1¯7ª7°3©<¬<¸¬?¸cÒ+AÐ+A˜Ÿš ™œ Qœ˜ÀqÇwÂwÈsÁ|Ä|ÐTUÄ€ r   r   c                ó   — dS ©Nr   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>n   s   € �r€ r   r   c                ó   — | S ©Nr0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>o   s   € �q€ r   ÚSTREQUALÚEQUALÚVERSION_LESSc                ó   •—  ‰d| ¦  «        S )Nú<r0   ©r3   r"   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>t   s   ø€  ) )¨C°Ñ"3Ô"3€ r   ÚVERSION_GREATERc                ó   •—  ‰d| ¦  «        S ©Nú>r0   rk   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>u   s   ø€  Y Y¨s°AÑ%6Ô%6€ r   ÚVERSION_EQUALc                ó   •—  ‰d| ¦  «        S )Nú=r0   rk   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>v   s   ø€  9 9¨S°!Ñ#4Ô#4€ r   ÚVERSION_LESS_EQUALc                ó   •—  ‰d| ¦  «        S )Nz<=r0   rk   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>w   s   ø€ ¨	¨	°$¸Ñ(:Ô(:€ r   ÚVERSION_GREATER_EQUALc                ó   •—  ‰d| ¦  «        S )Nz>=r0   rk   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>x   s   ø€ ¨9¨9°T¸1Ñ+=Ô+=€ r   Ú
LOWER_CASEc                ó*   — |                       ¦   «         S re   )ÚlowerrO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>{   ó   €  §¢¡	¤	€ r   Ú
UPPER_CASEc                ó*   — |                       ¦   «         S re   )rM   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>|   rz   r   ÚINSTALL_INTERFACEc                ó   — dS rc   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>‚   s   €  r€ r   c                ó   — | S re   r0   rO   s    r   rP   z-parse_generator_expressions.<locals>.<lambda>ƒ   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¬}Ð*<Ð*< 3 3À#€ r   c                ó   •— | ‰j         v r| ndS rc   r„   r…   s    €r   rP   z-parse_generator_expressions.<locals>.<lambda>Œ   s   ø€ °°U´]Ð0BÐ0B¨1¨1È€ 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‘(”(ŠlˆlØ�1Œv˜Š}ˆ}àØ•S˜‘X”X ‘\Ò!Ð! c¨!¤f°¢m m¸¸AÀ¹E¼
ÀcÒ8IÐ8IàÐ1Ð1Ñ3Ô3Ñ3��ð �s˜1”v‘�à�‰FˆAð •#�c‘(”(Šlˆlð —(’(˜3‘-”-ˆØ�QŠ;ˆ;ØˆDˆDà�x˜�x”=ˆDØ�w ‘{�|�|Ô$ˆDà�zŠz‰|Œ|ˆØ�zŠz‰|Œ|ˆð �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ð	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð@*àð  Ið  Ið*ð 	ÐLÐLð*ð 	ÐKÐKð	*ð
 	Ð1Ð1ð*ð 	ÐVÐVð*ð 	ˆ\ˆ\ð*ð 	ˆ[ˆ[ð*ð 	�Eð*ð 	�ð*ð 	Ð3Ð3Ð3Ð3ð*ð  	Ð6Ð6Ð6Ð6ð!*ð" 	Ð4Ð4Ð4Ð4ð#*ð$ 	Ð:Ð:Ð:Ð:ð%*ð& 	 Ð!=Ð!=Ð!=Ð!=ð'*ð, 	Ð)Ð)ð-*ð. 	Ð)Ð)ð/*ð: 	˜\˜\ð;*ð< '˜;ð !�=Ø�Ø"�]ð FÐEÐEÐEØ!JÐ!JÐ!JÐ!JØ*Ø"ðS*ð *ð *€IðZ&ð &ð &ð &ð &ð &ð &ð &ð &ðP �c�#‰hŒhŠ,ˆ,Ø�s�3‰xŒx˜!‰|ÒÐ  A¤¨#¢ °#°a¸!±e´*ÀÒ2CÐ2CàÐ-Ð-Ñ/Ô/Ñ/ˆCˆCð �3�q”6‰MˆCà	ˆQ‰ˆð �c�#‰hŒhŠ,ˆ,ð €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   