Ë
    óÄËej  ã                  ó0  — 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 ddlmZ ej"                  rdd	lmZ d
dlmZ d
dlmZ  eej.                  ej0                  ej2                  h«      	 	 	 	 	 	 	 	 dd„«       Zeed<    G d„ de«      Zy)é    )ÚannotationsNé   )ÚDependencyMethodsÚdetect_compilerÚSystemDependency)ÚCMakeDependency)Úpackages)ÚPkgConfigDependency)Úfactory_methods)ÚDependencyGeneratoré   )ÚEnvironment)ÚMachineChoicec           
     óà  — t        d| |d«      j                  «       }g }|dk(  rŽt        j                  |v r4dD ]/  }|j	                  t        j                  t        || |d¬«      «       Œ1 t        j                  |v r6d|vrd|d<   |j	                  t        j                  t        d| |d¬«      «       t        j                  |v r*|j	                  t        j                  t        | |«      «       |S )	NÚcoarrayÚfortranÚgcc)zcaf-openmpiÚcaf©ÚlanguageÚmoduleszOpenCoarrays::caf_mpiÚOpenCoarrays)r   Úget_idr   Ú	PKGCONFIGÚappendÚ	functoolsÚpartialr
   ÚCMAKEr   ÚSYSTEMÚCoarrayDependency)ÚenvÚfor_machineÚkwargsÚmethodsÚfcidÚ
candidatesÚpkgs          úB/usr/lib/python3/dist-packages/mesonbuild/dependencies/coarrays.pyÚcoarray_factoryr)      sî   € ô
 ˜9 c¨;¸	ÓB×IÑIÓK€DØ02€Jàˆu‚}ä×&Ñ&¨'Ñ1Ø-ò PØ×!Ñ!¤)×"3Ñ"3Ü'¨¨c°6ÀIô#Oõ PðPô ×"Ñ" gÑ-Ø Ñ&Ø$;yÑ!Ø×Ñœi×/Ñ/Ü °°fÀyôRô Sô ×Ñ 7Ñ*Ø×Ñœ)×+Ñ+Ô,=¸sÀFÓKÔLàÐó    r   c                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ x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.
    c                óD  •— t         ‰|   d||d¬«       d|d<   d|d<   | j                  «       j                  «       }|dk(  rd	g| _        d
| _        d| _        y |dk(  r!d| _        dg| _        | j                  | _        y |dk(  rd| _        dg| _        y |dk(  rd| _        y y )Nr   r   r   FÚrequiredTÚsilentr   z-fcoarray=singlezsingle image (fallback)Úintelz-coarray=sharedzintel-clz/Qcoarray:sharedÚnagfor)ÚsuperÚ__init__Úget_compilerr   Úcompile_argsÚversionÚis_foundÚ	link_args)ÚselfÚenvironmentr#   ÚcidÚ	__class__s       €r(   r2   zCoarrayDependency.__init__D   sµ   ø€ Ü‰Ñ˜ K°À)ÐÔLØ"ˆˆzÑØˆˆxÑà×ÑÓ!×(Ñ(Ó*ˆØ%Š<à!3Ð 4ˆDÔØ4ˆDŒLØ ˆDMØGŠ^à ˆDŒMØ/Ð0ˆDŒNØ $§¡ˆDÕØJÒà ˆDŒMØ!3Ð 4ˆDÕØHŠ_à ˆDMð r*   )r9   ú'Environment'r#   úT.Dict[str, T.Any]ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   Ú__classcell__)r;   s   @r(   r    r    ;   s   ø„ ñ÷!ñ !r*   r    )
r!   r<   r"   z'MachineChoice'r#   r=   r$   zT.List[DependencyMethods]r>   zT.List['DependencyGenerator'])Ú
__future__r   r   ÚtypingÚTÚbaser   r   r   Úcmaker   Údetectr	   Ú	pkgconfigr
   Úfactoryr   ÚTYPE_CHECKINGr   r9   r   Úmesonlibr   r   r   r   r)   r    © r*   r(   ú<module>rP      s¦   ðõ #ã Û ç FÑ FÝ "Ý Ý *Ý $à‡?‚?Ý-Ý)Ý(ñ Ð#×-Ñ-Ð/@×/FÑ/FÐHY×H`ÑH`ÐaÓbðØ!0ðà.ðð 7ðð <Yòó cðð0 &€ˆÑ ô!Ð(õ !r*   