ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5dW:                     @   sx   d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
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DistutilsPlatformErrorCompileErrorLibError	LinkErrorUnknownFileError)	CCompilergen_preprocess_optionsgen_lib_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verboseZdry_runforce r   ./usr/lib64/python3.8/distutils/bcppcompiler.pyr   5   s    zBCPPCompiler.__init__Nc	                 C   s  |  ||||||\}}	}}
}|p$g }|d |rB|| j n|| j |	D ]<}z|| \}}W n tk
r   Y qRY nX tj|}tj|}| 	tj
| |dkrqR|dkrz| dd||g W qR tk
r } zt|W 5 d }~X Y qRX qR|| jkrd}n|| jkr*d}nd}d| }z,| | jg| |
 ||g | |g  W qR tk
r } zt|W 5 d }~X Y qRX 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   sV     




zBCPPCompiler.compilec           	   
   C   s   |  ||\}}| j||d}| ||r~|dg| }|r:z| | jg|  W q tk
rz } zt|W 5 d }~X Y qX ntd| d S )N)r-   z/uskipping %s (up-to-date))	_fix_object_argslibrary_filename
_need_linkr*   r   r   r   r   r0   )	r   r3   Zoutput_libnamer-   r0   target_langoutput_filenameZlib_argsr8   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}|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 kr|| n
|| q|d |d |d|g |d || |
rp|
|d d< |r|| | tj| z| | jg|  W n, tk
r } zt|W 5 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 %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   r0   ) r   Ztarget_descr3   r?   r-   Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr0   r1   r2   Z
build_tempr>   Zstartup_objZld_argsZdef_fileheadtailmodnamer7   Ztemp_dircontentsZsymZobjects2Z	resourcesfilebaselr   libfiler8   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&   rD   r<   exists)	r   dirsr   r0   ZdlibZ	try_namesdirnamerQ   r   r   r   rI   4  s    
zBCPPCompiler.find_library_filer    c                 C   s   |d krd}g }|D ]}t jt j|\}}|| jddg k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&   rF   rH   src_extensionsr   basenamer"   rD   obj_extension)r   Zsource_filenamesZ	strip_dirr-   Z	obj_namesZsrc_namerO   r7   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	| z| 
|	 W n2 tk
r }
 zt|
 t|
W 5 d }
~
X Y nX d S )Nz	cpp32.exer!   r   )Z_fix_compile_argsr	   r"   r#   r   r   r(   r%   r&   r)   r*   r   printr   )r   sourceZoutput_filer.   r/   r1   r2   _r4   Zpp_argsr8   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,   rW   rY   Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZexe_extensionr   r9   r@   rR   rI   rZ   r^   r   r   r   r   r      sb   
   
            
D   
          
 

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