§
    ZQd.:  ã                   ó~   — d Z ddlZddlmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ  G d„ d	e	¦  «        ZdS )
zƒdistutils.bcppcompiler

Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
é    N)ÚDistutilsExecErrorÚCompileErrorÚLibErrorÚ	LinkErrorÚUnknownFileError)Ú	CCompilerÚgen_preprocess_options)Ú
write_file)Únewer)Úlogc                   ó´   — e Zd ZdZdZi ZdgZg d¢Zeez   ZdZ	dZ
dZdxZZd	Z	 	 	 dd„Z	 	 dd„Z	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 dd„Z	 	 	 	 	 dd„ZdS )ÚBCPPCompilerzConcrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    Úbcppz.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer   c                 óæ   — t          j        | |||¦  «         d| _        d| _        d| _        d | _        g d¢| _        g d¢| _        g d¢| _        g d¢| _	        g | _
        g d¢| _        g d¢| _        d S )	Nz	bcc32.exezilink32.exeztlib.exe)ú/tWMz/O2ú/qú/g0)r   z/Odr   r   )z/Tpdú/Gnr   ú/x)r   r   r   )r   r   r   z/r)r   Ú__init__ÚccÚlinkerÚlibÚpreprocess_optionsÚcompile_optionsÚcompile_options_debugÚldflags_sharedÚldflags_shared_debugÚldflags_staticÚldflags_exeÚldflags_exe_debug)ÚselfÚverboseÚdry_runÚforces       ú-/usr/lib/python3.11/distutils/bcppcompiler.pyr   zBCPPCompiler.__init__5   sœ   € õ
 	Ô˜D '¨7°EÑ:Ô:Ð:ð ˆŒØ#ˆŒØˆŒà"&ˆÔØ;Ð;Ð;ˆÔØ%AÐ%AÐ%AˆÔ"à9Ð9Ð9ˆÔØ$?Ð$?Ð$?ˆÔ!Ø ˆÔØ.Ð.Ð.ˆÔØ!9Ð!9Ð!9ˆÔÐÐó    Nc	                 ó~  — |                       ||||||¦  «        \  }}	}}
}|pg }|                     d¦  «         |r|                     | j        ¦  «         n|                     | j        ¦  «         |	D �]H}	 ||         \  }}n# t
          $ r Y Œw xY wt          j                             |¦  «        }t          j                             |¦  «        }|  	                    t          j         
                    |¦  «        ¦  «         |dk    rŒ—|dk    r=	 |                      dd||g¦  «         n!# t          $ r}t          |¦  «        ‚d }~ww xY wŒÚ|| j        v rd}n|| j        v rd}nd}d|z   }	 |                      | j        g|z   |
z   ||gz   |z   |gz   ¦  «         �Œ)# t          $ r}t          |¦  «        ‚d }~ww xY w|	S )	Nz-cú.resú.rcÚbrcc32z-foÚ z-Pú-o)Ú_setup_compileÚappendÚextendr   r   ÚKeyErrorÚosÚpathÚnormpathÚmkpathÚdirnameÚspawnr   r   Ú_c_extensionsÚ_cpp_extensionsr   )r"   ÚsourcesÚ
output_dirÚmacrosÚinclude_dirsÚdebugÚextra_preargsÚextra_postargsÚdependsÚobjectsÚpp_optsÚbuildÚcompile_optsÚobjÚsrcÚextÚmsgÚ	input_optÚ
output_opts                      r&   ÚcompilezBCPPCompiler.compileQ   sF  € ð
 ×#Ò# J°¸ÀgØ$+¨^ñ=ô =ñ 	8ˆ�˜¨°%ð %Ð*¨ˆØ×Ò˜TÑ"Ô"Ð"Øð 	7Ø×Ò Ô!;Ñ<Ô<Ð<Ð<à×Ò Ô!5Ñ6Ô6Ð6àð ,	(ñ ,	(ˆCðØ  œ:‘��S�SøÝð ð ð Ø�ðøøøõ ”'×"Ò" 3Ñ'Ô'ˆCÝ”'×"Ò" 3Ñ'Ô'ˆCð �KŠK�œŸš¨Ñ,Ô,Ñ-Ô-Ð-à�fŠ}ˆ}àØ�eŠ|ˆ|ð,Ø—J’J ¨5°#°sÐ ;Ñ<Ô<Ð<Ð<øÝ)ð ,ð ,ð ,Ý& sÑ+Ô+Ð+øøøøð,øøøàð �dÔ(Ð(Ð(Ø�	�	Ø˜Ô,Ð,Ð,Ø �	�	ð
 �	à ™ˆJð
(Ø—
’
˜TœW˜I¨Ñ4°wÑ>Ø&¨
Ð3ñ4à*ñ+à.1¨Uñ3ñ 4ô 4ð 4ñ 4øõ &ð (ð (ð (Ý" 3Ñ'Ô'Ð'øøøøð(øøøð ˆsB   Á7BÂ
BÂBÄD+Ä+
E	Ä5EÅE	Å--FÆ
F:Æ&F5Æ5F:c                 óT  — |                       ||¦  «        \  }}|                      ||¬¦  «        }|                      ||¦  «        rL|dg|z   }|r	 	 |                      | j        g|z   ¦  «         d S # t
          $ r}t          |¦  «        ‚d }~ww xY wt          j        d|¦  «         d S )N)r;   z/uúskipping %s (up-to-date))	Ú_fix_object_argsÚlibrary_filenameÚ
_need_linkr7   r   r   r   r   r>   )	r"   rB   Úoutput_libnamer;   r>   Útarget_langÚoutput_filenameÚlib_argsrI   s	            r&   Úcreate_static_libzBCPPCompiler.create_static_lib’   sØ   € ð !%× 5Ò 5°wÀ
Ñ KÔ KÑˆ�*à×!Ò! >¸jÐ!ÑIÔIð 	ð �?Š?˜G _Ñ5Ô5ð 		CØ'¨Ð.°Ñ8ˆHØð Øð$Ø—
’
˜TœX˜J¨Ñ1Ñ2Ô2Ð2Ð2Ð2øÝ%ð $ð $ð $Ý˜s‘m”mÐ#øøøøð$øøøõ ŒIÐ0°/ÑBÔBÐBÐBÐBs   ÁA2 Á2
BÁ<BÂBc                 ó�  — |                       ||¦  «        \  }}|                      |||¦  «        \  }}}|r"t          j        dt	          |¦  «        ¦  «         |� t
          j                             ||¦  «        }|                      ||¦  «        �rŸ|t          j
        k    r$d}|	r| j        d d …         }n3| j        d d …         }n#d}|	r| j        d d …         }n| j        d d …         }|€d}nÒt
          j                             |¦  «        \  }}t
          j                             |¦  «        \  }}t
          j                             |d         ¦  «        }t
          j                             |d|z  ¦  «        }dg}|pg D ]}|                     d|›d	|›�¦  «         Œ|                      t(          ||fd
|z  ¦  «         t+          t
          j        j        |¦  «        }|g}g }|D ]r}t
          j                             t
          j                             |¦  «        ¦  «        \  }}|dk    r|                     |¦  «         Œ]|                     |¦  «         Œs|D ]7}|                     dt
          j                             |¦  «        z  ¦  «         Œ8|                     d¦  «         |                     |¦  «         |                     d|g¦  «         |                     d¦  «         |D ]F}|                      |||	¦  «        }|€|                     |¦  «         Œ1|                     |¦  «         ŒG|                     d¦  «         |                     d¦  «         |                     d|g¦  «         |                     d¦  «         |                     |¦  «         |
r|
|d d…<   |r|                     |¦  «         |                      t
          j                             |¦  «        ¦  «         	 |                      | j        g|z   ¦  «         d S # t:          $ r}t=          |¦  «        ‚d }~ww xY wt          j        d|¦  «         d S )Nz7I don't know what to do with 'runtime_library_dirs': %sÚc0w32Úc0d32r,   r   z%s.defÚEXPORTSz  z=_z
writing %sr)   z/L%sz/L.ú,z,,Úimport32Úcw32mtrN   ) rO   Ú_fix_lib_argsr   ÚwarnÚstrr2   r3   ÚjoinrQ   r   Ú
EXECUTABLEr!   r    r   r   ÚsplitÚsplitextr6   r/   Úexecuter
   Úmapr4   Únormcaser0   Úfind_library_filer5   r7   r   r   r   r>   ) r"   Útarget_descrB   rT   r;   Ú	librariesÚlibrary_dirsÚruntime_library_dirsÚexport_symbolsr>   r?   r@   Ú
build_temprS   Ústartup_objÚld_argsÚdef_fileÚheadÚtailÚmodnamerH   Útemp_dirÚcontentsÚsymÚobjects2Ú	resourcesÚfileÚbaseÚlr   ÚlibfilerI   s                                    r&   ÚlinkzBCPPCompiler.link«   s  € ð$ !%× 5Ò 5°wÀ
Ñ KÔ KÑˆ�*à×Ò 	¨<Ð9MÑNÔNñ 	8ˆ�LÐ"6ð  ð 	0ÝŒHÐNÝÐ-Ñ.Ô.ñ0ô 0ð 0ð Ð!Ý œgŸlšl¨J¸ÑHÔHˆOà�?Š?˜G _Ñ5Ô5ñ e	Cð �iÔ2Ò2Ð2Ø%�Øð 2Ø"Ô4°Q°Q°QÔ7�G�Gà"Ô.¨q¨q¨qÔ1�G�Gà%�Øð 5Ø"Ô7¸¸¸Ô:�G�Gà"Ô1°!°!°!Ô4�Gð Ð%Ø��åœWŸ]š]¨OÑ<Ô<‘
��dÝ!œw×/Ò/°Ñ6Ô6‘�˜Ýœ7Ÿ?š?¨7°1¬:Ñ6Ô6�Ýœ7Ÿ<š<¨°8¸gÑ3EÑFÔF�Ø%˜;�Ø*Ð0¨bð =ð =�CØ—O’O�O°#°#°#°s°sÐ$;Ñ<Ô<Ð<Ð<Ø—’�Z¨(°HÐ)=Ø)¨HÑ4ñ6ô 6ð 6õ �2œ7Ô+¨WÑ5Ô5ˆHð #�mˆGØˆIØ ð )ð )�Ý œg×.Ò.­r¬w×/?Ò/?ÀÑ/EÔ/EÑFÔF‘��sØ˜&’=�=Ø×$Ò$ TÑ*Ô*Ð*Ð*à—N’N 4Ñ(Ô(Ð(Ð(ð "ð =ð =�Ø—’˜v­¬×(8Ò(8¸Ñ(;Ô(;Ñ;Ñ<Ô<Ð<Ð<Ø�NŠN˜5Ñ!Ô!Ð!ð �NŠN˜7Ñ#Ô#Ð#ð �NŠN˜C Ð0Ñ1Ô1Ð1à�NŠN˜4Ñ Ô Ð à ð 	,ð 	,�ð ×0Ò0°¸sÀEÑJÔJ�Ø�?Ø—N’N 3Ñ'Ô'Ð'Ð'ð —N’N 7Ñ+Ô+Ð+Ð+ð �NŠN˜JÑ'Ô'Ð'Ø�NŠN˜HÑ%Ô%Ð%ð �NŠN˜C ˜>Ñ*Ô*Ð*à�NŠN˜3ÑÔÐØ�NŠN˜9Ñ%Ô%Ð%ð ð ,Ø+�˜˜˜‘Øð /Ø—’˜~Ñ.Ô.Ð.à�KŠK�œŸš¨/Ñ:Ô:Ñ;Ô;Ð;ð%Ø—
’
˜Tœ[˜M¨GÑ3Ñ4Ô4Ð4Ð4Ð4øÝ%ð %ð %ð %Ý ‘n”nÐ$øøøøð%øøøõ ŒIÐ0°/ÑBÔBÐBÐBÐBs   Ï0P Ð
P.ÐP)Ð)P.c                 ó   — |r|dz   }|dz   |dz   ||f}n|dz   |f}|D ]_}|D ]Z}t           j                             ||                      |¦  «        ¦  «        }t           j                             |¦  «        r|c c S Œ[Œ`d S )NÚ_dÚ_bcpp)r2   r3   ra   rP   Úexists)	r"   Údirsr   r>   ÚdlibÚ	try_namesÚdirÚnamer}   s	            r&   rh   zBCPPCompiler.find_library_file4  s°   € ð ð 	-Ø˜$‘JˆDØ ™¨¨w©¸¸cÐBˆIˆIà˜w™¨Ð,ˆIàð 	ð 	ˆCØ!ð #ð #�Ýœ'Ÿ,š, s¨D×,AÒ,AÀ$Ñ,GÔ,GÑHÔH�Ý”7—>’> 'Ñ*Ô*ð #Ø"�N�N�N�N�Nð#ð#ð �4r'   r,   c                 ó”  — |€d}g }|D �]=}t           j                             t           j                             |¦  «        ¦  «        \  }}|| j        ddgz   vrt          d|›d|›d�¦  «        ‚|rt           j                             |¦  «        }|dk    r7|                     t           j                             |||z   ¦  «        ¦  «         ŒÄ|dk    r8|                     t           j                             ||dz   ¦  «        ¦  «         �Œ|                     t           j                             ||| j	        z   ¦  «        ¦  «         �Œ?|S )Nr,   r*   r)   zunknown file type 'z	' (from 'z'))
r2   r3   rd   rg   Úsrc_extensionsr   Úbasenamer/   ra   Úobj_extension)r"   Úsource_filenamesÚ	strip_dirr;   Ú	obj_namesÚsrc_namer{   rH   s           r&   Úobject_filenameszBCPPCompiler.object_filenamesN  sX  € ð Ð¨B˜zØˆ	Ø(ð 	Hñ 	HˆHåœ'×*Ò*­B¬G×,<Ò,<¸XÑ,FÔ,FÑGÔG‰KˆT�3Ø˜4Ô.°%¸°Ñ?Ð@Ð@Ý&Ð&Ø�s�s˜H˜H˜Hð(&ñ 'ô 'ð 'àð /Ý”w×'Ò'¨Ñ.Ô.�Ø�fŠ}ˆ}à× Ò ¥"¤'§,¢,°
¸DÀ3¹JÑ"GÔ"GÑHÔHÐHÐHØ˜’�à× Ò ¥"¤'§,¢,°
¸DÀ6¹MÑ"JÔ"JÑKÔKÐKÑKà× Ò ¥"¤'§,¢,°
Ø,0°4Ô3EÑ,Eñ#Gô #Gñ Hô Hð Hñ HàÐr'   c                 ó0  — |                       d ||¦  «        \  }}}t          ||¦  «        }dg|z   }	|�|	                     d|z   ¦  «         |r||	d d…<   |r|	                     |¦  «         |	                     |¦  «         | j        s|�t          ||¦  «        r||r2|                      t          j         	                    |¦  «        ¦  «         	 |  
                    |	¦  «         d S # t          $ r#}
t          |
¦  «         t          |
¦  «        ‚d }
~
ww xY wd S )Nz	cpp32.exer-   r   )Ú_fix_compile_argsr	   r/   r0   r%   r   r5   r2   r3   r6   r7   r   Úprintr   )r"   ÚsourceÚoutput_filer<   r=   r?   r@   Ú_rC   Úpp_argsrI   s              r&   Ú
preprocesszBCPPCompiler.preprocessi  sB  € ð ×"Ò" 4¨°Ñ>Ô>ñ 	"ˆˆF�Lå(¨°Ñ>Ô>ˆØ�- 'Ñ)ˆØÐ"Ø�NŠN˜4 +Ñ-Ñ.Ô.Ð.Øð 	(Ø'ˆG�B�Q�B‰KØð 	+Ø�NŠN˜>Ñ*Ô*Ð*Ø�Š�vÑÔÐð
 Œ:ð 	(˜Ð,µ°f¸kÑ0JÔ0JÐ,Øð :Ø—’�BœGŸOšO¨KÑ8Ô8Ñ9Ô9Ð9ð(Ø—
’
˜7Ñ#Ô#Ð#Ð#Ð#øÝ%ð (ð (ð (Ý�c‘
”
�
Ý" 3Ñ'Ô'Ð'øøøøð(øøøð -Ð,s   ÃC& Ã&
DÃ0DÄD)r   r   r   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r   r,   )NNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úcompiler_typeÚexecutablesr8   r9   r‰   r‹   Ústatic_lib_extensionÚshared_lib_extensionÚstatic_lib_formatÚshared_lib_formatÚexe_extensionr   rL   rV   r~   rh   r�   r˜   © r'   r&   r   r      sa  € € € € € ðð ð €Mð €Kð �F€MØ-Ð-Ð-€Oð # _Ñ4€NØ€MØ!ÐØ!ÐØ,2Ð2ÐÐ)Ø€Mð ØØð:ð :ð :ð :ð: HIØAEð<ð <ð <ð <ðH '+Ø!"Ø'+ðCð Cð Cð Cð: ØØØ#'Ø!ØØ Ø!ØØðBCð BCð BCð BCðRð ð ð ð8 %&Ø%'ðð ð ð ð: !%ØØ!%Ø"&Ø#'ð(ð (ð (ð (ð (ð (r'   r   )rœ   r2   Údistutils.errorsr   r   r   r   r   Údistutils.ccompilerr   r	   Údistutils.file_utilr
   Údistutils.dep_utilr   Ú	distutilsr   r   r¤   r'   r&   ú<module>rª      sü   ððð ð 
€	€	€	ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'à *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð ðn(ð n(ð n(ð n(ð n(�9ñ n(ô n(ð n(ð n(ð n(r'   