
    eH                    X   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m	Z	 ddl
mZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ d dlZej0                  rddlmZ ddlmZ ddlmZ  G d de      Z G d de      Z eej>                  ej@                  h      	 	 	 	 	 	 dd       Z!e!ed<   y)    )annotationsN)Path   )
OrderedSet	join_args   )DependencyExceptionDependencyMethods)ConfigToolDependency)packages)PkgConfigDependencyPkgConfigInterface)factory_methods)DependencyGenerator)Environment)MachineChoicec                  &     e Zd ZdZdd fdZ xZS )HDF5PkgConfigDependencyz/Handle brokenness in the HDF5 pkg-config files.c                   |xs d}|dvrt        d| d      t        | 	  ||||       | j                  sy g }| j                  D ]p  }|j                  d      s| j                  rdnd}t        |dd        |z  j                         sE|j                  dt        t        |dd        |z        z          r | xj                  |z  c_        g }| j                         D ]  }	t        |	      }
|
j                         rg }|d	k(  r|d
dgz  }n|dk(  r|g dz  }|dgz  }d|
j                  j                  dd      d   z   }|D ]_  }|
j                  |
j                  j                  dd      d   |z   |z   z  }|j                         sF|j                  t        |             a |j                  |	       |j                  |	        || _        y )Nc>   r   cppfortran	Language  is not supported with HDF5.-Istaticsharedr   r   _hl_cpp_cppr   )_hl_fortran
hl_fortran_fortran_hl.r   r   )r	   super__init__is_foundcompile_args
startswithr   r   is_dirappendstrget_link_argsis_filenamesplitparent	link_args)selfr/   environmentkwargslanguagenewincargstemr2   larglpathhlsuffixhhlfn	__class__s                  >/usr/lib/python3/dist-packages/mesonbuild/dependencies/hdf5.pyr&   z HDF5PkgConfigDependency.__init__)   s   ?s22%	(;W&XYY{FH=}} !$$ 	DC~~d##';;xHQRMD(002MM$T#ab']T-A)B"BC		D
 	V#!#	&&( 	'DJE }}u$9f--B*CCBuguzz//Q7:: 4A <<5::+;+;C+CA+F+JV+STD||~!((T34
   &  &+	'. #    N
r/   r,   r4   'Environment'r5   T.Dict[str, T.Any]r6   zT.Optional[str]returnNone)__name__
__module____qualname____doc__r&   __classcell__r@   s   @rA   r   r   %   s    9*# *#rB   r   c                  2     e Zd ZdZdZdd fdZddZ xZS )HDF5ConfigToolDependencyz(Wrapper around hdf5 binary config tools.z-showconfigc                   |xs d}|dvrt        d| d      |dk(  r	d}d}ddg}n'|d	k(  r	d
}d
}ddg}n|dk(  r	d}d}ddg}nt        d      | j                  |      }|j                         }	||	d<   |j                  j                  |   |   }
	 t        |
j                               t        j                  d| <   t        |
j                               t        j                  d| d<   t        | -  |||	|       t        j                  d| = t        j                  d| d= | j                  sy | j                  ddgd      dd  }|| j                  d| j                  rdndgd      dd  z  }d}|D ]  }|j                  d      s|dk(  r| j                   j#                  |       5|j                  d      r| j$                  j#                  |       d }dt'        |      j)                         s~| j$                  j#                  |       d } |st        d!      y # t        j                  d| = t        j                  d| d= w xY w)"Nr   >   r   r   r   r   r   CCCh5cch5pccr   CXXzh5c++zh5pc++r   FCFh5fch5pfczHow did you get here?toolsHDF5_LINKERz-showz-cargsr   z-noshlibz-shlibF)r   z-fz-Dz-pthread)z-Lz-lz-WlTzCHDF5 was built with cmake instead of autotools, and h5cc is broken.)r	   get_for_machine_from_kwargscopycoredata	compilersr   get_exelistosenvironget_linker_exelistr%   r&   r'   get_config_valuer   r)   r(   r+   r2   r   r.   )r3   r/   r4   r5   r6   cenvlenvr[   for_machinenkwargscompilerr^   foundr8   r@   s                 rA   r&   z!HDF5ConfigToolDependency.__init__\   sr   ?s22%	(;W&XYYs?DDW%EDDh'E"DDW%E%&=>> 66v>++- 
 ''11+>xH	1)283G3G3I)JBJJtf~&/89T9T9V/WBJJtfF+,GT;B

U4&>*

U4&/0}} $$gt_f=abA%%wdkk
x&XZ`abcbdee 	C~~01SJ5F!!((- 34%%c*c""$%%c*	 %&kll + 

U4&>*

U4&/0s   A-H$ $+Ic                P    t        j                  d|      }|j                  d      S )Nz \s*HDF5 Version: (\d+\.\d+\.\d+)r   )researchgroup)r3   vervs      rA   _sanitize_versionz*HDF5ConfigToolDependency._sanitize_version   s!    II93?wwqzrB   rC   rD   )rr   r,   rG   r,   )rI   rJ   rK   rL   version_argr&   rt   rM   rN   s   @rA   rP   rP   V   s    2K9mvrB   rP   c           
        |j                  d      }g }t        j                  |v rt        ddg      }t	        j
                  | |d      }|r8|j                         D ]%  }|j                  d      s|j                  |       ' |D ].  }|j                  t        j                  t        || ||             0 t        j                  |v r,|j                  t        j                  t        d| ||             |S )Nr6   hdf5zhdf5-serialF)silent)getr
   	PKGCONFIGr   r   instancelist_allr)   addr+   	functoolspartialr   CONFIG_TOOLrP   )	envrj   r5   methodsr6   
candidatespkgconfig_filespkgmods	            rA   hdf5_factoryr      s     zz*%H02J""g-$fm%<= ))#{5I||~ ->>&)#'',- # 	fCi//0GcSY[cde	f $$/)++,DfcSY[cderB   rw   )
r   rE   rj   z'MachineChoice'r5   rF   r   zT.List[DependencyMethods]rG   zT.List['DependencyGenerator'])"
__future__r   r~   rd   ro   pathlibr   mesonlibr   r   baser	   r
   
configtoolr   detectr   	pkgconfigr   r   factoryr   typingTTYPE_CHECKINGr   r4   r   r   r   rP   rz   r   r    rB   rA   <module>r      s     #  	 	  , 8 ,  > $ ??,)(.#1 .#bC3 CL #--/@/L/LMN+6OTq O,   rB   