
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aI¹  ã                   @   sÂ   d dl Z d dlZd dlZd dlT d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlmZ G d	d
„ d
ƒZdZddd„ZddddddœZdd„ Zddd„Zdd„ Zdd„ ZdS )é    N)Ú*)Úspawn)Ú	move_file)Úmkpath)Únewer_pairwiseÚnewer_group)Úsplit_quotedÚexecute)Úlogc                
   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
ddddddœZdddgZdpdd„Zd	d
„ Zdd„ Zdd„ Zdd„ Zdqdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Z drd/d0„Z!d1d2„ Z"d3d4„ Z#d5d6„ Z$d7d8„ Z%dsd9d:„Z&dtd;d<„Z'd=d>„ Z(dud?d@„Z)dAZ*dBZ+dCZ,dvdDdE„Z-dwdFdG„Z.dxdHdI„Z/dydJdK„Z0dLdM„ Z1dNdO„ Z2dPdQ„ Z3dzdRdS„Z4d{dTdU„Z5d|dWdX„Z6d}dYdZ„Z7d~d[d\„Z8dd^d_„Z9d€dadb„Z:dcdd„ Z;dedf„ Z<d�dgdh„Z=didj„ Z>dkdl„ Z?d‚dndo„Z@dS )ƒÚ	CCompilerNÚczc++Zobjc)ú.cz.ccz.cppz.cxxz.mr   c                 C   sb   || _ || _|| _d | _g | _g | _g | _g | _g | _g | _	| j
 ¡ D ]}|  || j
| ¡ qFd S ©N)Údry_runÚforceÚverboseÚ
output_dirÚmacrosÚinclude_dirsÚ	librariesÚlibrary_dirsÚruntime_library_dirsÚobjectsÚexecutablesÚkeysÚset_executable)Úselfr   r   r   Úkey© r   ú8/opt/alt/python38/lib64/python3.8/distutils/ccompiler.pyÚ__init__U   s    zCCompiler.__init__c                 K   s<   |D ]2}|| j kr&td|| jjf ƒ‚|  ||| ¡ qd S )Nz$unknown executable '%s' for class %s)r   Ú
ValueErrorÚ	__class__Ú__name__r   )r   Úkwargsr   r   r   r   Úset_executablesy   s    

ÿzCCompiler.set_executablesc                 C   s,   t |tƒrt| |t|ƒƒ nt| ||ƒ d S r   )Ú
isinstanceÚstrÚsetattrr   )r   r   Úvaluer   r   r   r   ™   s    
zCCompiler.set_executablec                 C   s0   d}| j D ] }|d |kr"|  S |d7 }q
d S )Nr   é   )r   )r   ÚnameÚiÚdefnr   r   r   Ú_find_macroŸ   s    

zCCompiler._find_macroc                 C   s`   |D ]V}t |tƒrFt|ƒdkrFt |d tƒs8|d d krFt |d tƒstd| d d ƒ‚qd S )N)r*   é   r*   r   zinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r&   ÚtupleÚlenr'   Ú	TypeError)r   Zdefinitionsr-   r   r   r   Ú_check_macro_definitions§   s    

ÿþ
þýÿþz"CCompiler._check_macro_definitionsc                 C   s.   |   |¡}|d k	r| j|= | j ||f¡ d S r   ©r.   r   Úappend)r   r+   r)   r,   r   r   r   Údefine_macro¸   s    	
zCCompiler.define_macroc                 C   s0   |   |¡}|d k	r| j|= |f}| j |¡ d S r   r4   )r   r+   r,   Zundefnr   r   r   Úundefine_macroÇ   s
    
zCCompiler.undefine_macroc                 C   s   | j  |¡ d S r   )r   r5   ©r   Údirr   r   r   Úadd_include_dirÙ   s    zCCompiler.add_include_dirc                 C   s   |d d … | _ d S r   ©r   ©r   Údirsr   r   r   Úset_include_dirsá   s    zCCompiler.set_include_dirsc                 C   s   | j  |¡ d S r   )r   r5   )r   Úlibnamer   r   r   Úadd_libraryë   s    zCCompiler.add_libraryc                 C   s   |d d … | _ d S r   )r   )r   Zlibnamesr   r   r   Úset_librariesû   s    zCCompiler.set_librariesc                 C   s   | j  |¡ d S r   )r   r5   r8   r   r   r   Úadd_library_dir  s    zCCompiler.add_library_dirc                 C   s   |d d … | _ d S r   )r   r<   r   r   r   Úset_library_dirs  s    zCCompiler.set_library_dirsc                 C   s   | j  |¡ d S r   )r   r5   r8   r   r   r   Úadd_runtime_library_dir  s    z!CCompiler.add_runtime_library_dirc                 C   s   |d d … | _ d S r   )r   r<   r   r   r   Úset_runtime_library_dirs  s    z"CCompiler.set_runtime_library_dirsc                 C   s   | j  |¡ d S r   )r   r5   )r   Úobjectr   r   r   Úadd_link_object   s    zCCompiler.add_link_objectc                 C   s   |d d … | _ d S r   )r   )r   r   r   r   r   Úset_link_objects(  s    zCCompiler.set_link_objectsc                 C   s  |d kr| j }nt|tƒs"tdƒ‚|d kr2| j}n"t|tƒrL|| jpFg  }ntdƒ‚|d krd| j}n*t|ttfƒr†t|ƒ| jp€g  }ntdƒ‚|d kršg }| j|d|d�}t	||ƒ}i }	t
t|ƒƒD ]B}
||
 }||
 }tj |¡d }|  tj |¡¡ ||f|	|< qÄ|||||	fS )Nú%'output_dir' must be a string or Noneú/'macros' (if supplied) must be a list of tuplesú6'include_dirs' (if supplied) must be a list of stringsr   )Ú	strip_dirr   r*   )r   r&   r'   r2   r   Úlistr   r0   Úobject_filenamesÚgen_preprocess_optionsÚranger1   ÚosÚpathÚsplitextr   Údirname)r   Zoutdirr   ZincdirsÚsourcesÚdependsZextrar   Úpp_optsÚbuildr,   ÚsrcÚobjÚextr   r   r   Ú_setup_compile6  s<    

ÿÿ
zCCompiler._setup_compilec                 C   s0   |dg }|rdg|d d…< |r,||d d…< |S )Nz-cz-gr   r   )r   rW   ÚdebugZbeforeÚcc_argsr   r   r   Ú_get_cc_argsa  s    
zCCompiler._get_cc_argsc                 C   s˜   |d kr| j }nt|tƒs"tdƒ‚|d kr2| j}n"t|tƒrL|| jpFg  }ntdƒ‚|d krd| j}n*t|ttfƒr†t|ƒ| jp€g  }ntdƒ‚|||fS )NrI   rJ   rK   )r   r&   r'   r2   r   rM   r   r0   )r   r   r   r   r   r   r   Ú_fix_compile_argsj  s"    


ÿzCCompiler._fix_compile_argsc                 C   s   | j ||d�}|i fS )N)r   )rN   )r   rU   r   rV   r   r   r   r   Ú_prep_compileŠ  s    	zCCompiler._prep_compilec                 C   sH   t |ttfƒstdƒ‚t|ƒ}|d kr.| j}nt |tƒs@tdƒ‚||fS )Nz,'objects' must be a list or tuple of stringsrI   )r&   rM   r0   r2   r   r'   )r   r   r   r   r   r   Ú_fix_object_argsš  s    
zCCompiler._fix_object_argsc                 C   s¸   |d kr| j }n*t|ttfƒr2t|ƒ| j p,g  }ntdƒ‚|d krJ| j}n*t|ttfƒrlt|ƒ| jpfg  }ntdƒ‚|d kr„| j}n*t|ttfƒr¦t|ƒ| jp g  }ntdƒ‚|||fS )Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)r   r&   rM   r0   r2   r   r   )r   r   r   r   r   r   r   Ú_fix_lib_args«  s,    ÿÿÿzCCompiler._fix_lib_argsc                 C   s2   | j r
dS | jr t||dd�}n
t||ƒ}|S d S )NTÚnewer)Zmissing)r   r   r   )r   r   Úoutput_filerd   r   r   r   Ú
_need_linkÍ  s    
zCCompiler._need_linkc           	   	   C   s~   t |tƒs|g}d }t| jƒ}|D ]V}tj |¡\}}| j |¡}z | j 	|¡}||k r`|}|}W q" t
k
rv   Y q"X q"|S r   )r&   rM   r1   Úlanguage_orderrQ   rR   rS   Úlanguage_mapÚgetÚindexr!   )	r   rU   Zlangrj   ÚsourceÚbaser[   ZextlangZextindexr   r   r   Údetect_languageÚ  s    

zCCompiler.detect_languagec                 C   s   d S r   r   )r   rk   re   r   r   Úextra_preargsÚextra_postargsr   r   r   Ú
preprocessò  s    zCCompiler.preprocessc	              	   C   sx   |   ||||||¡\}}	}}
}|  |
||¡}|	D ]B}z|| \}}W n tk
r\   Y q0Y nX |  ||||||
¡ q0|	S r   )r\   r_   ÚKeyErrorÚ_compile)r   rU   r   r   r   r]   rn   ro   rV   r   rW   rX   r^   rZ   rY   r[   r   r   r   Úcompileÿ  s    6 ÿÿ
zCCompiler.compilec                 C   s   d S r   r   )r   rZ   rY   r[   r^   ro   rW   r   r   r   rr   C  s    zCCompiler._compilec                 C   s   d S r   r   )r   r   Úoutput_libnamer   r]   Útarget_langr   r   r   Úcreate_static_libI  s    zCCompiler.create_static_libZshared_objectZshared_libraryÚ
executablec                 C   s   t ‚d S r   ©ÚNotImplementedError)r   Ztarget_descr   Úoutput_filenamer   r   r   r   Úexport_symbolsr]   rn   ro   Ú
build_tempru   r   r   r   Úlinki  s    9zCCompiler.linkc                 C   s2   |   tj|| j|dd�|||||||	|
||¡ d S )NÚshared)Úlib_type)r}   r   ÚSHARED_LIBRARYÚlibrary_filename)r   r   rt   r   r   r   r   r{   r]   rn   ro   r|   ru   r   r   r   Úlink_shared_lib§  s    
      ûzCCompiler.link_shared_libc                 C   s(   |   tj|||||||||	|
||¡ d S r   )r}   r   ÚSHARED_OBJECT)r   r   rz   r   r   r   r   r{   r]   rn   ro   r|   ru   r   r   r   Úlink_shared_object¼  s    
       üzCCompiler.link_shared_objectc                 C   s.   |   tj||  |¡||||d |||	d |
¡ d S r   )r}   r   Ú
EXECUTABLEÚexecutable_filename)r   r   Zoutput_prognamer   r   r   r   r]   rn   ro   ru   r   r   r   Úlink_executableÐ  s    
        ýzCCompiler.link_executablec                 C   s   t ‚d S r   rx   r8   r   r   r   Úlibrary_dir_optionæ  s    zCCompiler.library_dir_optionc                 C   s   t ‚d S r   rx   r8   r   r   r   Úruntime_library_dir_optionì  s    z$CCompiler.runtime_library_dir_optionc                 C   s   t ‚d S r   rx   )r   Úlibr   r   r   Úlibrary_optionò  s    zCCompiler.library_optionc              	   C   sð   dd l }|d krg }|d kr g }|d kr,g }|d kr8g }|jd|dd�\}}t |d¡}	z*|D ]}
|	 d|
 ¡ q^|	 d| ¡ W 5 |	 ¡  X z| j|g|d�}W n tk
r¸   Y d	S X z| j|d
||d� W n t	t
fk
rê   Y d	S X dS )Nr   r   T)ÚtextÚwz#include "%s"
z=int main (int argc, char **argv) {
    %s();
    return 0;
}
r;   Fza.out)r   r   )ÚtempfileZmkstemprQ   ÚfdopenÚcloseÚwriters   ZCompileErrorr‡   Z	LinkErrorr2   )r   ÚfuncnameZincludesr   r   r   rŽ   ÚfdZfnameÚfZinclr   r   r   r   Úhas_functionø  s<    	û

þ
zCCompiler.has_functionc                 C   s   t ‚d S r   rx   )r   r=   rŠ   r]   r   r   r   Úfind_library_file$  s    zCCompiler.find_library_fileÚ c                 C   s–   |d krd}g }|D ]|}t j |¡\}}t j |¡d }|t j |¡d … }|| jkrftd||f ƒ‚|rvt j |¡}| t j 	||| j
 ¡¡ q|S )Nr—   r*   z"unknown file type '%s' (from '%s'))rQ   rR   rS   Ú
splitdriveÚisabsÚsrc_extensionsZUnknownFileErrorÚbasenamer5   ÚjoinÚobj_extension)r   Zsource_filenamesrL   r   Z	obj_namesZsrc_namerl   r[   r   r   r   rN   O  s"    

ÿÿzCCompiler.object_filenamesc                 C   s$   |rt j |¡}t j ||| j ¡S r   )rQ   rR   r›   rœ   Úshared_lib_extension©r   r›   rL   r   r   r   r   Úshared_object_filename`  s    z CCompiler.shared_object_filenamec                 C   s(   |rt j |¡}t j ||| jp"d ¡S )Nr—   )rQ   rR   r›   rœ   Úexe_extensionrŸ   r   r   r   r†   f  s    zCCompiler.executable_filenameÚstaticc           
      C   s`   |dkrt dƒ‚t| |d ƒ}t| |d ƒ}tj |¡\}}|||f }	|rPd}tj |||	¡S )N)r¢   r~   ZdylibZ
xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z_lib_formatZ_lib_extensionr—   )r!   ÚgetattrrQ   rR   Úsplitrœ   )
r   r?   r   rL   r   Zfmtr[   r9   rl   Úfilenamer   r   r   r�   l  s    ÿzCCompiler.library_filenamer*   c                 C   s   t  |¡ d S r   )r
   r]   )r   ÚmsgÚlevelr   r   r   Úannounce  s    zCCompiler.announcec                 C   s   ddl m} |rt|ƒ d S )Nr   )ÚDEBUG)Zdistutils.debugr©   Úprint)r   r¦   r©   r   r   r   Údebug_print‚  s    zCCompiler.debug_printc                 C   s   t j d| ¡ d S )Nzwarning: %s
)ÚsysÚstderrr‘   )r   r¦   r   r   r   Úwarn‡  s    zCCompiler.warnc                 C   s   t |||| jƒ d S r   )r	   r   )r   ÚfuncÚargsr¦   r§   r   r   r   r	   Š  s    zCCompiler.executec                 C   s   t || jd� d S ©N)r   )r   r   )r   Úcmdr   r   r   r   �  s    zCCompiler.spawnc                 C   s   t ||| jd�S r±   )r   r   )r   rY   Zdstr   r   r   r   �  s    zCCompiler.move_fileéÿ  c                 C   s   t ||| jd� d S r±   )r   r   )r   r+   Úmoder   r   r   r   “  s    zCCompiler.mkpath)r   r   r   )N)N)NNNNN)NNNr   NNN)Nr   N)
NNNNNr   NNNN)
NNNNNr   NNNN)
NNNNNr   NNNN)NNNNr   NNN)NNNN)r   )r   r—   )r   r—   )r   r—   )r¢   r   r—   )r*   )Nr*   )r³   )Ar#   Ú
__module__Ú__qualname__Zcompiler_typerš   r�   Zstatic_lib_extensionrž   Zstatic_lib_formatZshared_lib_formatr¡   rh   rg   r    r%   r   r.   r3   r6   r7   r:   r>   r@   rA   rB   rC   rD   rE   rG   rH   r\   r_   r`   ra   rb   rc   rf   rm   rp   rs   rr   rv   rƒ   r€   r…   r}   r‚   r„   r‡   rˆ   r‰   r‹   r•   r–   rN   r    r†   r�   r¨   r«   r®   r	   r   r   r   r   r   r   r   r      sø   ü

$ 

+	 
"      ÿ
         þ
D    ÿ
          ó
A          ô
          ô
        ö
    ÿ
,
+


    ÿ


r   ))zcygwin.*Úunix)Úposixr·   )ÚntÚmsvcc                 C   sV   | d krt j} |d krtj}tD ]0\}}t ||¡d k	sHt || ¡d k	r |  S q dS )Nr·   )rQ   r+   r¬   ÚplatformÚ_default_compilersÚreÚmatch)Zosnamer»   ÚpatternÚcompilerr   r   r   Úget_default_compiler©  s    
ÿ
rÁ   )ZunixccompilerZUnixCCompilerzstandard UNIX-style compiler)Z_msvccompilerZMSVCCompilerzMicrosoft Visual C++)ÚcygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rÂ   ZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)ZbcppcompilerZBCPPCompilerzBorland C++ Compiler)r·   rº   ÚcygwinZmingw32Zbcppc                  C   sX   ddl m}  g }t ¡ D ] }| d| d t| d f¡ q| ¡  | |ƒ}| d¡ d S )Nr   )ÚFancyGetoptz	compiler=r/   zList of available compilers:)Zdistutils.fancy_getoptrÄ   Úcompiler_classr   r5   ÚsortZ
print_help)rÄ   Z	compilersrÀ   Zpretty_printerr   r   r   Úshow_compilersÍ  s    
ÿrÇ   c                 C   sä   | d krt j} z"|d kr t| ƒ}t| \}}}W n8 tk
rh   d|  }|d k	r\|d|  }t|ƒ‚Y nX z*d| }t|ƒ tj| }	t	|	ƒ| }
W nB t
k
r´   td| ƒ‚Y n$ tk
rÖ   td||f ƒ‚Y nX |
d ||ƒS )Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz
distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s')rQ   r+   rÁ   rÅ   rq   ZDistutilsPlatformErrorÚ
__import__r¬   ÚmodulesÚvarsÚImportErrorZDistutilsModuleError)ZplatrÀ   r   r   r   Zmodule_nameÚ
class_nameZlong_descriptionr¦   ÚmoduleÚklassr   r   r   Únew_compilerÞ  s:    
ÿÿÿÿ
rÏ   c                 C   s´   g }| D ]Ž}t |tƒr0dt|ƒ  kr.dks<n td| ƒ‚t|ƒdkr\| d|d  ¡ qt|ƒdkr|d d krˆ| d|d  ¡ q| d| ¡ q|D ]}| d| ¡ qœ|S )	Nr*   r/   zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%sr   z-D%sz-D%s=%sz-I%s)r&   r0   r1   r2   r5   )r   r   rW   Zmacror9   r   r   r   rO     s"    $þÿrO   c                 C   s°   g }|D ]}|  |  |¡¡ q|D ],}|  |¡}t|tƒrD|| }q"|  |¡ q"|D ]V}tj |¡\}}	|rš|  |g|	¡}
|
rŠ|  |
¡ qª|  	d| ¡ qT|  |  
|¡¡ qT|S )Nz6no library file corresponding to '%s' found (skipping))r5   rˆ   r‰   r&   rM   rQ   rR   r¤   r–   r®   r‹   )rÀ   r   r   r   Zlib_optsr9   ÚoptrŠ   Zlib_dirZlib_nameZlib_filer   r   r   Úgen_lib_options8  s&    


ÿrÑ   )NN)NNr   r   r   )r¬   rQ   r½   Zdistutils.errorsZdistutils.spawnr   Zdistutils.file_utilr   Zdistutils.dir_utilr   Zdistutils.dep_utilr   r   Zdistutils.utilr   r	   Z	distutilsr
   r   r¼   rÁ   rÅ   rÇ   rÏ   rO   rÑ   r   r   r   r   Ú<module>   s6          
ø
--