Mini Shell
a
�DOg.: � @ sp d Z ddlZddlmZmZmZmZmZ ddlm Z m
Z
ddlmZ ddl
mZ ddlmZ G dd � d e �ZdS )
z�distutils.bcppcompiler
Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
� N)�DistutilsExecError�CompileError�LibError� LinkError�UnknownFileError)� CCompiler�gen_preprocess_options)�
write_file)�newer)�logc
@ s� e Zd ZdZdZi ZdgZg d�Zee ZdZ dZ
dZd ZZ
d Zddd�Zddd�Zddd�Zddd�Zddd�Zd dd�Zd!dd�Zd
S )"�BCPPCompilerzConcrete class that implements an interface to the Borland C/C++
compiler, as defined by the CCompiler abstract class.
Zbcppz.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer c C sn t �| |||� d| _d| _d| _d | _g d�| _g d�| _g d�| _g d�| _ g | _
g d�| _g d�| _d S ) Nz bcc32.exezilink32.exeztlib.exe)�/tWMz/O2�/q�/g0)r
z/Odr r )z/Tpd�/Gnr �/x)r r r )r r r z/r)
r �__init__�cc�linker�libZpreprocess_options�compile_options�compile_options_debug�ldflags_shared�ldflags_shared_debugZldflags_static�ldflags_exe�ldflags_exe_debug)�self�verbose�dry_run�force� r �./usr/lib64/python3.9/distutils/bcppcompiler.pyr 5 s
zBCPPCompiler.__init__Nc C s� | � ||||||�\}} }}
}|p$g }|�d� |rB|�| j� n|�| j� | D �]>}
z||
\}}W n ty~ Y qRY n0 tj�|�}tj�|
�}
| � tj�
|
�� |dkr�qR|dk�rz| �dd|
|g� W qR t�y } zt
|��W Y d }~qRd }~0 0 qR|| jv �rd}n|| jv �r*d}nd}d|
}z,| �| jg| |
||g | |g � W qR t�y� } zt
|��W Y d }~qRd }~0 0 qR| S ) Nz-c�.res�.rcZbrcc32z-fo� z-P�-o)Z_setup_compile�append�extendr r �KeyError�os�path�normpath�mkpath�dirname�spawnr r �
_c_extensions�_cpp_extensionsr )r Zsources�
output_dir�macros�include_dirs�debug�
extra_preargs�extra_postargsZdepends�objects�pp_optsZbuildZcompile_opts�obj�src�ext�msgZ input_optZ
output_optr r r! �compileQ sT ��
���
zBCPPCompiler.compilec
C s� | � ||�\}}| j||d�}| �||�r�|dg| }|r:z| �| jg| � W q� ty| } zt|��W Y d }~q�d }~0 0 nt�d|� d S )N)r1 z/u�skipping %s (up-to-date)) �_fix_object_args�library_filename�
_need_linkr. r r r r r4 ) r r7 Zoutput_libnamer1 r4 �target_lang�output_filenameZlib_argsr<