
    -Ph                        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        rdd	lmZ  G d
 de          ZdS )    )annotations   )DependencyTypeNameExternalDependencyDependencyException   )MesonExceptionVersionstringlistify)mlog)PathN)Environmentc                  r     e Zd ZU dZded<   dd fdZddZddZddZddZ	d dZ
ed d            Z x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                   t          |                    dg                     }t                                          t	          d          |||           || _        d | _        | j        st          d          | j	        W	 | j        
                    | j                  | _	        n1# t          $ r$}dt          |          v rd| _        Y d }~d S  d }~ww xY w|                     ||           d S )Npathsextraframeworks)r   z!No C-like compilers are availablez	non-clangF)r   getsuper__init__r   r   framework_pathclib_compilerr   r   find_framework_pathsr   r	   r   is_founddetect)selfr   r   r   r   r   e	__class__s          a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/framework.pyr!   z!ExtraFrameworkDependency.__init__   s   fjj"5566+,=>>VV^___	/3! 	K%&IJJJ&..2.@.U.UVZV^._._++!   #a&&(( %*DMFFFFF 	D%     s   $B( (
C2CCCr   T.List[str]c                   |s| j         }|D ]}t          j        d| d|            |                     ||          }|5|j        }|| j         v }| j                            || j        |g|          }|k|| _        |	                                | _
        || _        d| j
        z   g| _        |                     |          }|r| xj        d|z   gz  c_        d| _         d S d S )NzLooking for framework z in z-Fz
-idirafterT)r   r   debug_get_framework_pathstemr#   find_frameworkr   	link_argsas_posixr"   r   compile_args_get_framework_include_pathr%   )	r'   r   r   pr"   framework_nameallow_systemargsincdirs	            r*   r&   zExtraFrameworkDependency.detect&   s,    	0/E #	 #	AJ===!==>>>
 "55a>>N%+0N  ;;L%44^TXPQsT`aaD|!DN"0"9"9";";D 'DI!%(;!; <D
 55nEEF =!!lV&;%<<!! DMFFG#	 #	    pathT.Optional[Path]c                    t          |          }|                                }|                    d          D ]#}||j                                        k    r|c S $d S )Nz*.framework/)r   lowerglobr/   )r'   r;   r   r5   lnameds         r*   r.   z,ExtraFrameworkDependency._get_framework_pathN   s]    JJ

'' 	 	A&& 'tr:   r   c                D   g }|                     d          D ]G}|j                                        dk    r |                    t	          |j                             Ht          |          dk    rdS d                    t          |          d         j                  S )Nz
Versions/*currentr   HeaderszVersions/{}/Headers)	r?   r   r>   appendr
   lenformatsorted_s)r'   r;   versionseachs       r*   _get_framework_latest_versionz6ExtraFrameworkDependency._get_framework_latest_versionV   s    $&IIl++ 	0 	0Dy  I--OOGDI..////x==A9$++F8,<,<R,@,CDDDr:   c                    dd|                      |          f}|D ]1}||z  }|                                r|                                c S 2d S )NrD   zVersions/Current/Headers)rM   is_dirr2   )r'   r;   trialsrL   trials        r*   r4   z4ExtraFrameworkDependency._get_framework_include_pathb   sj    
 744T::< 	( 	(D4KE||~~ (~~'''''(tr:   c                    | j         pdS )N )r"   )r'   s    r*   log_infoz!ExtraFrameworkDependency.log_infoo   s    "(b(r:   c                     dS )N	framework rW   r:   r*   	log_triedz"ExtraFrameworkDependency.log_triedr   s    {r:   )N)
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   )__name__
__module____qualname__r   __annotations__r!   r&   r.   rM   r4   rT   staticmethodrX   __classcell__)r)   s   @r*   r   r      s         6:::::! ! ! ! ! ! !(& & & &P   
E 
E 
E 
E   ) ) ) )    \    r:   r   )
__future__r   baser   r   r   mesonlibr	   r
   r   rS   r   pathlibr   typingTTYPE_CHECKINGenvironmentr   r   rW   r:   r*   <module>rg      s    # " " " " " M M M M M M M M M M = = = = = = = = = =                ? *))))))e e e e e1 e e e e er:   