3
���h� � @ s~ d Z ddlZddlmZmZmZ ddlmZ ddlm Z ddl
mZ ddlm
Z
dd � Ze ed
e� ddd�Ze ed
e� dS )z>
unixccompiler - can handle very long argument lists for ar.
� N)�CompileError�DistutilsExecError�LibError)�
UnixCCompiler)�replace_method)�_commandline_dep_string)�logc C s� | j }|d dkrFd|kr$|jd� d|kr6|jd� |dg7 }|| _ dtjkr�ddlm} djtjd j� �} dj|d�d j� �}
dj| j �}| |kr�|j|
| �}|j� | _ dj| j �}| |kr�|j� | j� | _ d tj
j| j d �|f }
t| d
d��rdd
|d g}ng }y*| j
| j | |d|g | | |
d� W n4 tk
�rp } zt|�}t|��W Y dd}~X nX |�r�t|d d��}|jt|||�� W dQ R X dS )z9Compile a single source files with a Unix-style compiler.r ZaCCz-Aez-Aaz-AA�OPT)�get_config_vars� z%s: %sZ
_auto_dependsFz-MMDz-MFz.dz-o)�displayN�a)�compiler_so�remove�os�environ�distutils.sysconfigr
�join�split�replace� linker_so�path�basename�getattr�spawnr �strr �open�writer )�self�obj�src�extZcc_argsZextra_postargsZpp_optsZccompr
�optZgcv_optZccomp_sZllink_sr �deps�e�msg�f� r' |