£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    Re.:                 @   sp   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	 d	e	ZdS )
zdistutils.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            
   @   s   e Zd ZdZdZi ZdgZdddgZee ZdZ	dZ
d	Zd
 ZZdZdddZdddZdddZd ddZd!ddZd"ddZd#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.
    Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer   c             C   s   t | ||| d| _d| _d| _d | _ddddg| _ddddg| _d	d
ddg| _d	d
ddg| _	g | _
d
ddg| _d
dddg| _d S )Nz	bcc32.exezilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r)r   __init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_staticldflags_exeldflags_exe_debug)selfverbosedry_runforce r   /builddir/build/BUILDROOT/alt-python37-setuptools-58.3.0-4.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/setuptools/_distutils/bcppcompiler.pyr   5   s    zBCPPCompiler.__init__Nc	             C   s  |  ||||||\}}	}}
}|p$g }|d |rB|| j n|| j xD|	D ]:}y|| \}}W n tk
r   wVY nX tj|}tj|}| 	tj
| |dkrqV|dkry| dd||g W qV tk
r } zt|W d d }~X Y qVX qV|| jkrd}n|| jkr,d}nd}d| }y,| | jg| |
 ||g | |g  W qV tk
r } zt|W d d }~X Y qVX qVW |	S )	Nz-cz.resz.rcZbrcc32z-fo z-Pz-o)Z_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buildZcompile_optsobjsrcextmsgZ	input_optZ
output_optr   r   r   compileQ   sF    

(zBCPPCompiler.compilec       	   
   C   s   |  ||\}}| j||d}| ||r~|dg| }|r:y| | jg|  W q tk
rz } zt|W d d }~X Y qX ntd| d S )N)r*   z/uzskipping %s (up-to-date))	_fix_object_argslibrary_filename
_need_linkr&   r   r   r   r   r-   )	r   r1   Zoutput_libnamer*   r-   target_langoutput_filenameZlib_argsr7   r   r   r   create_static_lib   s    zBCPPCompiler.create_static_libc           
   C   s  |  ||\}}| |||\}}}|r8tdt| |d k	rNtj||}| ||r|t	j
krd}|	r~| jd d  }q| jd d  }n&d}|	r| jd d  }n| jd d  }|d krd}ntj|\}}tj|\}}tj|d }tj|d| }dg}x&|pg D ]}|d||f  qW | t||fd	|  ttjj|}|g}g }xF|D ]>}tjtj|\}}|d
kr|| n
|| qfW x$|D ]}|dtj|  qW |d || |d|g |d x<|D ]4}| |||	}|d kr(|| n
|| q W |d |d |d|g |d || |
r|
|d d< |r|| | tj| y| | jg|  W n, tk
r } zt|W d d }~X Y nX ntd| d S )Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r   r   z%s.defZEXPORTSz  %s=_%sz
writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r9   Z_fix_lib_argsr   warnstrr!   r"   joinr;   r   Z
EXECUTABLEr   r   r   r   splitsplitextr%   r   executer	   mapr#   normcaser   find_library_filer$   r&   r   r   r   r-   ) r   Ztarget_descr1   r=   r*   	librarieslibrary_dirsruntime_library_dirsexport_symbolsr-   r.   r/   
build_tempr<   Zstartup_objZld_argsZdef_fileheadtailmodnamer6   temp_dircontentssymZobjects2	resourcesfilebaselr   libfiler7   r   r   r   link   s|    















zBCPPCompiler.linkc       	      C   sv   |r"|d }|d |d ||f}n|d |f}xB|D ]6}x0|D ](}t j|| |}t j|r>|S q>W q4W d S d S )NZ_dZ_bcpp)r!   r"   rB   r:   exists)	r   dirsr   r-   ZdlibZ	try_namesdirnamerX   r   r   r   rH   4  s    


zBCPPCompiler.find_library_filer   c             C   s   |d krd}g }x|D ]}t jt j|\}}|| jddg krTtd||f |rdt j|}|dkr|t j|||  q|dkr|t j||d  q|t j||| j	  qW |S )Nr   z.rcz.resz"unknown file type '%s' (from '%s'))
r!   r"   rD   rG   src_extensionsr   basenamer   rB   obj_extension)r   Zsource_filenamesZ	strip_dirr*   Z	obj_namessrc_namerV   r6   r   r   r   object_filenamesN  s"     
zBCPPCompiler.object_filenamesc          
   C   s   |  d ||\}}}t||}dg| }	|d k	r>|	d|  |rN||	d d< |r\|	| |	| | js~|d ks~t||r|r| tj	| y| 
|	 W n2 tk
r }
 zt|
 t|
W d d }
~
X Y nX d S )Nz	cpp32.exez-or   )Z_fix_compile_argsr   r   r   r   r
   r$   r!   r"   r%   r&   r   printr   )r   sourceZoutput_filer+   r,   r.   r/   _r2   Zpp_argsr7   r   r   r   
preprocessi  s$    	



zBCPPCompiler.preprocess)r   r   r   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r   r   )NNNNN)__name__
__module____qualname____doc__compiler_typeZexecutablesr'   r(   r^   r`   Zstatic_lib_extensionshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionr   r8   r>   rY   rH   rb   rf   r   r   r   r   r      sJ   
  
 
B  
         
|
 
    r   )rj   r!   distutils.errorsr   r   r   r   r   distutils.ccompilerr   r   distutils.file_utilr	   distutils.dep_utilr
   	distutilsr   r   r   r   r   r   <module>   s   
