o
    nc                     @  s   d dl mZ d dlZd dlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ejr;ddlmZ d	d
lmZmZ eejejejhdddZG dd deZdS )    )annotationsN   )DependencyMethodsdetect_compilerSystemDependency)CMakeDependency)PkgConfigDependency)factory_methods)DependencyGenerator   )EnvironmentMachineChoiceenv'Environment'for_machine'MachineChoice'kwargsT.Dict[str, T.Any]methodsT.List[DependencyMethods]returnT.List['DependencyGenerator']c              
   C  s   t d| |d }g }|dkr@tj|v r&dD ]}|tjt|| |dd qtj|v r@d|vr3d|d< |tjt	d| |dd tj
|v rO|tt| | |S )	Ncoarrayfortrangcc)zcaf-openmpiZcaflanguagemoduleszOpenCoarrays::caf_mpiZOpenCoarrays)r   get_idr   	PKGCONFIGappend	functoolspartialr   CMAKEr   SYSTEMCoarrayDependency)r   r   r   r   Zfcid
candidatespkg r(   home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/dependencies/coarrays.pycoarray_factory   s"   





r*   c                      s"   e Zd ZdZd
 fdd	Z  ZS )r%   a(  
    Coarrays are a Fortran 2008 feature.

    Coarrays are sometimes implemented via external library (GCC+OpenCoarrays),
    while other compilers just build in support (Cray, IBM, Intel, NAG).
    Coarrays may be thought of as a high-level language abstraction of
    low-level MPI calls.
    environmentr   r   r   r   Nonec                   s   t  jd||dd d|d< d|d< |   }|dkr(d	g| _d
| _d| _d S |dkr9d| _dg| _| j| _d S |dkrFd| _dg| _d S |dkrOd| _d S d S )Nr   r   r   FrequiredTZsilentr   z-fcoarray=singlezsingle image (fallback)intelz-coarray=sharedzintel-clz/Qcoarray:sharedZnagfor)super__init__Zget_compilerr   Zcompile_argsversionZis_foundZ	link_args)selfr+   r   Zcid	__class__r(   r)   r0   A   s$   

zCoarrayDependency.__init__)r+   r   r   r   r   r,   )__name__
__module____qualname____doc__r0   __classcell__r(   r(   r3   r)   r%   8   s    r%   )
r   r   r   r   r   r   r   r   r   r   )
__future__r   r!   typingTbaser   r   r   Zcmaker   Z	pkgconfigr   factoryr	   TYPE_CHECKINGr
   r+   r   r   r   r#   r$   r*   r%   r(   r(   r(   r)   <module>   s   