B
    1d                 @   s   d dl Z d dlZddlmZ dddddgZdd
dZdddZdddZyd dlm	Z	 W n e
k
rt   dd Z	Y nX dd ZyeefZd dlZW n  ek
r   eZd dlZY nX dd Zdd Zdd ZdS )    N   )VerificationErrorsourcesinclude_dirslibrary_dirsextra_objectsdepends c             K   sL   t   ddlm} | g}x|D ]}|tj| qW |f ||d|S )Nr   )	Extension)namer   )_hack_at_distutilsdistutils.corer
   appendospathnormpath)Zsrcfilenamemodnamer   kwdsr
   Z
allsourcessrcr	   r	   ]/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/cffi/ffiplatform.pyget_extension   s    
r   c          
   C   sf   t   tj }zt| |||}tj|}W dx.| D ]"\}}tj||kr:|tj|< q:W X |S )z-Compile a C extension module using distutils.N)	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 krLtjj}d|f|d< d|d< d| f|d	< d| f|d
< yR|j	
dpd}z.|j	| |d |d}	|	 \}
W d |j	
| X W nD |jj|jjfk
r } ztd|jj|f W d d }~X Y nX |
S )Nr   )Distributionext_modules	build_extffiplatformr    )r'   Tforce	build_lib
build_tempz%s: %s)r   r$   distutils.errorsZdistutils.logparse_config_filesget_option_dictsysflagsr    logset_thresholdset_verbosityrun_commandget_command_objget_outputserrorsCompileError	LinkErrorr   	__class____name__)r   r   r   r    r$   	distutilsdistoptionsZ	old_levelcmd_objZsonameer	   r	   r   r       s.    


&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 }xl|}t j|\}}||ks:|s>| S || y$t|t jrj|  t jj| S W q t	k
r   Y qX qW d S )N)
r   r   isabssplitr   r@   curdirreversejoinOSError)r   dirnamesZprevdirr   r	   r	   r   maybe_relative_pathD   s     
rK   c             C   s   t | tr"|dt| | f  nt | trrt|  }|dt|  x|D ]}t|| t| | | qPW ndt | tt	fr|dt|   xB| D ]}t|| qW n*t | t
r|d| f  ntd| f d S )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frR   r!   r"   r	   r	   r   rS   _   s     





rS   c             C   s   t  }t| | | S )N)	cStringIOStringIOrS   getvalue)rX   rY   r	   r	   r   flattenr   s    
r]   c              C   s0   t jdkr,ydd l} W n tk
r*   Y nX d S )Nwin32r   )r.   platform
setuptoolsImportError)r`   r	   r	   r   r   w   s
    
r   )r	   )r   N)r   N)r.   r   errorr   ZLIST_OF_FILE_NAMESr   r#   r   os.pathr@   ra   rK   intlongrV   rZ   	NameErroriorS   r]   r   r	   r	   r	   r   <module>   s(   


