관리-도구
편집 파일: cygwinccompiler.cpython-39.pyc
a �����DOg�?����������������������@���s����d�Z�ddlZddlZddlZddlmZmZmZ�ddlZddl m Z �ddlmZ�ddl mZmZmZmZ�ddlmZ�ddlmZ�d d ��ZG�dd��de �ZG�d d��de�ZdZdZdZdd��Ze�d�Zdd��Zdd��Z dd��Z!dS�)a��distutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). �����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���}|dkr8dgS�|dkrFdgS�|d krTd gS�|dkrbdgS�|d krpdgS�td|���dS�)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v.�������� ���Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)�sys�version�find� ValueError)Zmsc_posZmsc_ver��r����1/usr/lib64/python3.9/distutils/cygwinccompiler.py� get_msvcr=���s����r���c���������������� ���@���sR���e�Zd�ZdZdZdZdZdZdZdZ dZ dd d�Zdd ��Zddd�Z ddd�ZdS�)�CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. �cygwinz.o�.az.dllzlib%s%sz%s%sz.exer���c�����������������C���s����t��|�|||��t��\}}|��d||f���|turB|��d|���t��\|�_|�_|�_ |��|�j d|�j|�j|�j f����|�jdkr�d|�_nd|�_|�jdkr�d}nd }|�jd ddd d|�j|f�d��|�jdkr�dg|�_ |��d��nt��|�_ 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�status�details� shared_optionr���r���r���r#���b���sN���� ���� �� �� �zCygwinCCompiler.__init__c�������������� ���C���s����|dks|dkrXz|���dd|d|g��W�q��tyT�}�zt|��W�Y�d}~q�d}~0�0�nPz"|���|�j|�|d|g�|���W�n,�ty��}�zt|��W�Y�d}~n d}~0�0�dS�)z:Compiles the source by spawning GCC and windres if needed.�.rc�.resZwindresz-iz-oN)�spawnr���r ���r ���)r.����obj�src�extZcc_args�extra_postargsZpp_opts�msgr���r���r����_compile����s���� � zCygwinCCompiler._compileNc�����������������C���sP��t���| 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�)zLink the objects.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���rH�������sH���� �� ��� �zCygwinCCompiler.link��c�����������������C���s����|du�rd}g�}|D�]�}t�j�t�j�|��\}}||�jddg�vrRtd||f���|rbt�j�|�}|dv�r�|�t�j�|||�|�j ����q|�t�j�|||�j ����q|S�)z#Adds supports for rc and res files.NrL���r5���r6���z"unknown file type '%s' (from '%s'))r6���r5���) rA���rB���rD����normcaseZsrc_extensionsr ���rE���rG���rF���� obj_extension)r.���Zsource_filenamesZ strip_dirrI���Z obj_namesZsrc_name�baser:���r���r���r����object_filenames����s&�������z CygwinCCompiler.object_filenames)r���r���r���) NNNNNr���NNNN)r���rL���)�__name__� __module__�__qualname__�__doc__r*���rN���Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr#���r=���rH���rP���r���r���r���r���r���W���s ��� ;����� Nr���c�������������������@���s���e�Zd�ZdZdZddd�ZdS�)�Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32r���c�������������� ���C���sx���t��|�|||��|�jdkr d}nd}|�jdkr4d}nd}t��rFtd��|�jdd d dd|�j||f�d ��g�|�_t ��|�_d�S�)Nr���r���r���r!���z--entry _DllMain@12rL���z1Cygwin gcc cannot be used with --compiler=mingw32zgcc -O -Wallzgcc -mdll -O -Wallzg++ -O -Wallr���z%s %s %sr���) r���r#���r)���r(����is_cygwingccr���r,���r+���r-���r���)r.���r/���r0���r1���r4���Zentry_pointr���r���r���r#�����s.���� ����zMingw32CCompiler.__init__N)r���r���r���)rQ���rR���rS���rT���r*���r#���r���r���r���r���rU�����s���rU����okznot okZ uncertainc��������������� ���C���s����ddl�m}��dtjv�rtdfS�|����}z`t|�}zHd|���v�rVtd|�fW�|����W�S�t d|�fW�|����W�S�W�|����n |����0�W�n6�t y��}�ztd||jf�fW��Y�d }~S�d }~0�0�d S�) aw��Check if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r���)� sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %sN) Z distutilsrX���r���r���r%���Zget_config_h_filename�open�read�close�CONFIG_H_NOTOK�OSError�CONFIG_H_UNCERTAIN�strerror)rX����fnZconfig_h�excr���r���r���r$���F��s&���� ���r$���s���(\d+\.\d+(\.\d+)*)c�����������������C���st���|�����d�}t|�du�rdS�t|�dtd�j}z|���}W�|����n |����0�t�|�}|du�rbdS�t |� d�����S�)z�Find the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. r���NT)�shell�stdout����)�splitr���r���r���rc���rZ���r[���� RE_VERSION�searchr����group�decode)�cmd� executable�out� out_string�resultr���r���r����_find_exe_versions��s���� ro���c������������������C���s���g�d�}�t�dd��|�D���S�)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. )zgcc -dumpversionzld -vzdllwrap --versionc�����������������S���s���g�|�]}t�|��qS�r���)ro���)�.0rj���r���r���r���� <listcomp>��������z get_versions.<locals>.<listcomp>)�tuple)�commandsr���r���r���r'������s����r'���c������������������C���s���t�ddg�}�|�����d�S�)z>Try to determine if the gcc that would be used is from cygwin.r���z-dumpmachines���cygwin)r����strip�endswith)rm���r���r���r���rV������s����rV���)"rT���rA���r���r?���� subprocessr���r���r����reZdistutils.unixccompilerr���Zdistutils.file_utilr���Zdistutils.errorsr���r���r ���r ���Zdistutils.versionr���Zdistutils.spawnr���r���r���rU���r%���r\���r^���r$����compilerf���ro���r'���rV���r���r���r���r����<module>���s,���/�;1+