a
    ze)                     @   s*   d dl Z d dlZG dd dZdd ZdS )    Nc                   @   s   e Zd ZdddZdd ZdS )	ExtensionNc                 K   s  t |tstdt |tr.tdd |D s6td|| _|| _|pHg | _|pRg | _|p\g | _	|pfg | _
|ppg | _|pzg | _|	pg | _|
pg | _|pg | _|pg | _|pg | _|pg | _|| _|| _t|dkrdd |D }dt|}d	| }t| d S )
Nz'name' must be a stringc                 s   s   | ]}t |tV  qd S )N)
isinstancestr).0v r   )/usr/lib/python3.9/distutils/extension.py	<genexpr>j       z%Extension.__init__.<locals>.<genexpr>z#'sources' must be a list of stringsr   c                 S   s   g | ]}t |qS r   )repr)r   optionr   r   r   
<listcomp>   r
   z&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: %s)r   r   AssertionErrorlistallnamesourcesinclude_dirsdefine_macrosundef_macroslibrary_dirs	librariesruntime_library_dirsextra_objectsextra_compile_argsextra_link_argsexport_symbols	swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    kwoptionsmsgr   r   r   __init__V   s6    













zExtension.__init__c                 C   s   d| j j| j j| jt| f S )Nz<%s.%s(%r) at %#x>)	__class__
__module____qualname__r   id)r&   r   r   r   __repr__   s    zExtension.__repr__)NNNNNNNNNNNNNN)__name__r,   r-   r*   r/   r   r   r   r   r      s    D              
/r   c                 C   s  ddl m}m}m} ddlm} ddlm} || }|| dddddd}zfg }| }	|	d u rdq|	|	rpqP|	d |	d   krdkrn n|
d	|	  qP||	|}	||	}
|
d }t|g }d }|
dd  D ]}|d ur|| d }qtj|d }|dd
 }|d
d  }|dv r2|j| q|dkrJ|j| q|dkr|d}|dkrz|j|d f n$|j|d| ||d
 d  f q|dkr|j| q|dkr|j| q|dkr|j| q|dkr |j| q|dkr|j| q|dkr*|j}q|dkr<|j}q|dkrN|j}q|dkrr|j| |s|j}q|dv r|j| q|
d|  q|| qPW |  n
|  0 |S )Nr   )parse_makefileexpand_makefile_vars_variable_rx)TextFile)split_quoted   )Zstrip_commentsZskip_blanksZ
join_linesZ	lstrip_wsZ	rstrip_ws*z'%s' lines not handled yet   )z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz
-Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr1   r2   r3   Zdistutils.text_filer4   Zdistutils.utilr5   readlinematchr%   r   appendospathsplitextr   r   findr   r   r   r   r   r   r   r   close)filenamer1   r2   r3   r4   r5   varsfile
extensionslinewordsmoduleextZappend_next_wordZwordsuffixZswitchvalueZequalsr   r   r   read_setup_file   s    
 

















rM   )r>   r$   r   rM   r   r   r   r   <module>   s   z