a
    p=ic2                     @   s   d Z ddlZddlZddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	 Zee
d
e dddZee
de dS )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 dkrFd|v r$|d d|v r6|d |dg7 }|| _ dtjv rddlm} tttjd }	tt|dd }
t| j }|	|vr|	|
|	}t|| _ t| j
}|	|vr| j
t|	 | _
dtj| j d |f }t| d	d
rdd|d g}ng }z*| j| j | |d|g | | |d W n8 tyz } zt|}t|dW Y d}~n
d}~0 0 |rtjdkrtddd|d g t|d d"}|t||| W d   n1 s0    Y  dS )z9Compile a single source files with a Unix-style compiler.r   ZaCCz-Aez-Aaz-AAOPT)get_config_varsz%s: %sZ_auto_dependsFz-MMDz-MFz.dz-odisplayNZzosZchtagz-tcZIBM1047a)compiler_soremoveosenviron	sysconfigr
   shlexjoinsplitreplace	linker_sopathbasenamegetattrspawnr   strr   sysplatform
subprocesscheck_outputopenwriter   )selfobjsrcextZcc_argsZextra_postargsZpp_optsZccompr
   optZgcv_optZccomp_sZllink_sr   depsemsgf r,   n/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/numpy/distutils/unixccompiler.pyUnixCCompiler__compile   sJ    




 r.   _compilec              
   C   sJ  |  ||\}}| j||d}| ||r:zt| W n tyL   Y n0 | tj| || j	 }|r|dd }|dd }dtj
| jd t||f }| j| j|g | |d qj| jrFdtj
| jd |f }z| j| j|g |d W n8 ty6 }	 zt|	}
t|
dW Y d}	~	n
d}	~	0 0 ntd| dS )	a  
    Build a static library in a separate sub-process.

    Parameters
    ----------
    objects : list or tuple of str
        List of paths to object files used to build the static library.
    output_libname : str
        The library name as an absolute or relative (if `output_dir` is used)
        path.
    output_dir : str, optional
        The path to the output directory. Default is None, in which case
        the ``output_dir`` attribute of the UnixCCompiler instance.
    debug : bool, optional
        This parameter is not used.
    target_lang : str, optional
        This parameter is not used.

    Returns
    -------
    None

    )
output_dirN2   z %s: adding %d object files to %sr   r   z%s:@ %szskipping %s (up-to-date))Z_fix_object_argsZlibrary_filenameZ
_need_linkr   unlinkOSErrormkpathr   dirnameobjectsr   archiverlenr   Zranlibr   r   r   r   debug)r#   r6   Zoutput_libnamer0   r9   Ztarget_langZoutput_filenameZtmp_objectsr   r)   r*   r,   r,   r-   UnixCCompiler_create_static_libI   sB    

"r:   Zcreate_static_lib)Nr   N)__doc__r   r   r   r   distutils.errorsr   r   r   Zdistutils.unixccompilerr   Znumpy.distutils.ccompilerr   Znumpy.distutils.misc_utilr   Znumpy.distutilsr   r.   r:   r,   r,   r,   r-   <module>   s    5 
C