o
    nc                     @  sz   d dl mZ ddlmZmZmZ ddlmZmZm	Z	 ddl
mZ d dlmZ d dlZejr3dd	lmZ G d
d deZdS )    )annotations   )DependencyTypeNameExternalDependencyDependencyException   )MesonExceptionVersionstringlistify)mlog)PathN)Environmentc                      sn   e Zd ZU dZded< d!d" fddZd#ddZd$ddZd%ddZd&ddZ	d'ddZ
ed'dd Z  ZS )(ExtraFrameworkDependencyNzT.Optional[T.List[str]]system_framework_pathsnamestrenv'Environment'kwargsT.Dict[str, T.Any]languageT.Optional[str]returnNonec              
     s   t |dg }t jtd|||d || _d | _| js!td| j	d u rNz
| j
| j| _	W n tyM } zdt|v rHd| _W Y d }~d S  d }~ww | || d S )NpathsZextraframeworks)r   z!No C-like compilers are availablez	non-clangF)r
   getsuper__init__r   r   framework_pathclib_compilerr   r   Zfind_framework_pathsr   r   r   is_founddetect)selfr   r   r   r   r   e	__class__ home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/dependencies/framework.pyr      s"   
z!ExtraFrameworkDependency.__init__r   T.List[str]c                 C  s   |s| j }|D ]R}td| d|  | ||}|d u rq|| j v }| j|| j|g|}|d u r4q|| _| | _	d| j	 g| _
| |}|rT|  j
d| g7  _
d| _ d S d S )NzLooking for framework z in z-Fz-IT)r   r   debug_get_framework_pathr   Zfind_frameworkr   Z	link_argsas_posixr   Zcompile_args_get_framework_include_pathr    )r"   r   r   pr   Zallow_systemargsincdirr&   r&   r'   r!   0   s(   


zExtraFrameworkDependency.detectpathT.Optional[Path]c                 C  sF   t |}| }|dD ]}||jddd  kr |  S qd S )Nz*.framework/.r   r   )r   lowerglobr   rsplit)r"   r0   r   r-   lnamedr&   r&   r'   r*   S   s   z,ExtraFrameworkDependency._get_framework_pathr   c                 C  sX   g }| dD ]}|j dkrq|t|j qt|dkr"dS dt|d jS )Nz
Versions/*currentr   HeaderszVersions/{}/Headers)	r4   r   r3   appendr	   lenformatsortedZ_s)r"   r0   Zversionseachr&   r&   r'   _get_framework_latest_version[   s   z6ExtraFrameworkDependency._get_framework_latest_versionc                 C  s:   dd|  |f}|D ]}|| }| r|   S q
d S )Nr9   zVersions/Current/Headers)r@   is_dirr+   )r"   r0   Ztrialsr?   Ztrialr&   r&   r'   r,   g   s   z4ExtraFrameworkDependency._get_framework_include_pathc                 C  s
   | j pdS )N )r   )r"   r&   r&   r'   log_infot   s   
z!ExtraFrameworkDependency.log_infoc                   C  s   dS )NZ	frameworkr&   r&   r&   r&   r'   	log_triedw   s   z"ExtraFrameworkDependency.log_tried)N)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r(   r   r   )r0   r   r   r   r   r1   )r0   r   r   r   )r0   r   r   r   )r   r   )__name__
__module____qualname__r   __annotations__r   r!   r*   r@   r,   rC   staticmethodrD   __classcell__r&   r&   r$   r'   r      s   
 

#


r   )
__future__r   baser   r   r   Zmesonlibr   r	   r
   rB   r   pathlibr   typingTTYPE_CHECKINGenvironmentr   r   r&   r&   r&   r'   <module>   s   