
    -Ph                    H   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j        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<   dS )     )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.Nnamestrenvironment'Environment'kwargsT.Dict[str, T.Any]languageT.Optional[str]returnNonec                $   |pd}|dvrt          d| d          t                                          ||||           | j        sd S g }| j        D ]}|                    d          rt| j        rdnd}t          |dd                    |z                                  r=|	                    dt          t          |dd                    |z            z              | xj        |z  c_        g }|                                 D ]}	t          |	          }
|
                                rg }|d	k    r|d
dgz  }n|dk    r|g dz  }|dgz  }d|
j                            dd          d         z   }|D ]g}|
j        |
j                            dd          d         |z   |z   z  }|                                r"|	                    t          |                     h|	                    |	           |	                    |	           || _        d S )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appendr   get_link_argsis_filer   splitparent	link_args)selfr   r   r   r   newincargstemr:   larglpathhlsuffixhhlfn	__class__s                  \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/hdf5.pyr0   z HDF5PkgConfigDependency.__init__   sT   ?s222%&X(&X&X&XYYY{FH===} 	F !$ 	D 	DC~~d## D#';<xxHQRRMMD(0022 DMM$T#abb']]T-A)B)B"BCCCV#!#	&&(( 	' 	'DJJE }} 'u$$9f--BB**CCCCBuguz//Q77:: 4 4A <5:+;+;C+C+CA+F+JV+STD||~~ 4!((T333  &&&&  &&&&"    N
r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname____doc__r0   __classcell__rE   s   @rF   r   r      sH        99*# *# *# *# *# *# *# *# *# *# *#rG   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-showconfigNr   r   r   r   r   r   r   r   r   r   c                   |p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          |                     |          }|                                }	||	d<   |j        j        |         |         }
	 t          |
                                          t          j        d| <   t          |
	                                          t          j        d| d<   t                                          |||	|           t          j        d| = t          j        d| d= n&# t          j        d| = t          j        d| d= w xY w| j        sd S |                     ddgd          dd          }||                     d| j        rdndgd          dd          z  }d}|D ]}|                    d          s|dk    r| j                            |           8|                    d          r| j                            |           d }jt'          |                                          r| j                            |           d }|st          d!          d S )"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/   r0   r1   get_config_valuer&   r3   r2   r5   r:   r   r7   )r;   r   r   r   r   cenvlenvr\   for_machinenkwargscompilerr_   foundr=   rE   s                 rF   r0   z!HDF5ConfigToolDependency.__init__Q   s   ?s222%&X(&X&X&XYYYs??DDW%EEDDh'EE""DDW%EE%&=>>> 66v>>++-- 
 '1+>xH	1)283G3G3I3I)J)JBJ~t~~&/89T9T9V9V/W/WBJ+t+++,GGT;BBB
>4>>*
/4///00 
>4>>*
/4///00000} 	F $$gt_f==abbA%%wdk0W

x&XZ`aabcbdbdee 	 	C~~011 SJ5F5F!((---- 344 %%c***c""$$ %%c***  	m%&klll	m 	ms    BE	 	#E,verc                V    t          j        d|          }|                    d          S )Nz \s*HDF5 Version: (\d+\.\d+\.\d+)r   )researchgroup)r;   ro   vs      rF   _sanitize_versionz*HDF5ConfigToolDependency._sanitize_version   s$    I93??wwqzzrG   rH   rI   )ro   r   r   r   )rJ   rK   rL   rM   version_argr0   ru   rN   rO   s   @rF   rQ   rQ   K   si        22K9m 9m 9m 9m 9m 9m 9mv       rG   rQ   envr   rk   'MachineChoice'r   r   methodsT.List[DependencyMethods]r   T.List['DependencyGenerator']c           
     0   |                     d          }g }t          j        |v rt          ddg          }t	          j        | |d          }|rS	 |                                D ],}|                    d          r|                    |           -n# t          $ r Y nw xY w|D ]2}|
                    t          j        t          || ||                     3t          j        |v r0|
                    t          j        t          d| ||                     |S )Nr   hdf5zhdf5-serialF)silent)getr
   	PKGCONFIGr   r   instancelist_allr3   addr	   r5   	functoolspartialr   CONFIG_TOOLrQ   )	rw   rk   r   ry   r   
candidatespkgconfig_filespkgmods	            rF   hdf5_factoryr      sC    zz*%%H02J"g--$fm%<== )#{5III 	<<>> 1 1C~~f-- 1'++C0001 '    # 	f 	fCi/0GcSY[cddeeee$//)+,DfcSY[cddeees   AB 
B B r}   )
rw   r   rk   rx   r   r   ry   rz   r   r{   )"
__future__r   r   re   rq   pathlibr   mesonlibr   r   baser	   r
   
configtoolr   detectr   	pkgconfigr   r   factoryr   typingTTYPE_CHECKINGr   r   r   r   r   rQ   r   r   r    rG   rF   <module>r      s  
 # " " " " "     				 				       , , , , , , , , 8 8 8 8 8 8 8 8 , , , , , ,       > > > > > > > > $ $ $ $ $ $    ? ),,,,,,))))))((((((.# .# .# .# .#1 .# .# .#bC C C C C3 C C CL #-/@/LMNN   ON4     rG   