File: //usr/local/lib/python3.10/distutils/__pycache__/cygwinccompiler.cpython-310.opt-2.pyc
o
�i�? � @ s� d dl Z d dlZd dlZd dlmZmZmZ d dlZd dlm Z d dl
mZ d dlm
Z
mZmZmZ d dlmZ d dlmZ dd � ZG d
d� de �ZG dd
� d
e�ZdZdZdZdd� Ze�d�Zdd� Zdd� Zdd� Z dS )� N)�Popen�PIPE�check_output)�
UnixCCompiler)�
write_file)�DistutilsExecError�CCompilerError�CompileError�UnknownFileError)�LooseVersion)�find_executablec C s� t j�d�} | dkr?t j| d | d � }|dkrdgS |dkr$dgS |d kr+d
gS |dkr2dgS |d
kr9dgS td| ��d S )NzMSC v.���� �
Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )�sys�version�find�
ValueError)Zmsc_posZmsc_ver� r �6/usr/local/lib/python3.10/distutils/cygwinccompiler.py� get_msvcr= s �r c @ sX e Zd Z dZdZdZdZdZdZdZ dd d
�Z
dd� Z
ddd�Zddd�Z
d
S )�CygwinCCompiler�cygwinz.o�.az.dllzlib%s%sz%s%sz.exer c C s� t �| |||� t� \}}| �d||f � |tur!| �d| � t� \| _| _| _ | �| j
d| j| j| j f � | jdkrCd| _nd| _| jdkrNd}nd }| jd
ddd
d| j|f d� | jdkrodg| _
| �d� d S t� | _
d S )Nz%Python's GCC status: %s (details: %s)z�Python's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s
z2.10.90�gcc�dllwrap�2.13�-shared�
-mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallzgcc -mcygwinz%s -mcygwin %s�Zcompiler�compiler_soZcompiler_cxxZ
linker_exeZ linker_so�2.91.57�msvcrtz,Consider upgrading to a newer version of gcc)r �__init__�check_config_hZdebug_print�CONFIG_H_OK�warn�get_versions�gcc_version�
ld_versionZdllwrap_version�
compiler_type�
linker_dll�set_executables�
dll_librariesr )�self�verbose�dry_run�force�statusZdetails�
shared_optionr r r r# b sN
����
��
��
�zCygwinCCompiler.__init__c
C s� |dks |dkr'z
| � dd|d|g� W d S ty& } zt|��d }~ww z| � | j| |d|g | � W d S tyI } zt|��d }~ww )N�.rc�.resZwindresz-iz-o)�spawnr r r )r. �obj�src�extZcc_args�extra_postargsZpp_opts�msgr r r �_compile� s �����zCygwinCCompiler._compileNc C sJ t � |
pg �}
t � |p
g �}t � |pg �}|�| j� |d ur�|| jks*| jdkr�tj�|d �}tj�tj� |��\}}tj�
||d �}tj�
|d| d �}dtj� |� dg}|D ]}|�|� q^| �t
||fd| � | jd kr�|
�d
|g� |
�d|g� n|�|� | s�|
�d� t�| |||||||d | |
|||
� d S )
Nr r z.def�libr z
LIBRARY %sZEXPORTSz
writing %sr z--output-libz--defz-s)�copy�extendr- Z
EXECUTABLEr+ �os�path�dirname�splitext�basename�join�appendZexecuter r �link)r. Ztarget_descZobjectsZoutput_filename�
output_dirZ librariesZlibrary_dirsZruntime_library_dirsZexport_symbols�debugZ
extra_preargsr: Z
build_tempZtarget_langZtemp_dirZdll_nameZ
dll_extensionZdef_fileZlib_file�contentsZsymr r r rG � sD
���
�zCygwinCCompiler.link� c C s� |d u rd}g }|D ]H}t j�t j�|��\}}|| jddg vr*td||f ��|r2t j�|�}|dv rF|�t j�||| | j �� q|�t j�||| j �� q|S )NrK r4 r5 z"unknown file type '%s' (from '%s'))r5 r4 )
r@ rA rC �normcaseZsrc_extensionsr
rD rF rE �
obj_extension)r. Zsource_filenamesZ strip_dirrH Z obj_namesZsrc_name�baser9 r r r �object_filenames� s( ���z CygwinCCompiler.object_filenames�r r r )
NNNNNr NNNN)r rK )�__name__�
__module__�__qualname__r* rM Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ
exe_extensionr# r<