File: //lib/python3.10/distutils/__pycache__/bcppcompiler.cpython-310.pyc
o
    ��bc.:  �                   @   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	Z	
	
	
ddd�Z	
	
ddd�Z	
	
	
ddd�Z	
	
	
	
	
	
	
	
	
	
ddd�Zddd�Z	
	d dd�Z	
	
	
	
	
d!dd�Zd
S )"�BCPPCompilerzConcrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    �bcppz.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�lib�preprocess_options�compile_options�compile_options_debug�ldflags_shared�ldflags_shared_debug�ldflags_static�ldflags_exe�ldflags_exe_debug)�self�verbose�dry_run�force� r#   �-/usr/lib/python3.10/distutils/bcppcompiler.pyr   5   s   
zBCPPCompiler.__init__Nc	                 C   sn  | � ||||||�\}}	}}
}|pg }|�d� |r!|�| j� n|�| j� |	D ]�}
z||
 \}}W n	 ty<   Y q)w tj�|�}tj�|
�}
| �	tj�
|
�� |dkrWq)|dkrxz| �dd|
|g� W n tyv } zt
|��d }~ww q)|| jv r�d}n
|| jv r�d}nd}d|
 }z| �| jg| |
 ||g | |g � W q) ty� } zt
|��d }~ww |	S )	Nz-c�.res�.rc�brcc32z-fo� z-P�-o)�_setup_compile�append�extendr   r   �KeyError�os�path�normpath�mkpath�dirname�spawnr   r   �
_c_extensions�_cpp_extensionsr   )r   �sources�
output_dir�macros�include_dirs�debug�
extra_preargs�extra_postargs�depends�objects�pp_opts�build�compile_opts�obj�src�ext�msg�	input_opt�
output_optr#   r#   r$   �compileQ   s^   ��
���
��
���zBCPPCompiler.compilec           	   
   C   s�   | � ||�\}}| j||d�}| �||�r;|dg| }|r	 z| �| jg| � W d S  ty: } zt|��d }~ww t�d|� d S )N)r7   z/u�skipping %s (up-to-date))	�_fix_object_args�library_filename�
_need_linkr3   r   r   r   r   r:   )	r   r>