Ë
    ¨Õ°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j8                  «      Z G d„ de«      ZdZdZdZ d„ Z!dd„Z"dZ#y)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   ó    ú^/var/www/mission/venv/lib/python3.12/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.exec                ó  •— t         ‰| �  ||¬«       t        «       \  }}| j                  d|› d|› d�«       |t        ur| j                  d|› d�«       t        dd«      \  | _        | _        t        j                  j                  d| j                  xs d	«      | _        t        j                  j                  d| j                  xs d
«      | _        | j                  | _        | j                  | _        d}| j                  | j                  › d�| j                  › d�| j                  › d�| j                  › d�| j                  › d�| j                  › d|› �| j                  › d�| j                  › d|› �¬«       t        «       | _        y )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{  ø€ Ü‰Ñ˜¨ÐÔ.ä(Ó*‰ˆ�Ø×ÑÐ0°°¸ÀGÀ9ÈAÐNÔOØœÑ$Ø�I‰IðØ"˜)ð $OðOôô ,¨D°%Ó8ÑˆŒ�”ô —*‘*—.‘.  t§w¡wÒ'7°%Ó8ˆŒÜ—:‘:—>‘> %¨¯©Ò):°UÓ;ˆŒàŸ'™'ˆŒØ"Ÿh™hˆÔØ!ˆà×ÑØŸ™�yÐ 3Ð4ØŸ7™7˜)Ð#<Ð=Ø ŸH™H˜:Ð%8Ð9Ø#Ÿx™x˜jÐ(AÐBØŸ'™'˜ )Ð,ØŸ™Ð)¨°M°?ÐCØ"Ÿh™h˜Z yÐ1Ø!×0Ñ0Ð1°¸M¸?ÐKð 	ô 		
ô '›[ˆÕr   c                óx   — t        j                  dt        d¬«       t        j                  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\   s5   € ô 	�‰ðXäØõ		
ô × Ñ ×(Ñ(¨Ó2Ð2r   c                ó´  — |dv r	 | j                  dd|d|g«       y	 | j                  |«      dk(  r(| j                  | j                  |z   |d|gz   |z   «       y| j                  | j                  |z   |d|gz   |z   «       y# t        j                  t        f$ r}t	        |«      ‚d}~ww xY w# 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   sð   € à�/Ñ!ð(Ø—	‘	˜9 d¨C°°sÐ;Õ<ð(Ø×'Ñ'¨Ó,°Ò5Ø—I‘IØ×,Ñ,Ø!ñ"à  cÐ*ñ+ð )ñ)õð —I‘IØ×(Ñ(¨7Ñ2°c¸4ÀÐ5EÑEÈÑVõøô ×1Ñ1´7Ð;ò (Ü" 3Ó'Ð'ûð(ûô ×1Ñ1´7Ð;ò (Ü" 3Ó'Ð'ûð(ús4   †B ž;B. Á'B. ÂB+ÂB&Â&B+Â.CÃCÃCc                óÌ  •— t        j                   |
xs g «      }
t        j                   |xs g «      }t        j                   |xs g «      }|r| j                  t        «       |j                  | j                  «       |��5|| j
                  k7  s| j                  dk(  �rt        j                  j                  |d   «      }t        j                  j                  t        j                  j                  |«      «      \  }}t        j                  j                  ||dz   «      }dt        j                  j                  |«      › �dg}|j                  |«       t        j                  d|«       t        j                   |«      j#                  dj                  |«      dz   «       |j%                  |«       |	s|
j%                  d	«       t&        ‰| �Q  |||||||d|	|
|||«       y)
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ˆÜ—I‘I˜išo¨2Ó.ˆ	Ü—)‘)˜GšM rÓ*ˆáØ�I‰IÔ/Ô0ð 	×Ñ˜×+Ñ+Ô,ð Ñ&Ø˜4Ÿ?™?Ò*¨d¯o©oÀÓ.Fô —w‘w—‘ w¨q¡zÓ2ˆHä)+¯©×)9Ñ)9Ü—‘× Ñ  Ó1ó*Ñ&ˆX�~ô
 —w‘w—|‘| H¨h¸Ñ.?Ó@ˆHð #¤2§7¡7×#3Ñ#3°OÓ#DÐ"EÐFÈ	ÐRˆHØ�O‰O˜NÔ+Ü�H‰H�\ 8Ô,Ü�L‰L˜Ó"×-Ñ-¨d¯i©i¸Ó.AÀDÑ.HÔIð
 �N‰N˜8Ô$ñ Ø× Ñ  Ô&ä‰‰ØØØØØØØ ØØØØØØõ	
r   c                ó0   — | j                  t        «       g S ©N)r)   rV   ©r3   Údirs     r   Úruntime_library_dir_optionz#Compiler.runtime_library_dir_optionÛ   s   € ð 	�	‰	Ô+Ô,Øˆ	r   c                ód   •— t         j                  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ä   s+   ø€ äŸ™×(Ñ(¨Ó2ˆÜ‰wÑ% j°)¸]ÓKÐKr   c                ób   •— i t         ‰| �  ¥dD �ci c]  }||| j                  z   “Œ c}¥S c c}w )z3
        Add support for rc and res files.
        )rC   rB   )r$   Úout_extensionsÚobj_extension)r3   rL   r8   s     €r   r‚   zCompiler.out_extensionsé   s@   ø€ ð

Ü‰gÑ$ð
à8GÖH°ˆs�C˜$×,Ñ,Ñ,Ñ,ÒHð
ð 	
ùâHs   ‘,©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à€MØ;€KØ€MØÐØ#ÐØ ÐØ!ÐØ!ÐØ ÐØ€Mõ")ðH ñ3ó ð3ò(ð: ØØØ!ØØØØØØõW
òrôLð
 ó
ó ô
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 Win32c                ól  •— t         ‰| �  ||«       d}t        | j                  «      rt	        d«      ‚| j                  | j                  › d�| j                  › d�| j                  › d�| j                  › d�| j                  › | j                  › d|› �| j                  › | j                  › d|› �¬«       y )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‘wÔÜÐKÓLÐLà×ÑØŸ™�y 
Ð+ØŸ7™7˜)Ð#5Ð6Ø#Ÿx™x˜jÐ(:Ð;Ø ŸH™H˜: ZÐ0ØŸ'™'˜ØŸ™Ð)¨¨=¨/Ð:Ø"Ÿh™h˜ZØ!×0Ñ0Ð1°°=°/ÐBð 	õ 		
r   c                ó8   •— t        «       rt        ‰| �	  «        y y rw   )r	   r$   Úconfigure_system)r3   r8   s    €r   rœ   z MinGW32Compiler.configure_system  s   ø€ ô Œ:Ü‰GÑ$Õ&ð r   c                ó    — t        t        «      ‚rw   )r   rV   rx   s     r   rz   z*MinGW32Compiler.runtime_library_dir_option  s   € ÜÔ5Ó6Ð6r   r„   )ÚreturnÚNone)
r…   r†   r‡   rˆ   r‰   rŠ   r%   rœ   rz   r“   r”   s   @r   r–   r–   õ   s   ø„ ÙDà€MØ<€Kõ
õ&'ö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 | j	                  «       }	 t        j                  |«      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ÐØ˜�v˜QÐ0Ð1°°9°-Ð@Ð@Ð@øô ò MÜ" o°b°T¸¸S¿\¹\¸NÐ$KÐLÕLûðMús   Á
%B Â	B=ÂB8Â2B=Â8B=c                ó˜   — t        j                  t        j                  | «      dgz   «      }|j	                  «       j                  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  s<   € ä×(Ñ(¬¯©°R«¸NÐ;KÑ)KÓL€JØ×ÑÓ×&Ñ& yÓ1Ð1r   )r*   zstr | shlex._ShlexInstreamrž   Úbool)$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�   ðñõ #ã Û 	Û Û Û Û 
Û Ý %ã ç )Ý  Ý &Ý Ý  á�Ó€òðIð ôG
ˆt�}‰}ô G
ôV!7�hô !7ðP €Ø€Ø Ð ò.Aób2ð €ðr   