§
    !@Äjë/  ã                  ó"  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlZddlmZmZ ddlmZ ddlmZ d	d
lmZ d	dlmZ  ee¦  «        Zd„ ZdZ G d„ dej        ¦  «        Z G d„ de¦  «        ZdZdZdZ d„ Z!dd„Z"dZ#dS )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).
é    )ÚannotationsN)Úget_config_varsé   )ÚErrorÚPlatformError)Ú
get_logger)Úis_mingwé   )Úunix)ÚCompileErrorc                 ó   — g S )z6No longer needed, but kept for backward compatibility.© r   ó    úYC:\Projects\Historical\venv\Lib\site-packages\setuptools/_distutils/compilers/C/cygwin.pyÚ	get_msvcrr      s   € à€Ir   zxUnable to set runtime library search path on Windows, usually indicated by `runtime_library_dirs` parameter to Extensionc                  ó²   ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
dZd	Zd
Zdˆ fd„	Zed„ ¦   «         Zd„ Z	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ fd„Zeˆ fd„¦   «         Zˆ xZS )ÚCompilerz9Handles the Cygwin port of the GNU C compiler to Windows.Úcygwinz'Cygwin port of GNU C Compiler for Win32z.oz.az.dll.az.dllzlib%s%szcyg%s%sz.exeFc                óò  •— t          ¦   «                              ||¬¦  «         t          ¦   «         \  }}|                      d|› d|› d�¦  «         |t          ur|                      d|› d�¦  «         t          dd¦  «        \  | _        | _        t          j
                             d| j        pd	¦  «        | _        t          j
                             d| j        pd
¦  «        | _        | j        | _        | j        | _        d}|                      | j        › d�| j        › d�| j        › d�| j        › d�| j        › d�| j        › d|› �| j        › d�| j        › d|› �¬¦  «         t          ¦   «         | _        d S )N)ÚforcezPython's GCC status: z (details: ú)zCPython's pyconfig.h doesn't seem to support your compiler. Reason: z>. Compiling may fail because of undefined preprocessor macros.ÚCCÚCXXÚgcczg++ú-sharedz -mcygwin -O1 -Wallz -mcygwin -mdll -O1 -Wallz	 -mcygwinz
 -mcygwin )ÚcompilerÚcompiler_soÚcompiler_cxxÚcompiler_so_cxxÚ
linker_exeÚ	linker_soÚlinker_exe_cxxÚlinker_so_cxx)ÚsuperÚ__init__Úcheck_config_hÚdebug_printÚCONFIG_H_OKÚwarnr   ÚccÚcxxÚosÚenvironÚgetÚ
linker_dllÚlinker_dll_cxxÚset_executablesr   Údll_libraries)ÚselfÚverboser   ÚstatusÚdetailsÚshared_optionÚ	__class__s         €r   r%   zCompiler.__init__8   s¯  ø€ Ý‰Œ×Ò˜¨ÐÑ.Ô.Ð.å(Ñ*Ô*‰ˆ�Ø×ÒÐN°ÐNÐNÀGÐNÐNÐNÑOÔOÐOØ�Ð$Ð$Ø�IŠIðOØ"ðOð Oð Oñô ð õ ,¨D°%Ñ8Ô8ÑˆŒ�”õ ”*—.’.  t¤wÐ'7°%Ñ8Ô8ˆŒÝ”:—>’> %¨¬Ð):°UÑ;Ô;ˆŒàœ'ˆŒØ"œhˆÔØ!ˆà×ÒØœÐ4Ð4Ð4Øœ7Ð=Ð=Ð=Ø œHÐ9Ð9Ð9Ø#œxÐBÐBÐBØœ'Ð,Ð,Ð,ØœÐCÐC°MÐCÐCØ"œhÐ1Ð1Ð1Ø!Ô0ÐKÐK¸MÐKÐKð 	ñ 		
ô 		
ð 		
õ '™[œ[ˆÔÐÐr   c                óx   — t          j        dt          d¬¦  «         t          j                             d¦  «        S )Nz�gcc_version attribute of CygwinCCompiler is deprecated. Instead of returning actual gcc version a fixed value 11.2.0 is returned.r   )Ú
stacklevelz11.2.0)Úwarningsr)   ÚDeprecationWarningÚ	packagingÚversionÚVersion)r3   s    r   Úgcc_versionzCompiler.gcc_version\   sB   € õ 	ŒðXåØð		
ñ 	
ô 	
ð 	
õ Ô ×(Ò(¨Ñ2Ô2Ð2r   c                óÌ  — |dv rJ	 |                       dd|d|g¦  «         dS # t          j        t          f$ r}t	          |¦  «        ‚d}~ww xY w	 |                      |¦  «        dk    r(|                       | j        |z   |d|gz   |z   ¦  «         dS |                       | j        |z   |d|gz   |z   ¦  «         dS # t          j        t          f$ r}t	          |¦  «        ‚d}~ww xY w)z:Compiles the source by spawning GCC and windres if needed.)ú.rcú.resÚwindresz-iz-oNzc++)ÚcallÚ
subprocessÚCalledProcessErrorÚOSErrorr   Údetect_languager   r   )r3   ÚobjÚsrcÚextÚcc_argsÚextra_postargsÚpp_optsÚmsgs           r   Ú_compilezCompiler._compilej   sD  € à�/Ð!Ð!ð(Ø—	’	˜9 d¨C°°sÐ;Ñ<Ô<Ð<Ð<Ð<øÝÔ1µ7Ð;ð (ð (ð (Ý" 3Ñ'Ô'Ð'øøøøð(øøøð(Ø×'Ò'¨Ñ,Ô,°Ò5Ð5Ø—I’IØÔ,Ø!ñ"à  cÐ*ñ+ð )ñ)ñô ð ð ð ð —I’IØÔ(¨7Ñ2°c¸4ÀÐ5EÑEÈÑVñô ð ð ð øõ Ô1µ7Ð;ð (ð (ð (Ý" 3Ñ'Ô'Ð'øøøøð(øøøs2   †" ¢A¸AÁAÁ?B9 Â&B9 Â9C#ÃCÃC#Nc                ó  •— t          j         |
pg ¦  «        }
t          j         |pg ¦  «        }t          j         |pg ¦  «        }|r|                      t          ¦  «         |                     | j        ¦  «         |��D|| j        k    s| j        dk    �r-t          j         	                    |d         ¦  «        }t          j         
                    t          j                             |¦  «        ¦  «        \  }}t          j                             ||dz   ¦  «        }dt          j                             |¦  «        › �dg}|                     |¦  «         t                               d|¦  «         t          j        |¦  «                             d                     |¦  «        dz   ¦  «         |                     |¦  «         |	s|
                     d	¦  «         t'          ¦   «                              |||||||d|	|
|||¦  «         dS )
zLink the objects.Nr   r   z.defzLIBRARY ÚEXPORTSz
writing %sú
z-s)Úcopyr)   Ú_runtime_library_dirs_msgÚextendr2   Ú
EXECUTABLEr/   r,   ÚpathÚdirnameÚsplitextÚbasenameÚjoinÚlogÚinfoÚpathlibÚPathÚ
write_textÚappendr$   Úlink)r3   Útarget_descÚobjectsÚoutput_filenameÚ
output_dirÚ	librariesÚlibrary_dirsÚruntime_library_dirsÚexport_symbolsÚdebugÚextra_preargsrN   Ú
build_tempÚtarget_langÚtemp_dirÚdll_nameÚ_dll_extensionÚdef_fileÚcontentsr8   s                      €r   rd   zCompiler.link‚   sï  ø€ õ$ œ	 -Ð"5°2Ñ6Ô6ˆÝ”I˜i˜o¨2Ñ.Ô.ˆ	Ý”)˜G˜M rÑ*Ô*ˆàð 	1Ø�IŠIÕ/Ñ0Ô0Ð0ð 	×Ò˜Ô+Ñ,Ô,Ð,ð Ñ&Ø˜4œ?Ò*Ð*¨d¬oÀÒ.FÑ.Fõ ”w—’ w¨q¤zÑ2Ô2ˆHå)+¬×)9Ò)9Ý”× Ò  Ñ1Ô1ñ*ô *Ñ&ˆX�~õ
 ”w—|’| H¨h¸Ñ.?Ñ@Ô@ˆHð G¥2¤7×#3Ò#3°OÑ#DÔ#DÐFÐFÈ	ÐRˆHØ�OŠO˜NÑ+Ô+Ð+Ý�HŠH�\ 8Ñ,Ô,Ð,ÝŒL˜Ñ"Ô"×-Ò-¨d¯iªi¸Ñ.AÔ.AÀDÑ.HÑIÔIÐIð
 �NŠN˜8Ñ$Ô$Ð$ð ð 	'Ø× Ò  Ñ&Ô&Ð&å‰Œ�ŠØØØØØØØ ØØØØØØñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó:   — |                       t          ¦  «         g S ©N)r)   rV   ©r3   Údirs     r   Úruntime_library_dir_optionz#Compiler.runtime_library_dir_optionÛ   s   € ð 	�	Š	Õ+Ñ,Ô,Ð,Øˆ	r   c                óˆ   •— t           j                             |¦  «        }t          ¦   «                              |||¦  «        S rw   )r,   rY   Únormcaser$   Ú_make_out_path)r3   rh   Ú	strip_dirÚsrc_nameÚnorm_src_namer8   s        €r   r}   zCompiler._make_out_pathä   s4   ø€ åœ×(Ò(¨Ñ2Ô2ˆÝ‰wŒw×%Ò% j°)¸]ÑKÔKÐKr   c                óL   •‡ — i t          ¦   «         j        ¥ˆ fd„dD ¦   «         ¥S )z3
        Add support for rc and res files.
        c                ó&   •— i | ]}||‰j         z   “ŒS r   )Úobj_extension)Ú.0rL   r3   s     €r   ú
<dictcomp>z+Compiler.out_extensions.<locals>.<dictcomp>ð   s#   ø€ ÐHÐHÐH°ˆs�C˜$Ô,Ñ,ÐHÐHÐHr   )rC   rB   )r$   Úout_extensions©r3   r8   s   `€r   r†   zCompiler.out_extensionsé   s9   øø€ ð

Ý‰gŒgÔ$ð
àHÐHÐHÐH¸ÐHÑHÔHð
ð 	
r   ©FF)
NNNNNFNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úcompiler_typeÚdescriptionrƒ   Ústatic_lib_extensionÚshared_lib_extensionÚdylib_lib_extensionÚstatic_lib_formatÚshared_lib_formatÚdylib_lib_formatÚexe_extensionr%   Úpropertyr@   rQ   rd   rz   r}   r†   Ú__classcell__©r8   s   @r   r   r   *   s=  ø€ € € € € ØCÐCà€MØ;€KØ€MØÐØ#ÐØ ÐØ!ÐØ!ÐØ ÐØ€Mð")ð ")ð ")ð ")ð ")ð ")ðH ð3ð 3ñ „Xð3ð(ð (ð (ð: ØØØ!ØØØØØØðW
ð W
ð W
ð W
ð W
ð W
ðrð ð ðLð Lð Lð Lð Lð
 ð
ð 
ð 
ð 
ñ „Xð
ð 
ð 
ð 
ð 
r   r   c                  ó>   ‡ — e Zd ZdZdZdZd
ˆ fd„	Zdˆ fd„Zd	„ Zˆ xZ	S )ÚMinGW32Compilerz:Handles the Mingw32 port of the GNU C compiler to Windows.Úmingw32z(Mingw32 port of GNU C Compiler for Win32Fc                óP  •— t          ¦   «                              ||¦  «         d}t          | j        ¦  «        rt	          d¦  «        ‚|                      | j        › d�| j        › d�| j        › d�| j        › d�| j        › | j        › d|› �| j        › | j        › d|› �¬¦  «         d S )Nr   z1Cygwin gcc cannot be used with --compiler=mingw32z
 -O1 -Wallz -shared -O1 -Wallú )r   r   r   r   r    r!   r"   r#   )	r$   r%   Úis_cygwinccr*   r   r1   r+   r/   r0   )r3   r4   r   r7   r8   s       €r   r%   zMinGW32Compiler.__init__û   sØ   ø€ Ý‰Œ×Ò˜ %Ñ(Ô(Ð(à!ˆå�t”wÑÔð 	MÝÐKÑLÔLÐLà×ÒØœÐ+Ð+Ð+Øœ7Ð6Ð6Ð6Ø#œxÐ;Ð;Ð;Ø œHÐ0Ð0Ð0Øœ'�|ØœÐ:Ð:¨=Ð:Ð:Ø"œh˜=Ø!Ô0ÐBÐB°=ÐBÐBð 	ñ 		
ô 		
ð 		
ð 		
ð 		
r   ÚreturnÚNonec                óh   •— t          ¦   «         r"t          ¦   «                              ¦   «          d S d S rw   )r	   r$   Úconfigure_systemr‡   s    €r   r¢   z MinGW32Compiler.configure_system  s7   ø€ õ ‰:Œ:ð 	'Ý‰GŒG×$Ò$Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                ó*   — t          t          ¦  «        ‚rw   )r   rV   rx   s     r   rz   z*MinGW32Compiler.runtime_library_dir_option  s   € ÝÕ5Ñ6Ô6Ð6r   rˆ   )rŸ   r    )
r‰   rŠ   r‹   rŒ   r�   rŽ   r%   r¢   rz   r—   r˜   s   @r   rš   rš   õ   sz   ø€ € € € € ØDÐDà€MØ<€Kð
ð 
ð 
ð 
ð 
ð 
ð&'ð 'ð 'ð 'ð 'ð 'ð7ð 7ð 7ð 7ð 7ð 7ð 7r   rš   Úokznot okÚ	uncertainc                 ó€  — ddl } dt          j        v r	t          dfS dt          j        v r	t          dfS |                      ¦   «         }	 t          j        |¦  «                             d¬¦  «        }d	}||v r
t          }d
}n	t          }d}||›d|› d|›�fS # t          $ r}t          d|› d|j        › �fcY d}~S d}~ww xY w)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   NÚGCCzsys.version mentions 'GCC'ÚClangzsys.version mentions 'Clang'zutf-8)ÚencodingÚ__GNUC__Úmentionszdoes not mentionr�   zcouldn't read 'z': )Ú	sysconfigÚsysr>   r(   Úget_config_h_filenamer`   ra   Ú	read_textÚCONFIG_H_NOTOKrH   ÚCONFIG_H_UNCERTAINÚstrerror)r¬   ÚfnÚconfig_hÚ	substringÚcodeÚmention_inflectedÚexcs          r   r&   r&   "  s  € ð* ÐÐÐð •”ÐÐÝÐ8Ð8Ð8ð •#”+ÐÐÝÐ:Ð:Ð:ð 
×	(Ò	(Ñ	*Ô	*€BðAÝ”< Ñ#Ô#×-Ò-°wÐ-Ñ?Ô?ˆð ˆ	Ø˜Ð Ð ÝˆDØ *ÐÐå!ˆDØ 2ÐØ˜Ð@Ð@Ð0Ð@Ð@°9Ð@Ð@Ð@Ð@øõ ð Mð Mð MÝ"Ð$K°bÐ$KÐ$K¸S¼\Ð$KÐ$KÐLÐLÐLÐLÐLÐLÐLøøøøðMøøøs   Á(B Â
B=ÂB8Â2B=Â8B=r*   ústr | shlex._ShlexInstreamrŸ   Úboolc                ó¤   — t          j        t          j        | ¦  «        dgz   ¦  «        }|                     ¦   «                              d¦  «        S )zCTry to determine if the compiler that would be used is from cygwin.z-dumpmachines   cygwin)rF   Úcheck_outputÚshlexÚsplitÚstripÚendswith)r*   Ú
out_strings     r   rž   rž   S  sB   € åÔ(­¬°R©¬¸NÐ;KÑ)KÑLÔL€JØ×ÒÑÔ×&Ò& yÑ1Ô1Ð1r   )r*   r¹   rŸ   rº   )$rŒ   Ú
__future__r   rU   r,   r`   r½   rF   r­   r;   r¬   r   Úpackaging.versionr=   Úerrorsr   r   Úloggingr   Úplatform.detectr	   Ú r   r   r‰   r^   r   rV   r   rš   r(   r°   r±   r&   rž   Úget_versionsr   r   r   ú<module>rÉ      s¶  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à€j�ÑÔ€ðð ð ðIð ðG
ð G
ð G
ð G
ð G
ˆtŒ}ñ G
ô G
ð G
ðV!7ð !7ð !7ð !7ð !7�hñ !7ô !7ð !7ðP €Ø€Ø Ð ð.Að .Að .Aðb2ð 2ð 2ð 2ð €ðð r   