Ë
    
_ßd�9  ã                   ó¤   — d Z ddl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  ej$                  d	e«        G d
„ de
«      Zy)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)Úlogz˜bcppcompiler is deprecated and slated to be removed in the future. Please discontinue use or file an issue with pypa/distutils describing your use case.c                   óº   ‡ — 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ˆ fd
„	Z	 	 	 	 	 	 	 dd„Z	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 	 dd„Zˆ xZ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.exec                 óÚ   •— t         ‰| �  |||«       d| _        d| _        d| _        d | _        g d¢| _        g d¢| _        g d¢| _        g d¢| _	        g | _
        g d¢| _        g d¢| _        y )	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)ÚsuperÚ__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ÚforceÚ	__class__s       €úD/usr/lib/python3/dist-packages/setuptools/_distutils/bcppcompiler.pyr   zBCPPCompiler.__init__B   sk   ø€ Ü‰Ñ˜ '¨5Ô1ð ˆŒØ#ˆŒØˆŒà"&ˆÔÚ;ˆÔÚ%AˆÔ"â9ˆÔÚ$?ˆÔ!Ø ˆÔÚ.ˆÔÚ!:ˆÕó    c	                 óZ  — | j                  ||||||«      \  }}	}}
}|xs g }|j                  d«       |r|j                  | j                  «       n|j                  | j                  «       |	D ]ñ  }	 ||   \  }}t        j                  j                  |«      }t        j                  j                  |«      }| j                  t        j                  j                  |«      «       |dk(  rŒ~|dk(  r	 | j                  dd||g«       Œš|| j                  v rd}n|| j                  v rd}nd}d|z   }	 | j                  | j                   g|z   |
z   ||gz   |z   |gz   «       Œó |	S # t
        $ r Y �Œw xY w# t        $ r}t        |«      ‚d }~ww xY w# t        $ r}t        |«      ‚d }~ww xY w)	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.compileY   sä  € ð ;?×:MÑ:MØ˜ ¨g°wÀó;
Ñ7ˆ�˜¨°%ð %Ò*¨ˆØ×Ñ˜DÔ!ÙØ×Ñ × :Ñ :Õ;à×Ñ × 4Ñ 4Ô5àò 1	(ˆCðØ  ™:‘��Sô —'‘'×"Ñ" 3Ó'ˆCÜ—'‘'×"Ñ" 3Ó'ˆCð �K‰KœŸ™Ÿ™¨Ó,Ô-à�fŠ}àØ�eŠ|ð,Ø—J‘J ¨%°°cÐ:Ô;ð ð �d×(Ñ(Ñ(Ø‘	Ø˜×,Ñ,Ñ,Ø ‘	ð
 �	à ™ˆJð

(Ø—
‘
Ø—W‘W�IØ"ñ#àñð ! *Ð-ñ.ð %ñ	%ð
 �eñõðQ1	(ðf ˆøôa ò Úðûô  *ò ,Ü& sÓ+Ð+ûð,ûô: &ò (Ü" 3Ó'Ð'ûð(úsB   Á3E%Ã3E5Ä3.FÅ%	E2Å1E2Å5	FÅ>F	Æ	FÆ	F*ÆF%Æ%F*c                 ó2  — | j                  ||«      \  }}| j                  ||¬«      }| j                  ||«      r+|dg|z   }|r	 	 | j                  | j                  g|z   «       y t        j                  d|«       y # t
        $ r}t        |«      ‚d }~ww xY w)N)r>   z/uúskipping %s (up-to-date))	Ú_fix_object_argsÚlibrary_filenameÚ
_need_linkr:   r   r   r   r   rA   )	r$   rE   Úoutput_libnamer>   rA   Útarget_langÚoutput_filenameÚlib_argsrL   s	            r)   Úcreate_static_libzBCPPCompiler.create_static_lib¥   sœ   € ð !%× 5Ñ 5°g¸zÓ JÑˆ�*Ø×/Ñ/°È:Ð/ÓVˆà�?‰?˜7 OÔ4Ø'¨Ð.°Ñ8ˆHÙØð$Ø—
‘
˜DŸH™H˜:¨Ñ0Õ1ô �I‰IÐ0°/ÕBøô &ò $Ü˜s“mÐ#ûð$ús   ÁA= Á=	BÂBÂBc                 óØ  — | j                  ||«      \  }}| j                  |||«      \  }}}|rt        j                  dt	        |«      «       |� t
        j                  j                  ||«      }| j                  ||«      �r6|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                  j                  |«      \  }}t
        j                  j!                  |«      \  }}t
        j                  j#                  |d   «      }t
        j                  j                  |d|z  «      }dg}|xs g D ]#  }|j%                  dj'                  ||«      «       Œ% | j)                  t*        ||fd	|z  «       t-        t
        j                  j.                  |«      }|g}g }|D ]i  }t
        j                  j!                  t
        j                  j1                  |«      «      \  }}|d
k(  r|j%                  |«       ŒY|j%                  |«       Œk |D ]3  }|j%                  dt
        j                  j/                  |«      z  «       Œ5 |j%                  d«       |j3                  |«       |j3                  d|g«       |j%                  d«       |D ]:  }| j5                  |||	«      }|€|j%                  |«       Œ*|j%                  |«       Œ< |j3                  d«       |j3                  d|g«       |j%                  d«       |j3                  |«       |
r|
|d d |r|j3                  |«       | j7                  t
        j                  j#                  |«      «       	 | j9                  | j:                  g|z   «       y t        j@                  d|«       y # t<        $ r}t?        |«      ‚d }~ww xY w)Nz7I don't know what to do with 'runtime_library_dirs': %sÚc0w32Úc0d32r/   r   z%s.defÚEXPORTSz  {}=_{}z
writing %sr,   z/L%sz/L.ú,z,,)Úimport32Úcw32mtrQ   )!rR   Ú_fix_lib_argsr   ÚwarningÚstrr5   r6   ÚjoinrT   r	   Ú
EXECUTABLEr#   r"   r    r   ÚsplitÚsplitextr9   r2   ÚformatÚexecuter   Úmapr7   Únormcaser3   Úfind_library_filer8   r:   r   r   r   rA   ) r$   Útarget_descrE   rW   r>   Ú	librariesÚlibrary_dirsÚruntime_library_dirsÚexport_symbolsrA   rB   rC   Ú
build_temprV   Ústartup_objÚld_argsÚdef_fileÚheadÚtailÚmodnamerK   Útemp_dirÚcontentsÚsymÚobjects2Ú	resourcesÚfileÚbaseÚellr   ÚlibfilerL   s                                    r)   ÚlinkzBCPPCompiler.link¸   s}  € ð& !%× 5Ñ 5°g¸zÓ JÑˆ�*Ø:>×:LÑ:LØ�|Ð%9ó;
Ñ7ˆ�LÐ"6ñ  Ü�K‰KØIÜÐ(Ó)ôð
 Ð!Ü Ÿg™gŸl™l¨:°ÓGˆOà�?‰?˜7 OÕ4àœi×2Ñ2Ò2Ø%�ÙØ"×4Ñ4±QÐ7‘Gà"×.Ñ.©qÐ1‘Gà%�ÙØ"×7Ñ7¹Ð:‘Gà"×1Ñ1±!Ð4�Gð Ð%Ø‘äŸW™WŸ]™]¨?Ó;‘
��dÜ!Ÿw™w×/Ñ/°Ó5‘�˜ÜŸ7™7Ÿ?™?¨7°1©:Ó6�ÜŸ7™7Ÿ<™<¨°(¸WÑ2DÓE�Ø%˜;�Ø)Ò/¨Rò A�CØ—O‘O J×$5Ñ$5°c¸3Ó$?Õ@ðAà—‘œZ¨(°HÐ)=¸|ÈhÑ?VÔWô œ2Ÿ7™7×+Ñ+¨WÓ5ˆHð #�mˆGØˆIØ ò )�Ü Ÿg™g×.Ñ.¬r¯w©w×/?Ñ/?ÀÓ/EÓF‘��sØ˜&’=Ø×$Ñ$ TÕ*à—N‘N 4Õ(ð)ð $ò ?�Ø—‘˜v¬¯©×(8Ñ(8¸Ó(=Ñ=Õ>ð?à�N‰N˜5Ô!ð �N‰N˜7Ô#ð �N‰N˜C Ð1Ô2à�N‰N˜4Ô à ò 	,�ð ×0Ñ0°¸sÀEÓJ�Ø�?Ø—N‘N 3Õ'ð —N‘N 7Õ+ð	,ð �N‰NÐ1Ô2ð �N‰N˜C ˜?Ô+à�N‰N˜3ÔØ�N‰N˜9Ô%áØ+�˜˜�ÙØ—‘˜~Ô.à�K‰KœŸ™Ÿ™¨Ó8Ô9ð%Ø—
‘
˜DŸK™K˜=¨7Ñ2Õ3ô
 �I‰IÐ0°/ÕBøô	 &ò %Ü “nÐ$ûð%ús   ÎO Ï	O)ÏO$Ï$O)c                 óþ   — |r|dz   }|dz   |dz   ||f}n|dz   |f}|D ]]  }|D ]V  }t         j                  j                  || j                  |«      «      }t         j                  j	                  |«      sŒR|c c S  Œ_ y )NÚ_dÚ_bcpp)r5   r6   rd   rS   Úexists)	r$   Údirsr   rA   ÚdlibÚ	try_namesÚdirÚnamer�   s	            r)   rl   zBCPPCompiler.find_library_file>  s‹   € ñ Ø˜‘:ˆDØ ™¨¨w©¸¸cÐB‰Ià˜w™¨Ð,ˆIàò 	ˆCØ!ò #�ÜŸ'™'Ÿ,™, s¨D×,AÑ,AÀ$Ó,GÓH�Ü—7‘7—>‘> 'Õ*Ø"”Nñ#ð	ð r*   c                 óš  — |€d}g }|D �]>  }t         j                  j                  t         j                  j                  |«      «      \  }}|| j                  ddgz   vrt        dj                  ||«      «      ‚|rt         j                  j                  |«      }|dk(  r3|j                  t         j                  j                  |||z   «      «       ŒÊ|dk(  r4|j                  t         j                  j                  ||dz   «      «       �Œ|j                  t         j                  j                  ||| j                  z   «      «       �ŒA |S )Nr/   r-   r,   z"unknown file type '{}' (from '{}'))r5   r6   rg   rk   Úsrc_extensionsr   rh   Úbasenamer2   rd   Úobj_extension)r$   Úsource_filenamesÚ	strip_dirr>   Ú	obj_namesÚsrc_namer   rK   s           r)   Úobject_filenameszBCPPCompiler.object_filenamesX  s  € ØÐØˆJØˆ	Ø(ó 	VˆHäŸ'™'×*Ñ*¬2¯7©7×+;Ñ+;¸HÓ+EÓF‰KˆT�3Ø˜4×.Ñ.°%¸°Ñ@ÑAÜ&Ø8×?Ñ?ÀÀXÓNóð ñ Ü—w‘w×'Ñ'¨Ó-�Ø�fŠ}à× Ñ ¤§¡§¡¨j¸$À¹*Ó!EÕFØ˜’à× Ñ ¤§¡§¡¨j¸$À¹-Ó!HÖIà× Ñ ¤§¡§¡¨j¸$À×ASÑASÑ:SÓ!TÖUð!	Vð" Ðr*   c                 óà  — | j                  d ||«      \  }}}t        ||«      }dg|z   }	|�|	j                  d|z   «       |r||	d d |r|	j                  |«       |	j                  |«       | j                  s|�t        ||«      rC|r.| j                  t        j                  j                  |«      «       	 | j                  |	«       y y # t        $ r}
t        |
«       t        |
«      ‚d }
~
ww xY w)Nz	cpp32.exer0   r   )Ú_fix_compile_argsr
   r2   r3   r'   r   r8   r5   r6   r9   r:   r   Úprintr   )r$   ÚsourceÚoutput_filer?   r@   rB   rC   Ú_rF   Úpp_argsrL   s              r)   Ú
preprocesszBCPPCompiler.preprocessq  så   € ð %)×$:Ñ$:¸4ÀÈÓ$VÑ!ˆˆF�LÜ(¨°Ó>ˆØ�- 'Ñ)ˆØÐ"Ø�N‰N˜4 +Ñ-Ô.ÙØ'ˆG�B�QˆKÙØ�N‰N˜>Ô*Ø�‰�vÔð
 �:Š:˜Ð,´°f¸kÔ0JÙØ—‘œBŸG™GŸO™O¨KÓ8Ô9ð(Ø—
‘
˜7Õ#ð	 1Køô
 &ò (Ü�c”
Ü" 3Ó'Ð'ûð(ús   Â6C	 Ã		C-ÃC(Ã(C-)r   r   r   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r   r/   )NNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úcompiler_typeÚexecutablesr;   r<   r�   r�   Ústatic_lib_extensionÚshared_lib_extensionÚstatic_lib_formatÚshared_lib_formatÚexe_extensionr   rO   rY   r‚   rl   r”   rœ   Ú__classcell__)r(   s   @r)   r   r   '   sÊ   ø„ ñð €Mð €Kð �F€MÚ-€Oð # _Ñ4€NØ€MØ!ÐØ!ÐØ,2Ð2ÐÐ)Ø€Mõ;ð4 ØØØØØØóHðZ NRóCð0 ØØØ!ØØØØØØó@CóLó4ð8 ØØØØ÷(r*   r   )r    r5   ÚwarningsÚerrorsr   r   r   r   r   Ú	ccompilerr	   r
   Ú	file_utilr   Údep_utilr   Ú_logr   ÚwarnÚDeprecationWarningr   © r*   r)   ú<module>r²      sR   ðñó 
Û ÷õ ÷ 9Ý !Ý Ý ð €‡�ð4ð ô	ôh(�9õ h(r*   