????
Your IP : 3.138.86.166
a
�DOg�?�@s�ddlZddlZddlZddlmZmZmZddlZddlm Z ddl
mZddlm
Z
mZmZmZddlmZddlmZdd �ZGd
d�de �ZGdd
�d
e�ZdZdZdZdd�Ze�d�Zdd�Zdd�Zdd�Z dS)�N)�Popen�PIPE�check_output)�
UnixCCompiler)�
write_file)�DistutilsExecError�CCompilerError�CompileError�UnknownFileError)�LooseVersion)�find_executablecCs�tj�d�}|dkr|tj|d|d�}|dkr8dgS|dkrFdgS|d krTd
gS|dkrbdgS|d
krpdgStd|��dS)NzMSC v.�����
Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )�sys�version�find�
ValueError)Zmsc_posZmsc_ver�r�1/usr/lib64/python3.9/distutils/cygwinccompiler.py� get_msvcr=src
@sNeZdZdZdZdZdZdZdZdZ dd d
�Z
dd�Zddd�Zddd�Z
d
S)�CygwinCCompiler�cygwinz.o�.az.dllzlib%s%sz%s%sz.exercCs�t�||||�t�\}}|�d||f�|turB|�d|�t�\|_|_|_ |�|j
d|j|j|j f�|jdkr�d|_nd|_|jdkr�d}nd }|jd
ddd
d|j|fd�|jdkr�dg|_
|�d�nt�|_
dS)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�status�details�
shared_optionrrrr#bsN
����
��
��
�zCygwinCCompiler.__init__c
Cs�|dks|dkrXz|�dd|d|g�Wq�tyT}zt|��WYd}~q�d}~00nPz"|�|j||d|g|�Wn,ty�}zt|��WYd}~n
d}~00dS)N�.rc�.resZwindresz-iz-o)�spawnrr r )r.�obj�src�extZcc_args�extra_postargsZpp_opts�msgrrr�_compile�s �
zCygwinCCompiler._compileNcCsPt�|
p
g�}
t�|pg�}t�|p&g�}|�|j�|du�r||jksV|jdk�rtj�|d�}tj�tj� |��\}}tj�
||d�}tj�
|d|d�}dtj� |�dg}|D]}|�|�q�|�t
||fd|�|jd k�r|
�d
|g�|
�d|g�n
|�|�| �s(|
�d�t�||||||||d| |
|||
�dS)
Nrrz.def�librz
LIBRARY %sZEXPORTSz
writing %srz--output-libz--defz-s)�copy�extendr-Z
EXECUTABLEr+�os�path�dirname�splitext�basename�join�appendZexecuterr�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�contentsZsymrrrrH�sH
��
���
�zCygwinCCompiler.link�cCs�|durd}g}|D]�}tj�tj�|��\}}||jddgvrRtd||f��|rbtj�|�}|dvr�|�tj�||||j ��q|�tj�|||j ��q|S)NrLr5r6z"unknown file type '%s' (from '%s'))r6r5)
rArBrD�normcaseZsrc_extensionsr
rErGrF�
obj_extension)r.Zsource_filenamesZ strip_dirrIZ obj_namesZsrc_name�baser:rrr�object_filenames�s&���z CygwinCCompiler.object_filenames)rrr)
NNNNNrNNNN)rrL)�__name__�
__module__�__qualname__r*rNZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ
exe_extensionr#r=rHrPrrrrrWs
;�
Nrc@seZdZdZddd�ZdS)�Mingw32CCompilerZmingw32rc Csxt�||||�|jdkr d}nd}|jdkr4d}nd}t�rFtd��|jdd d
dd|j||fd
�g|_t �|_dS)Nrrrr!z--entry _DllMain@12rLz1Cygwin gcc cannot be used with --compiler=mingw32zgcc -O -Wallzgcc -mdll -O -Wallzg++ -O -Wallrz%s %s %sr)
rr#r)r(�is_cygwingccrr,r+r-r)r.r/r0r1r4Zentry_pointrrrr#s.
����zMingw32CCompiler.__init__N)rrr)rQrRrSr*r#rrrrrTsrT�okznot okZ uncertainc
Cs�ddlm}dtjvrtdfS|��}z`t|�}zHd|��vrVtd|fW|��WSt d|fW|��WSW|��n
|��0Wn6t
y�}ztd||jffWYd}~Sd}~00dS) Nr)� sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s)
Z distutilsrWrrr%Zget_config_h_filename�open�read�close�CONFIG_H_NOTOK�OSError�CONFIG_H_UNCERTAIN�strerror)rW�fnZconfig_h�excrrrr$Fs&
���r$s(\d+\.\d+(\.\d+)*)cCst|��d}t|�durdSt|dtd�j}z|��}W|��n
|��0t�|�}|durbdSt |�
d����S)NrT)�shell�stdout�)�splitrrrrbrYrZ�
RE_VERSION�searchr�group�decode)�cmd�
executable�out�
out_string�resultrrr�_find_exe_versionss
rncCsgd�}tdd�|D��S)N)zgcc -dumpversionzld -vzdllwrap --versioncSsg|]}t|��qSr)rn)�.0rirrr�
<listcomp>��z get_versions.<locals>.<listcomp>)�tuple)�commandsrrrr'�sr'cCstddg�}|���d�S)Nrz-dumpmachinescygwin)r�strip�endswith)rlrrrrU�srU)!rArr?�
subprocessrrr�reZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsrrr r
Zdistutils.versionrZdistutils.spawnrrrrTr%r[r]r$�compilerernr'rUrrrr�<module>0s*;1+