£Á°è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
    YI~d3                 @   sh   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 dddZ
G d	d
 d
eZdddZdS )    N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c            	   @   s   e Zd ZdZdddddddd	d
g	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d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddg fd,d-Zd6d.d/ZdS )7configzprepare to build)z	compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)zinclude-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z
libraries=lz!external C libraries to link with)zlibrary-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)zdump-sourceNz=dump generated source files before attempting to compile themc             C   s4   d | _ d | _d | _d | _d | _d| _d| _g | _d S )N   )compilerZccinclude_dirs	librarieslibrary_dirsr   dump_source
temp_files)self r   =/opt/alt/python37/lib64/python3.7/distutils/command/config.pyinitialize_options3   s    zconfig.initialize_optionsc             C   s   | j d kr| jj pg | _ nt| j tr6| j tj| _ | jd krHg | _nt| jtr^| jg| _| jd krpg | _nt| jtr| jtj| _d S )N)	r   Zdistribution
isinstancestrsplitospathsepr   r   )r   r   r   r   finalize_optionsB   s    



zconfig.finalize_optionsc             C   s   d S )Nr   )r   r   r   r   runR   s    z
config.runc             C   sz   ddl m}m} t| j|sv|| j| jdd| _t| j | jrN| j| j | j	rb| j
| j	 | jrv| j| j d S )Nr   )	CCompilernew_compilerr   )r   dry_runforce)distutils.ccompilerr    r!   r   r   r"   r   r   Zset_include_dirsr   Zset_librariesr   Zset_library_dirs)r   r    r!   r   r   r   _check_compilerY   s    
zconfig._check_compilerc             C   sl   dt |  }t|d}|r@x|D ]}|d|  q W |d || |d dkr`|d |  |S )NZ_configtestwz#include <%s>

)LANG_EXTopenwriteclose)r   bodyheaderslangfilenamefileheaderr   r   r   _gen_temp_sourcefilek   s    




zconfig._gen_temp_sourcefilec             C   s<   |  |||}d}| j||g | jj|||d ||fS )Nz_configtest.i)r   )r3   r   extendr   Z
preprocess)r   r-   r.   r   r/   srcoutr   r   r   _preprocessx   s
    zconfig._preprocessc             C   s\   |  |||}| jr"t|d|  | j|g\}| j||g | jj|g|d ||fS )Nzcompiling '%s':)r   )r3   r   	dump_filer   Zobject_filenamesr   r4   compile)r   r-   r.   r   r/   r5   objr   r   r   _compile   s    zconfig._compilec       
      C   sr   |  ||||\}}tjtj|d }	| jj|g|	|||d | jjd k	r\|	| jj }	| j	|	 |||	fS )Nr   )r   r   Ztarget_lang)
r;   r   pathsplitextbasenamer   Zlink_executableZexe_extensionr   append)
r   r-   r.   r   r   r   r/   r5   r:   progr   r   r   _link   s    zconfig._linkc          	   G   sX   |s| j }g | _ tdd| x0|D ](}yt| W q( tk
rN   Y q(X q(W d S )Nzremoving: %s )r   r   infojoinr   removeOSError)r   	filenamesr0   r   r   r   _clean   s    
zconfig._cleanNr   c             C   sR   ddl m} |   d}y| |||| W n |k
rD   d}Y nX |   |S )Nr   )CompileErrorTF)r$   rI   r%   r7   rH   )r   r-   r.   r   r/   rI   okr   r   r   try_cpp   s    
zconfig.try_cppc             C   sx   |    | ||||\}}t|tr0t|}t|}d}	x&| }
|
dkrPP ||
r>d}	P q>W |	  | 
  |	S )NF T)r%   r7   r   r   rer9   r*   readlinesearchr,   rH   )r   patternr-   r.   r   r/   r5   r6   r1   matchliner   r   r   
search_cpp   s     	


zconfig.search_cppc             C   sd   ddl m} |   y| |||| d}W n |k
rD   d}Y nX t|rRdpTd |   |S )Nr   )rI   TFzsuccess!zfailure.)r$   rI   r%   r;   r   rC   rH   )r   r-   r.   r   r/   rI   rJ   r   r   r   try_compile   s    
zconfig.try_compilec       
   	   C   sp   ddl m}m} |   y| |||||| d}	W n ||fk
rP   d}	Y nX t|	r^dp`d |   |	S )Nr   )rI   	LinkErrorTFzsuccess!zfailure.)r$   rI   rU   r%   rA   r   rC   rH   )
r   r-   r.   r   r   r   r/   rI   rU   rJ   r   r   r   try_link   s    


zconfig.try_linkc          
   C   s   ddl m}m} |   y.| ||||||\}	}
}| |g d}W n ||tfk
rd   d}Y nX t|rrdptd | 	  |S )Nr   )rI   rU   TFzsuccess!zfailure.)
r$   rI   rU   r%   rA   Zspawnr   r   rC   rH   )r   r-   r.   r   r   r   r/   rI   rU   r5   r:   ZexerJ   r   r   r   try_run   s    

zconfig.try_runr   c       	      C   st   |    g }|r|d|  |d |r<|d|  n|d|  |d d|d }| |||||S )Nz
int %s ();zint main () {z  %s();z  %s;}r'   )r%   r?   rD   rV   )	r   funcr.   r   r   r   ZdeclZcallr-   r   r   r   
check_func  s    


zconfig.check_funcc             C   s    |    | d|||g| |S )Nzint main (void) { })r%   rV   )r   Zlibraryr   r.   r   Zother_librariesr   r   r   	check_lib6  s    

zconfig.check_libc             C   s   | j d|g|dS )Nz/* No body */)r-   r.   r   )rK   )r   r2   r   r   r/   r   r   r   check_headerD  s    
zconfig.check_header)NNNr   )NNNr   )NNr   )NNNNr   )NNNNr   )NNNNr   r   )NNr   )__name__
__module____qualname__descriptionZuser_optionsr   r   r   r%   r3   r7   r;   rA   rH   rK   rS   rT   rV   rW   rZ   r[   r\   r   r   r   r   r      sB   	
 

 
 
 
 r   c             C   sJ   |d krt d|  n
t | t| }zt |  W d |  X d S )Nz%s)r   rC   r*   readr,   )r0   headr1   r   r   r   r8   N  s    
r8   )N)r   rM   Zdistutils.corer   Zdistutils.errorsr   Zdistutils.sysconfigr   Z	distutilsr   r)   r   r8   r   r   r   r   <module>   s   
  ;