
    -Ph                       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 ddlmZ ddlmZ  eej        ej        h          dd            Zeed<    G d de          ZdS )    )annotations)PathN   )	OptionKey   )DependencyMethods)CMakeDependency)packages)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        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optstoreget_value_forr   append	functoolspartialMKLPkgConfigDependencyr   CMAKEr	   )r   r   r   r   
candidates
static_optmklpkgs           a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/scalapack.pyscalapack_factoryr.      s    13J"g--ZZ#,*?*M*MiXgNhNh*i*ijj
(2O$$8O)+"Cf6 6 	7 	7 	7 6 	8 	8Ci/#S#v7 7 8 8 8 8 ')))+[#v7 7 	8 	8 	8     r   c                  <     e Zd ZdZ	 dd fdZd fdZddZ xZS )r'   zPkgConfigDependency 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)r3   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
isinstancer2   )selfr1   r   r   r3   _mv	__class__s          r-   rD   zMKLPkgConfigDependency.__init__9   s   Z^^I&&/1;b))+++t
 	sFX>>>  	"3<0@#A#L#L#N#N 	"'+'9'<'E'E!DM } 	F|r!!!#V!!!<9$$ !!IR!HHA  //119::1>sA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    rt          | 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.ar8   zlib/intel64r7   mkl_intel_lp64intelgfr>   r   )z-Lz-Wlr      mkl_scalapack_lp64mkl_blacs_intelmpi_lp64z-lmkl_scalapack_lp64z-lmkl_blacs_intelmpi_lp64)rC   	_set_libsr   rE   r   rF   r   rB   rG   rH   	enumerate	link_argsr?   pathrM   replacejoin
startswithinsertr2   )	rP   suffixlibdiriadirnamebasenamejrS   s	           r-   r\   z MKLPkgConfigDependency._set_libsb   s!   8T-.99;; 	FF[ 	FFF-/ E))!$.11 N N1$&GMM!$4$4!#x//'//>>H(+bgll7H.M.M(MDN1% dn-- 	 	DAq||M** EQ 8T-.99;; 		Ft{ 		FN!!3v!5!>?@@   N!!As6%>%GHII     N!!!%;<<<N!!!a%)DEEEEEr/   c                    d}| j         dk    rd}| j                            | j        |d| j                                        ff          }|                     |          | _        d S )NFfortranTprefix)define_variable)r3   r;   cflagsr1   rB   rL   _convert_mingw_pathscompile_args)rP   allow_systemro   s      r-   
_set_cargsz!MKLPkgConfigDependency._set_cargs   sn    =I%%  L&&ty,RZ\`\j\s\s\u\uQvPx&yy 55f==r/   )N)r1   r2   r   r   r   r   r3   r4   )r   rT   )__name__
__module____qualname____doc__rD   r\   rs   __classcell__)rS   s   @r-   r'   r'   1   s          .2'! '! '! '! '! '! '!R#F #F #F #F #F #FJ> > > > > > > >r/   r'   )
r   r   r   r   r   r   r   r   r   r   )
__future__r   pathlibr   r%   r?   typingToptionsr   baser   cmaker	   detectr
   r;   r   factoryr   TYPE_CHECKINGenvironmentr   mesonlibr   r   r   r(   r.   r'    r/   r-   <module>r      s|   # " " " " "           				           # # # # # # " " " " " "       * * * * * * $ $ $ $ $ $? -))))))((((((,,,,,, #-/@/FGHH   IH* * ]> ]> ]> ]> ]>0 ]> ]> ]> ]> ]>r/   