o
    ƒnócÆ  ã                   @  sü   d dl mZ d dl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
mZ ddlmZ ddlmZmZ dd	lmZ dd
l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„ deƒZG dd„ deƒZeej ej!hƒddd„ƒZ"dS ) é    )ÚannotationsN)ÚPathé   )Ú
Popen_safeÚ
OrderedSetÚ	join_args)ÚExternalProgramé   )ÚDependencyExceptionÚDependencyMethods)ÚConfigToolDependency)ÚPkgConfigDependency)Úfactory_methods)ÚDependencyGenerator)ÚEnvironment)ÚMachineChoicec                      s$   e Zd ZdZdd‡ fdd„Z‡  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              	     s|  |pd}|dvrt d|› dƒ‚tƒ  ||||¡ | jsd S g }| jD ]+}| d¡rN| jr/dnd}t|dd … ƒ|  ¡ rN| 	dt
t|dd … ƒ| ƒ ¡ q#|  j|7  _g }|  ¡ D ]\}	t|	ƒ}
|
 ¡ r³g }|d	krs|d
dg7 }n
|dkr}|g d¢7 }|dg7 }d|
j dd¡d  }|D ]}|
j|
j dd¡d | |  }| ¡ r¬| 	t
|ƒ¡ q| 	|	¡ q\| 	|	¡ q\|| _d S )NÚc>   r   ÚcppÚfortranú	Language ú is not supported with HDF5.ú-IÚstaticÚsharedr   r   Z_hl_cppZ_cppr   )Z_hl_fortranZ
hl_fortranZ_fortranZ_hlÚ.r	   r   )r
   ÚsuperÚ__init__Úis_foundÚcompile_argsÚ
startswithr#   r   Úis_dirÚappendr   Zget_link_argsÚis_filer   ÚsplitÚparentÚ	link_args)Úselfr   r   r   r   ZnewincÚargÚstemr0   ZlargZlpathZhlÚsuffixÚhZhlfn©Ú	__class__© ú{home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/dependencies/hdf5.pyr'   *   sB   

"€
 €
z HDF5PkgConfigDependency.__init__©N©
r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   Ú__classcell__r8   r8   r6   r9   r   &   s    r   c                      s2   e Zd ZdZdZdd‡ fdd„Zddd„Z‡  ZS )ÚHDF5ConfigToolDependencyz(Wrapper around hdf5 binary config tools.z-showconfigNr   r   r   r   r   r   r   r   r   r   c              
     sò  |pd}|dvrt d|› dƒ‚|dkrd}ddg}n|dkr&d	}d
dg}n|dkr1d}ddg}nt dƒ‚|  |¡}| ¡ }||d< |jj| | }	z3t|	 ¡ ƒtjd|› < t|	 	¡ ƒtjd|› d< t
ƒ  ||||¡ W tjd|› = tjd|› d= ntjd|› = tjd|› d= w | js“d S |  ddgd¡dd … }
|
|  d| jr¨dndgd¡dd … 7 }
|
D ]*}| d¡s¿|dkrÆ| j |¡ q´| d¡rÒ| j |¡ q´t|ƒ ¡ rÞ| j |¡ q´|dkr÷| ¡ }d|d< |  t|||ƒ¡| _d S d S )Nr   >   r   r   r   r    r!   ÚCCZh5ccZh5pccr   ÚCXXzh5c++zh5pc++r   ZFCZh5fcZh5pfczHow did you get here?ÚtoolsZHDF5_ZLINKERz-showz-cÚargsr	   z-noshlibz-shlib)r"   z-fz-Dz-pthread)z-Lz-lz-Wlr   )r
   Zget_for_machine_from_kwargsÚcopyZcoredataÚ	compilersr   Zget_exelistÚosÚenvironZget_linker_exelistr&   r'   r(   Zget_config_valuer#   r*   r)   r,   r0   r   r-   Z_add_sub_dependencyÚhdf5_factory)r1   r   r   r   r   ZcenvrD   Úfor_machineÚnkwargsÚcompilerrE   r2   r6   r8   r9   r'   ]   sT   



ÿ&
€üz!HDF5ConfigToolDependency.__init__Úverc                 C  s   t  d|¡}| d¡S )Nz \s*HDF5 Version: (\d+\.\d+\.\d+)r	   )ÚreÚsearchÚgroup)r1   rN   Úvr8   r8   r9   Ú_sanitize_version•   s   
z*HDF5ConfigToolDependency._sanitize_versionr:   r;   )rN   r   r   r   )r<   r=   r>   r?   Zversion_argr'   rS   r@   r8   r8   r6   r9   rA   W   s
    8rA   Úenvr   rK   ú'MachineChoice'r   r   ÚmethodsúT.List[DependencyMethods]r   úT.List['DependencyGenerator']c              
   C  sö   |  d¡}g }tj|v rhtddgƒ}t d| |¡}t tj| |¡}|rWt	|t
ƒs*J ‚t| ¡ dg tj|d\}	}
}|	jdkrW|
 d¡D ]}| d¡rV| | d	d
¡d ¡ qD|D ]}| t t|| ||¡¡ qYtj|v ry| t td| ||¡¡ |S )Nr   Zhdf5zhdf5-serialFz
--list-all)ÚstderrrT   r   Ú
ú r	   )Úgetr   Ú	PKGCONFIGr   r   Z_detect_pkgbinZ	setup_envrH   rI   Ú
isinstancer   r   Zget_commandÚ
subprocessÚDEVNULLÚ
returncoder.   r*   Úaddr,   Ú	functoolsÚpartialr   ÚCONFIG_TOOLrA   )rT   rK   r   rV   r   Ú
candidatesZpkgconfig_filesZPCEXEZpcenvÚretÚstdoutÚ_Úpkgr8   r8   r9   rJ   š   s&   

 

€
rJ   )
rT   r   rK   rU   r   r   rV   rW   r   rX   )#Ú
__future__r   rc   rH   rO   r_   Úpathlibr   Zmesonlibr   r   r   Zprogramsr   Úbaser
   r   Z
configtoolr   Z	pkgconfigr   Úfactoryr   ÚtypingÚTÚTYPE_CHECKINGr   r   r   r   r   rA   r]   re   rJ   r8   r8   r8   r9   Ú<module>   s*   1C