§
    ƒnócÒ  ã                  ó  — d dl mZ d dlmZ d dlZd dlZd dlZddlm	Z	 ddl
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mZ ddlmZ  eej        ej        h¦  «        dd„¦   «         Z G d„ de¦  «        ZdS )é    )Úannotations)ÚPathNé   )Ú	OptionKeyé   )ÚDependencyMethods)ÚDependencyException)ÚCMakeDependency)ÚPkgConfigDependency)Úfactory_methods)ÚEnvironmentÚMachineChoice)ÚDependencyGeneratorÚenvú'Environment'Úfor_machineú'MachineChoice'ÚkwargsúT.Dict[str, T.Any]ÚmethodsúT.List[DependencyMethods]ÚreturnúT.List['DependencyGenerator']c           	     óè  — g }t           j        |v r¤|                     d| j                             t          d¦  «        ¦  «        ¦  «        }|rdnd}|                     t          j        t          || |¦  «        ¦  «         dD ]1}|                     t          j        t          || |¦  «        ¦  «         Œ2t           j        |v r/|                     t          j        t          d| |¦  «        ¦  «         |S )NÚstaticÚprefer_staticzmkl-static-lp64-iompzmkl-dynamic-lp64-iomp)zscalapack-openmpiÚ	scalapackÚ	Scalapack)r   Ú	PKGCONFIGÚgetÚcoredataÚ
get_optionr   ÚappendÚ	functoolsÚpartialÚMKLPkgConfigDependencyr   ÚCMAKEr
   )r   r   r   r   Ú
candidatesÚ
static_optÚmklÚpkgs           úC/usr/lib/python3/dist-packages/mesonbuild/dependencies/scalapack.pyÚscalapack_factoryr-   !   s  € ð 13€JåÔ" gÐ-Ð-Ø—Z’Z ¨#¬,×*AÒ*AÅ)ÈOÑB\ÔB\Ñ*]Ô*]Ñ^Ô^ˆ
Ø(2ÐOÐ$Ð$Ð8OˆØ×Ò�)Ô+Ý" C¨¨fñ6ô 6ñ 	7ô 	7ð 	7ð 6ð 	8ð 	8ˆCØ×Ò�iÔ/Ý# S¨#¨vñ7ô 7ñ 8ô 8ð 8ð 8õ Ô 'Ð)Ð)Ø×Ò�)Ô+Ý˜[¨#¨vñ7ô 7ñ 	8ô 	8ð 	8ð Ðó    c                  ó<   ‡ — e Zd ZdZ	 ddˆ fd„Zdˆ fd„Zdd„Zˆ xZS )r&   z£PkgConfigDependency for Intel MKL.

    MKL's pkg-config is pretty much borked in every way. We need to apply a
    bunch of fixups to make it work correctly.
    NÚnameÚstrr   r   r   r   ÚlanguageúT.Optional[str]c                óþ  •— t           j                             d¦  «        }|r!t          |¦  «                             ¦   «         nd | _        t          ¦   «                              ||||¬¦  «         | j        r4|j        | j	                  
                    ¦   «         r| j        j        dk    rd| _        | j        sd S | j        dk    s
J d¦   «         ‚| j        dk    r |                      dd¬	¦  «        }|se| j        r^	 | j                             ¦   «                              d
¦  «        d                              dd¦  «        d         }n# t$          $ r Y nw xY w|r"t'          |t(          ¦  «        sJ ‚|| _        d S d S d S )NÚMKLROOT)r2   ÚgccFÚ z0This should not happen if we didn't return aboveÚunknownÚVersion)Ú	pkgconfigÚdefault_valueÚcompilers_and_libraries_r   ú/r   )ÚosÚenvironr    r   ÚresolveÚ _MKLPkgConfigDependency__mklrootÚsuperÚ__init__Úmachinesr   Ú
is_windowsÚclib_compilerÚidÚis_foundÚversionÚget_variableÚas_posixÚsplitÚ
IndexErrorÚ
isinstancer1   )Úselfr0   r   r   r2   Ú_mÚvÚ	__class__s          €r,   rC   zMKLPkgConfigDependency.__init__@   s§  ø€ åŒZ�^Š^˜IÑ&Ô&ˆØ/1Ð;�˜b™œ×)Ò)Ñ+Ô+Ð+°tˆŒõ
 	‰Œ×Ò˜˜s F°XÐÑ>Ô>Ð>ð ”ð 	" 3¤<°Ô0@Ô#A×#LÒ#LÑ#NÔ#Nð 	"Ø'+Ô'9Ô'<ÀÒ'EÐ'EØ!ˆDŒMð Œ}ð 	ØˆFàŒ|˜rÒ!Ð!Ð!Ð#VÑ!Ô!Ð!àŒ<˜9Ò$Ð$ð ×!Ò!¨IÀRÐ!ÑHÔHˆAàð ˜œð ðàœ×/Ò/Ñ1Ô1ßšÐ9Ñ:Ô:¸1ô>çš˜s A™œ qô*ð �Aøõ
 "ð ð ð Ø�Dðøøøð ð !Ý! !¥SÑ)Ô)Ð)Ð)Ð)Ø �”��ð# %Ð$ð!ð !s   Ã<AE	 Å	
EÅEr   ÚNonec                ó   •— t          ¦   «                              ¦   «          | j        j        | j                                      ¦   «         rd}n| j        rd}nd}| j        dz  }| j        j	        dk    r�t          | j        ¦  «        D ]l\  }}t          j                             |¦  «        \  }}d|v rA|                     dd¦  «        }d	t          j                             ||¦  «        z   | j        |<   Œmd
}t          | j        ¦  «        D ](\  }}|                     d¦  «        r|dz   }Œ |dk    r nŒ)| j        j        | j                                      ¦   «         s| j        ra| j                             |t'          |d|z   z  ¦  «        ¦  «         | j                             |dz   t'          |d|z   z  ¦  «        ¦  «         d S | j                             |d¦  «         | j                             |dz   d¦  «         d S )Nz.libz.ar7   zlib/intel64r6   Úmkl_intel_lp64ÚintelÚgfr=   r   )z-Lz-Wlr   é   Úmkl_scalapack_lp64Úmkl_blacs_intelmpi_lp64z-lmkl_scalapack_lp64z-lmkl_blacs_intelmpi_lp64)rB   Ú	_set_libsr   rD   r   rE   r   rA   rF   rG   Ú	enumerateÚ	link_argsr>   ÚpathrL   ÚreplaceÚjoinÚ
startswithÚinsertr1   )	rO   ÚsuffixÚlibdirÚiÚaÚdirnameÚbasenameÚjrR   s	           €r,   r[   z MKLPkgConfigDependency._set_libsi   s!  ø€ Ý‰Œ×ÒÑÔÐàŒ8Ô˜TÔ-Ô.×9Ò9Ñ;Ô;ð 	ØˆFˆFØŒ[ð 	ØˆFˆFàˆFØ” -Ñ/ˆàÔÔ  EÒ)Ð)Ý! $¤.Ñ1Ô1ð Nð N‘��1å$&¤G§M¢M°!Ñ$4Ô$4Ñ!�˜Ø# xÐ/Ð/Ø'×/Ò/°¸Ñ>Ô>�HØ(+­b¬g¯lªl¸7ÀHÑ.MÔ.MÑ(M�D”N 1Ñ%øð ˆÝ˜dœnÑ-Ô-ð 	ð 	‰DˆAˆqØ�|Š|˜MÑ*Ô*ð Ø˜‘E��Ø�Q’�Ø�ð àŒ8Ô˜TÔ-Ô.×9Ò9Ñ;Ô;ð 		F¸t¼{ð 		FØŒN×!Ò!Ø•3�vÐ!5¸Ñ!>Ñ?Ñ@Ô@ñô ð ð ŒN×!Ò!Ø�A‘•s˜6Ð%>ÀÑ%GÑHÑIÔIñô ð ð ð ð ŒN×!Ò! !Ð%;Ñ<Ô<Ð<ØŒN×!Ò! ! a¡%Ð)DÑEÔEÐEÐEÐEr.   c                ó|  — d }| j         dk    r#t          j                             ¦   «         }d|d<   |                      d| j        d| j                             ¦   «         z   g|¬¦  «        \  }}}|dk    rt          d| j        ›d	|›d
�¦  «        ‚|  	                    |  
                    |¦  «        ¦  «        | _        d S )NÚfortranÚ1ÚPKG_CONFIG_ALLOW_SYSTEM_CFLAGSz--cflagsz--define-variable=prefix=)r   r   zCould not generate cargs for z:
ú
)r2   r>   r?   ÚcopyÚ_call_pkgbinr0   rA   rK   r	   Ú_convert_mingw_pathsÚ_split_argsÚcompile_args)rO   r   ÚretÚoutÚerrs        r,   Ú
_set_cargsz!MKLPkgConfigDependency._set_cargsŽ   sØ   € ØˆØŒ=˜IÒ%Ð%õ ”*—/’/Ñ#Ô#ˆCØ47ˆCÐ0Ñ1Ø×)Ò)Ø˜œ	Ø'¨$¬.×*AÒ*AÑ*CÔ*CÑCð+Eð ð *ñ ô ‰ˆˆS�#ð �!Š8ˆ8Ý%Ð%Ø'+¤y y y°#°#°#ð'7ñ 8ô 8ð 8à ×5Ò5°d×6FÒ6FÀsÑ6KÔ6KÑLÔLˆÔÐÐr.   )N)r0   r1   r   r   r   r   r2   r3   )r   rS   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   r[   rw   Ú__classcell__)rR   s   @r,   r&   r&   8   s“   ø€ € € € € ðð ð .2ð'!ð '!ð '!ð '!ð '!ð '!ð '!ðR#Fð #Fð #Fð #Fð #Fð #FðJMð Mð Mð Mð Mð Mð Mð Mr.   r&   )
r   r   r   r   r   r   r   r   r   r   )Ú
__future__r   Úpathlibr   r$   r>   ÚtypingÚTÚmesonlibr   Úbaser   r	   Úcmaker
   r:   r   Úfactoryr   ÚTYPE_CHECKINGÚenvironmentr   r   r   r   r'   r-   r&   © r.   r,   ú<module>rˆ      sn  ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $à„?ð -Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø,Ð,Ð,Ð,Ð,Ð,ð €Ð#Ô-Ð/@Ô/FÐGÑHÔHðð ð ñ IÔHðð,dMð dMð dMð dMð dMÐ0ñ dMô dMð dMð dMð dMr.   