MINI MINI MANI MO
3
  \W:                 @   st   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlm
Z
 d dlmZ d dlmZ G dd de	ZdS )	    N)DistutilsExecErrorDistutilsPlatformErrorCompileErrorLibError	LinkErrorUnknownFileError)	CCompilergen_preprocess_optionsgen_lib_options)
write_file)newer)logc            
   @   s   e Zd ZdZi ZdgZdddgZee ZdZdZ	dZ
d	 ZZd
Z
ddd
ZdddZdddZdddZd ddZd!ddZd"ddZdS )#BCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer   c             C   s   t j| ||| d| _d| _d| _d | _ddddg| _ddddg| _d	d
ddg| _d	d
ddg| _	g | _
d
ddg| _d
dddg| _d S )
Nz	bcc32.exezilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r)
r   __init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_staticldflags_exeldflags_exe_debug)selfverboseZdry_runforce r   ./usr/lib64/python3.6/distutils/bcppcompiler.pyr   5   s    zBCPPCompiler.__init__Nc	             C   s  | j ||||||\}}	}}
}|p$g }|jd |rB|j| j n|j| j xD|	D ]:}
y||
 \}}W n tk
r   wVY nX tjj|}tjj|
}
| j	tjj
|
 |dkrqV|dkry| jdd|
|g W qV tk
r } zt
|W Y d d }~X qVX qV|| jkrd}n|| jkr,d}nd}d|
 }y,| j| jg| |
 ||g | |g  W qV tk
r } zt
|W Y d d }~X qVX qVW |	S )	Nz-cz.resz.rcZbrcc32z-fo z-Pz-o)Z_setup_compileappendextendr   r   KeyErrorospathnormpathmkpathdirnamespawnr   r   
_c_extensions_cpp_extensionsr   )r   Zsources
output_dirmacrosinclude_dirsdebug
extra_preargsextra_postargsZdependsobjectspp_optsZbuildZcompile_optsobjsrcextmsgZ	input_optZ
output_optr   r   r   compileQ   sF    
(zBCPPCompiler.compilec       	      C   s   | j ||\}}| j||d}| j||r~|dg| }|r:y| j| jg|  W q tk
rz } zt|W Y d d }~X qX ntjd| d S )N)r*   z/uzskipping %s (up-to-date))	_fix_object_argslibrary_filename
_need_linkr'   r   r   r   r
   r-   )	r   r0   Zoutput_libnamer*   r-   target_langoutput_filenameZlib_argsr5   r   r   r   create_static_lib   s    zBCPPCompiler.create_static_libc              C   s  | j ||\}}| j|||\}}}|r8tjdt| |d k	rNtjj||}| j||r|t	j
krd}|	r~| jd d  }q| jd d  }n&d}|	r| j
d d  }n| jd d  }|d krd}ntjj|\}}tjj|\}}tjj|d }tjj|d| }dg}x&|pg D ]}|jd||f  qW | jt||fd	|  ttjj|}|g}g }xF|D ]>}tjjtjj|\}}|d
kr|j| n
|j| qfW x$|D ]}|jdtjj|  qW |jd |j| |jd
|g |jd x<|D ]4}| j|||	}|d kr(|j| n
|j| q W |jd |jd |jd
|g |jd
 |j| |
r|
|d d<