£Á°è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>
a
    XC?h.:                     @   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g d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.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer   c                 C   sn   t | ||| 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libZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_staticldflags_exeldflags_exe_debug)selfverboseZdry_runforce r   ;/opt/alt/python39/lib64/python3.9/distutils/bcppcompiler.pyr   5   s    




zBCPPCompiler.__init__Nc	                 C   s  |  ||||||\}}	}}
}|p$g }|d |rB|| j n|| j |	D ]>}z|| \}}W n ty~   Y qRY n0 tj|}tj|}| 	tj
| |dkrqR|dkrz| dd||g W qR ty } zt|W Y d }~qRd }~0 0 qR|| jv rd}n|| jv r*d}nd}d| }z,| | jg| |
 ||g | |g  W qR ty } zt|W Y d }~qRd }~0 0 qR|	S )	Nz-c.res.rcZbrcc32z-fo z-P-o)Z_setup_compileappendextendr   r   KeyErrorospathnormpathmkpathdirnamespawnr   r   _c_extensions_cpp_extensionsr   )r   Zsources
output_dirmacrosinclude_dirsdebugextra_preargsextra_postargsZdependsobjectspp_optsZbuildZcompile_optsobjsrcextmsgZ	input_optZ
output_optr   r   r    compileQ   sT    




 zBCPPCompiler.compilec           	   
   C   s   |  ||\}}| j||d}| ||r|dg| }|r:z| | jg|  W q ty| } zt|W Y d }~qd }~0 0 ntd| d S )N)r0   z/uskipping %s (up-to-date))	_fix_object_argslibrary_filename
_need_linkr-   r   r   r   r   r3   )	r   r6   Zoutput_libnamer0   r3   target_langoutput_filenameZlib_argsr;   r   r   r    create_static_lib   s     zBCPPCompiler.create_static_libc               
   C   s  |  ||\}}| |||\}}}|r8tdt| |d u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 u rd}ntj|\}}tj|\}}tj|d }tj|d| }dg}|pg D ]}|d||f  q| t||fd	|  ttjj|}|g}g }|D ]>}tjtj|\}}|d
kr|| n
|| q`|D ]}|dtj|  q|d || |d|g |d |D ]4}| |||	}|d u r|| n
|| q|d |d |d|g |d || |
rp|
|d d< |r|| | tj| z| | jg|  W n. ty } zt|W Y d }~n
d }~0 0 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 %sr!   z/L%sz/L.,z,,Zimport32Zcw32mtr=   ) r>   Z_fix_lib_argsr   warnstrr(   r)   joinr@   r   Z
EXECUTABLEr   r   r   r   splitsplitextr,   r%   Zexecuter	   mapr*   normcaser&   find_library_filer+   r-   r   r   r   r3   ) r   Ztarget_descr6   rB   r0   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr3   r4   r5   Z
build_temprA   Zstartup_objZld_argsZdef_fileheadtailmodnamer:   Ztemp_dircontentsZsymZobjects2Z	resourcesfilebaselr   libfiler;   r   r   r    link   s    










 zBCPPCompiler.linkc           	      C   sr   |r"|d }|d |d ||f}n|d |f}|D ]:}|D ]0}t j|| |}t j|r:|    S q:q2d S )NZ_dZ_bcpp)r(   r)   rG   r?   exists)	r   dirsr   r3   ZdlibZ	try_namesdirnamerT   r   r   r    rL   4  s    
zBCPPCompiler.find_library_filer#   c                 C   s   |d u rd}g }|D ]}t jt j|\}}|| jddg vrRtd||f |rbt j|}|dkr|t j|||  q|dkr|t j||d  q|t j||| j	  q|S )Nr#   r"   r!   z"unknown file type '%s' (from '%s'))
r(   r)   rI   rK   src_extensionsr   basenamer%   rG   obj_extension)r   Zsource_filenamesZ	strip_dirr0   Z	obj_namesZsrc_namerR   r:   r   r   r    object_filenamesN  s$    zBCPPCompiler.object_filenamesc              
   C   s   |  d ||\}}}t||}dg| }	|d ur>|	d|  |rN||	d d< |r\|	| |	| | js~|d u s~t||r|r| tj	| z| 
|	 W n4 ty }
 zt|
 t|
W Y d }
~
n
d }
~
0 0 d S )Nz	cpp32.exer$   r   )Z_fix_compile_argsr   r%   r&   r   r
   r+   r(   r)   r,   r-   r   printr   )r   sourceZoutput_filer1   r2   r4   r5   _r7   Zpp_argsr;   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__Zcompiler_typeZexecutablesr.   r/   rZ   r\   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionr   r<   rC   rU   rL   r]   ra   r   r   r   r    r      sX      
  
D   
          
 

  
     r   )re   r(   Zdistutils.errorsr   r   r   r   r   Zdistutils.ccompilerr   r   Zdistutils.file_utilr	   Zdistutils.dep_utilr
   Z	distutilsr   r   r   r   r   r    <module>   s   