o
    ûeM  ã                   @   sÆ   d dl Z d dlZddlmZ g d¢Zddd„Zddd	„Zdd
d„Zzd dlm	Z	 W n e
y6   dd„ Z	Y nw dd„ Zz
eefZd dlZW n eyT   eZd dlZY nw dd„ Zdd„ Zdd„ ZdS )é    Né   )ÚVerificationError)ÚsourcesZinclude_dirsZlibrary_dirsZextra_objectsZdepends© c                 K   sH   t ƒ  ddlm} | g}|D ]}| tj |¡¡ q|d||dœ|¤ŽS )Nr   )Ú	Extension)Únamer   r   )Ú_hack_at_distutilsÚdistutils.corer   ÚappendÚosÚpathÚnormpath)ZsrcfilenameÚmodnamer   Úkwdsr   Z
allsourcesÚsrcr   r   ú@D:\Projects\ConvertPro\env\Lib\site-packages\cffi/ffiplatform.pyÚget_extension   s   r   c              
   C   sŒ   t ƒ  tj ¡ }z&t| |||ƒ}tj |¡}W | ¡ D ]\}}tj |¡|kr,|tj|< q|S | ¡ D ]\}}tj |¡|krD|tj|< q3w )z-Compile a C extension module using distutils.)	r   r   ÚenvironÚcopyÚ_buildr   ÚabspathÚitemsÚget)ÚtmpdirÚextÚcompiler_verboseÚdebugZsaved_environZoutputfilenameÚkeyÚvaluer   r   r   Úcompile   s   

€ý
€þr   c              
   C   s  ddl m} dd l}dd l}|d|giƒ}| ¡  | d¡}|d u r&tjj}d|f|d< d|d< d| f|d	< d| f|d
< z/|j	 
d¡pDd}z|j	 |¡ | d¡ | d¡}	|	 ¡ \}
W |j	 
|¡ W |
S |j	 
|¡ w  |jj|jjfy‡ } z
td|jj|f ƒ‚d }~ww )Nr   )ÚDistributionZext_modulesZ	build_extÚffiplatformr   )r!   TÚforceZ	build_libZ
build_tempz%s: %s)r	   r    Zdistutils.errorsZdistutils.logZparse_config_filesZget_option_dictÚsysÚflagsr   ÚlogZset_thresholdZset_verbosityÚrun_commandZget_command_objZget_outputsÚerrorsZCompileErrorZ	LinkErrorr   Ú	__class__Ú__name__)r   r   r   r   r    Ú	distutilsÚdistÚoptionsZ	old_levelZcmd_objZsonameÚer   r   r   r       s6   


ûÿ€þr   )Úsamefilec                 C   s   t j | ¡t j |¡kS ©N)r   r   r   )Úf1Úf2r   r   r   r.   A   s   r.   c                 C   s„   t j | ¡s| S | }g }	 |}t j |¡\}}||ks|s| S | |¡ zt|t jƒr6| ¡  t jj|Ž W S W n	 t	y@   Y nw qr/   )
r   r   ÚisabsÚsplitr
   r.   ÚcurdirÚreverseÚjoinÚOSError)r   ÚdirÚnamesZprevdirr   r   r   r   Úmaybe_relative_pathD   s&   
þÿör:   c                 C   sÖ   t | tƒr| dt| ƒ| f ¡ d S t | tƒr9t|  ¡ ƒ}| dt|ƒ ¡ |D ]}t||ƒ t| | |ƒ q(d S t | tt	fƒrU| dt| ƒ ¡ | D ]}t||ƒ qKd S t | t
ƒrd| d| f ¡ d S td| f ƒ‚)Nz%ds%sz%ddz%dlz%diz7the keywords to verify() contains unsupported object %r)Ú
isinstanceÚstrÚwriteÚlenÚdictÚsortedÚkeysÚ_flattenÚlistÚtupleÚint_or_longÚ	TypeError)ÚxÚfrA   r   r   r   r   r   rB   _   s&   


þÿ
ÿrB   c                 C   s   t  ¡ }t| |ƒ | ¡ S r/   )Ú	cStringIOÚStringIOrB   Úgetvalue)rG   rH   r   r   r   Úflattenr   s   
rL   c                  C   s2   t jdkrzdd l} W d S  ty   Y d S w d S )NÚwin32r   )r#   ÚplatformÚ
setuptoolsÚImportError)rO   r   r   r   r   w   s   
ÿýr   )r   )r   N)r#   r   Úerrorr   ZLIST_OF_FILE_NAMESr   r   r   Zos.pathr.   rP   r:   ÚintÚlongrE   rI   Ú	NameErrorÚiorB   rL   r   r   r   r   r   Ú<module>   s,    


ÿþ