o
    uJAf                     @  s   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	Z
e
jr;ddlmZ dd	lmZ dd
lmZ ddlmZ G dd dZddd ddddZdS )    )annotations   )cmake_is_debug   )mlog)PathN)CMakeTraceParser)Environment)Compiler)MissingCompilerc                   @  s   e Zd ZdddZdS )ResolvedTargetreturnNonec                 C  s   g | _ g | _g | _g | _d S N)include_directories
link_flagspublic_compile_opts	libraries)self r   B/usr/lib/python3.10/site-packages/mesonbuild/cmake/tracetargets.py__init__   s   
zResolvedTarget.__init__N)r   r   )__name__
__module____qualname__r   r   r   r   r   r      s    r   c                 C  s   d S r   r   )xr   r   r   <lambda>   s    r   )clib_compilernot_found_warningtarget_namestrtrace'CMakeTraceParser'env'Environment'r   &T.Union['MissingCompiler', 'Compiler']r   T.Callable[[str], None]r   c                C  s  t  }| g}td}td}t|}	g }
t|dkr|d}||
v r'q||jvrs||r:| j|g7  _n8t	|
 rOt	| rO| j|g7  _n#||rn|rn|||g }|d uri| j|7  _n	|| n|| q|j| }g }d}t| d|jv r| jdd |jd D 7  _d|jv r| jd	d |jd D 7  _d
|jv r| jdd |jd
 D 7  _d|jv r| jdd |jd D 7  _d|jv rdd |jd D }|d }|	rd|v rd}nd|v rd}nd|v rd}d| |jv r| jdd |jd|  D 7  _nGd|jv r,| jdd |jd D 7  _n1d| |jv rH| jdd |jd|  D 7  _nd|jv r]| jdd |jd D 7  _d|jv ro|dd |jd D 7 }d|jv r|dd |jd D 7 }d| |jv r|dd |jd|  D 7 }nd |jv r|d!d |jd  D 7 }|
|g7 }
t|dkstt|j|_tt|j|_tt|j|_tt|j|_|S )"Nz^(-l[a-zA-Z0-9_]+|-l?pthread)$z^[a-zA-Z0-9_]+$r    INTERFACE_INCLUDE_DIRECTORIESc                 S     g | ]}|r|qS r   r   .0r   r   r   r   
<listcomp>I       z/resolve_cmake_trace_targets.<locals>.<listcomp>INTERFACE_LINK_OPTIONSc                 S  r)   r   r   r*   r   r   r   r,   L   r-   INTERFACE_COMPILE_DEFINITIONSc                 S  s"   g | ]}|rd t dd| qS )z-Dz^-Dr'   )resubr*   r   r   r   r,   O   s   " INTERFACE_COMPILE_OPTIONSc                 S  r)   r   r   r*   r   r   r   r,   R   r-   IMPORTED_CONFIGURATIONSc                 S  r)   r   r   r*   r   r   r   r,   U   r-   DEBUGRELEASEIMPORTED_IMPLIB_c                 S  r)   r   r   r*   r   r   r   r,   b   r-   IMPORTED_IMPLIBc                 S  r)   r   r   r*   r   r   r   r,   d   r-   IMPORTED_LOCATION_c                 S  r)   r   r   r*   r   r   r   r,   f   r-   IMPORTED_LOCATIONc                 S  r)   r   r   r*   r   r   r   r,   h   r-   LINK_LIBRARIESc                 S  r)   r   r   r*   r   r   r   r,   k   r-   INTERFACE_LINK_LIBRARIESc                 S  r)   r   r   r*   r   r   r   r,   m   r-   Z"IMPORTED_LINK_DEPENDENT_LIBRARIES_c                 S  r)   r   r   r*   r   r   r   r,   p   r-   Z!IMPORTED_LINK_DEPENDENT_LIBRARIESc                 S  r)   r   r   r*   r   r   r   r,   r   r-   )r   r0   compiler   lenpoptargetsmatchr   r   is_absoluteexistsfind_libraryr   debug
propertiesr   r   r   sortedset)r   r!   r#   r   r   resr?   Z
reg_is_libZreg_is_maybe_bare_libis_debugprocessed_targetscurrZflibtgtcfgscfgr   r   r   resolve_cmake_trace_targets   s   












& & 
MrO   )r   r    r!   r"   r#   r$   r   r%   r   r&   r   r   )
__future__r   commonr   r'   r   pathlibr   r0   typingTTYPE_CHECKINGtraceparserr   environmentr	   	compilersr
   dependenciesr   r   rO   r   r   r   r   <module>   s   