<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]7                 @   st  d  d l  Z  d  d l Z d  d l Z d  d l Td  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 Gd	 d
   d
  Z d d f d d f d d f f Z d d d d  Z d d d d f d d d d f d d d d f d d d d f d d  d! d" f i Z d# d$   Z d d d  d  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 d d d d	 i Z d d	 d g Z d
 d
 d
 d d  Z d d   Z d d   Z d d   Z d d   Z d 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/ d0   Z d1 d2   Z  d d3 d4  Z! d5 d6   Z" d7 d8   Z# d9 d:   Z$ d; d<   Z% d d d d d d= d>  Z& d d d d
 d d d d? d@  Z' dA dB   Z( d d
 d dC dD  Z) dE Z* dF Z+ dG Z, d d d d d d
 d d d d dH dI 
 Z- d d d d d d
 d d d d dJ dK 
 Z. d d d d d d
 d d d d dL dM 
 Z/ d d d d d
 d d d dN dO  Z0 dP dQ   Z1 dR dS   Z2 dT dU   Z3 d d d d dV dW  Z4 d
 dX dY  Z5 d
 dZ d[ d\  Z6 d
 dZ d] d^  Z7 d
 dZ d_ d`  Z8 da d
 dZ db dc  Z9 dd de df  Z: dg dh   Z; di dj   Z< d dd dk dl  Z= dm dn   Z> do dp   Z? dq dr ds  Z@ d S)t	CCompilerNz.ccz.cczc++z.cppz.cxxz.mZobjcr   c             C   s   | |  _  | |  _ | |  _ d  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _	 x. |  j
 j   D] } |  j | |  j
 |  qj Wd  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   ./opt/alt/python35/lib64/python3.5/ccompiler.py__init__U   s    										zCCompiler.__init__c             K   sT   xM | D]E } | |  j  k r8 t d | |  j j f   |  j | | |  q Wd  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)N)
isinstancestrsetattrr   )r   r   valuer   r   r   r      s    zCCompiler.set_executablec             C   s<   d } x/ |  j  D]$ } | d | k r* | S| d 7} q Wd  S)Nr      )r   )r   nameidefnr   r   r   _find_macro   s    zCCompiler._find_macroc             C   s   x} | D]u } t  | t  oa t |  d k oa t  | d t  sQ | d d  k oa t  | d t  s t d | d d   q Wd  S)Nr(      r   zinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(   r-   )r$   tuplelenr%   	TypeError)r   Zdefinitionsr+   r   r   r   _check_macro_definitions   s    #z"CCompiler._check_macro_definitionsc             C   s?   |  j  |  } | d  k	 r% |  j | =|  j j | | f  d  S)N)r,   r   append)r   r)   r'   r*   r   r   r   define_macro   s    	
zCCompiler.define_macroc             C   sB   |  j  |  } | d  k	 r% |  j | =| f } |  j j |  d  S)N)r,   r   r2   )r   r)   r*   Zundefnr   r   r   undefine_macro   s
    
	zCCompiler.undefine_macroc             C   s   |  j  j |  d  S)N)r   r2   )r   dirr   r   r   add_include_dir   s    zCCompiler.add_include_dirc             C   s   | d  d   |  _  d  S)N)r   )r   dirsr   r   r   set_include_dirs   s    zCCompiler.set_include_dirsc             C   s   |  j  j |  d  S)N)r   r2   )r   libnamer   r   r   add_library   s    zCCompiler.add_libraryc             C   s   | d  d   |  _  d  S)N)r   )r   Zlibnamesr   r   r   set_libraries   s    zCCompiler.set_librariesc             C   s   |  j  j |  d  S)N)r   r2   )r   r5   r   r   r   add_library_dir  s    zCCompiler.add_library_dirc             C   s   | d  d   |  _  d  S)N)r   )r   r7   r   r   r   set_library_dirs  s    zCCompiler.set_library_dirsc             C   s   |  j  j |  d  S)N)r   r2   )r   r5   r   r   r   add_runtime_library_dir  s    z!CCompiler.add_runtime_library_dirc             C   s   | d  d   |  _  d  S)N)r   )r   r7   r   r   r   set_runtime_library_dirs  s    z"CCompiler.set_runtime_library_dirsc             C   s   |  j  j |  d  S)N)r   r2   )r   objectr   r   r   add_link_object   s    zCCompiler.add_link_objectc             C   s   | d  d   |  _  d  S)N)r   )r   r   r   r   r   set_link_objects(  s    zCCompiler.set_link_objectsc             C   s  | d  k r |  j  } n t | t  s3 t d   | d  k rK |  j } n1 t | t  rp | |  j pi g  } n t d   | d  k r |  j } n= t | t t f  r t |  |  j p g  } n t d   | d  k r g  } |  j | d d d | } t	 | |  } i  }	 xm t
 t |   D]Y }
 | |
 } | |
 } t j j |  d } |  j t j j |   | | f |	 | <q&W| | | | |	 f S)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings	strip_dirr   r   r(   )r   r$   r%   r0   r   listr   r.   object_filenamesgen_preprocess_optionsranger/   ospathsplitextr   dirname)r   Zoutdirr   Zincdirssourcesdependsextrar   pp_optsbuildr*   srcobjextr   r   r   _setup_compile6  s8    		

zCCompiler._setup_compilec             C   s@   | d g } | r& d g | d  d  <| r< | | d  d  <| S)Nz-cz-gr   r   )r   rO   debugZbeforecc_argsr   r   r   _get_cc_argsa  s    zCCompiler._get_cc_argsc             C   s   | d  k r |  j  } n t | t  s3 t d   | d  k rK |  j } n1 t | t  rp | |  j pi g  } n t d   | d  k r |  j } n= t | t t f  r t |  |  j p g  } n t d   | | | f S)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)r   r$   r%   r0   r   rD   r   r.   )r   r   r   r   r   r   r   _fix_compile_argsj  s     
	zCCompiler._fix_compile_argsc             C   s   |  j  | d | } | i  f S)Nr   )rE   )r   rL   r   rM   r   r   r   r   _prep_compile  s    	zCCompiler._prep_compilec             C   sj   t  | t t f  s! t d   t |  } | d  k rE |  j } n t  | t  s` t d   | | f S)Nz,'objects' must be a list or tuple of stringsz%'output_dir' must be a string or None)r$   rD   r.   r0   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  rI t |  |  j  pB g  } n t d   | d  k rm |  j } n= t | t t f  r t |  |  j p g  } 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$   rD   r.   r0   r   r   )r   r   r   r   r   r   r   _fix_lib_args  s&    			zCCompiler._fix_lib_argsc             C   sE   |  j  r d S|  j r. t | | d d } n t | |  } | Sd  S)NTmissingnewer)r   r   r   )r   r   output_filer]   r   r   r   
_need_link  s    		zCCompiler._need_linkc       	      C   s   t  | t  s | g } d  } t |  j  } x{ | D]s } t j j |  \ } } |  j j |  } y. |  j j	 |  } | | k  r | } | } Wq4 t
 k
 r Yq4 Xq4 W| S)N)r$   rD   r/   language_orderrH   rI   rJ   language_mapgetindexr   )	r   rL   langrc   sourcebaserS   ZextlangZextindexr   r   r   detect_language  s    	
	zCCompiler.detect_languagec             C   s   d  S)Nr   )r   re   r^   r   r   extra_preargsextra_postargsr   r   r   
preprocess  s    zCCompiler.preprocessc	             C   s   |  j  | | | | | |  \ } }	 } }
 } |  j |
 | |  } xV |	 D]N } y | | \ } } Wn t k
 rz wI Yn X|  j | | | | | |
  qI W|	 S)N)rT   rW   KeyError_compile)r   rL   r   r   r   rU   rh   ri   rM   r   rO   rP   rV   rR   rQ   rS   r   r   r   compile  s    6 zCCompiler.compilec             C   s   d  S)Nr   )r   rR   rQ   rS   rV   ri   rO   r   r   r   rl   C  s    zCCompiler._compilec             C   s   d  S)Nr   )r   r   output_libnamer   rU   target_langr   r   r   create_static_libI  s    zCCompiler.create_static_libZshared_objectZshared_library
executablec             C   s
   t   d  S)N)NotImplementedError)r   Ztarget_descr   output_filenamer   r   r   r   export_symbolsrU   rh   ri   
build_tempro   r   r   r   linki  s    9zCCompiler.linkc             C   sG   |  j  t j | |  j | d d | | | | | | |	 |
 | |  d  S)Nlib_typeshared)rv   r   SHARED_LIBRARYlibrary_filename)r   r   rn   r   r   r   r   rt   rU   rh   ri   ru   ro   r   r   r   link_shared_lib  s    	zCCompiler.link_shared_libc             C   s8   |  j  t j | | | | | | | | |	 |
 | |  d  S)N)rv   r   SHARED_OBJECT)r   r   rs   r   r   r   r   rt   rU   rh   ri   ru   ro   r   r   r   link_shared_object  s
    	zCCompiler.link_shared_objectc             C   sA   |  j  t j | |  j |  | | | | d  | | |	 d  |
  d  S)N)rv   r   
EXECUTABLEexecutable_filename)r   r   Zoutput_prognamer   r   r   r   rU   rh   ri   ro   r   r   r   link_executable  s    zCCompiler.link_executablec             C   s
   t   d  S)N)rr   )r   r5   r   r   r   library_dir_option  s    zCCompiler.library_dir_optionc             C   s
   t   d  S)N)rr   )r   r5   r   r   r   runtime_library_dir_option  s    z$CCompiler.runtime_library_dir_optionc             C   s
   t   d  S)N)rr   )r   libr   r   r   library_option  s    zCCompiler.library_optionc             C   sA  d d  l  } | d  k r g  } | d  k r0 g  } | d  k rB g  } | d  k rT g  } | j d | d d \ } } t j | d  }	 z7 x | D] }
 |	 j d |
  q W|	 j d |  Wd  |	 j   Xy |  j | g d | } Wn t k
 r d	 SYn Xy  |  j | d
 d | d | Wn t	 t
 f k
 r<d	 SYn Xd S)Nr   z.ctextTwz#include "%s"
z+main (int argc, char **argv) {
    %s();
}
r   Fza.outr   r   )tempfilemkstemprH   fdopenwritecloserm   ZCompileErrorr   Z	LinkErrorr0   )r   funcnameZincludesr   r   r   r   fdZfnamefZinclr   r   r   r   has_function  s8    			zCCompiler.has_functionc             C   s
   t   d  S)N)rr   )r   r7   r   rU   r   r   r   find_library_file#  s    zCCompiler.find_library_file c             C   s   | d  k r d } g  } x | D] } t  j j |  \ } } t  j j |  d } | t  j j |  d   } | |  j k r t d | | f   | r t  j j |  } | j t  j j	 | | |  j
   q W| S)Nr   r(   z"unknown file type '%s' (from '%s'))rH   rI   rJ   
splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2   joinobj_extension)r   Zsource_filenamesrC   r   Z	obj_namesZsrc_namerf   rS   r   r   r   rE   N  s    zCCompiler.object_filenamesc             C   s2   | r t  j j |  } t  j j | | |  j  S)N)rH   rI   r   r   shared_lib_extension)r   r   rC   r   r   r   r   shared_object_filename_  s    z CCompiler.shared_object_filenamec             C   s8   | r t  j j |  } t  j j | | |  j p3 d  S)Nr   )rH   rI   r   r   exe_extension)r   r   rC   r   r   r   r   r   e  s    zCCompiler.executable_filenamestaticc       
      C   s   | d	 k r t  d   t |  | d  } t |  | d  } t j j |  \ } } | | | f }	 | rr d } t j j | | |	  S)
Nr   rx   dylib
xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z_lib_formatZ_lib_extensionr   )r   rx   r   r   )r   getattrrH   rI   splitr   )
r   r9   rw   rC   r   fmtrS   r5   rf   filenamer   r   r   rz   k  s    	zCCompiler.library_filenamer(   c             C   s   t  j |  d  S)N)r
   rU   )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 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)N)r	   r   )r   funcargsr   r   r   r   r   r	     s    zCCompiler.executec             C   s   t  | d |  j d  S)Nr   )r   r   )r   cmdr   r   r   r     s    zCCompiler.spawnc             C   s   t  | | d |  j S)Nr   )r   r   )r   rQ   dstr   r   r   r     s    zCCompiler.move_filei  c             C   s   t  | | d |  j d  S)Nr   )r   r   )r   r)   moder   r   r   r     s    zCCompiler.mkpath)Ar!   
__module____qualname__Zcompiler_typer   r   Zstatic_lib_extensionr   Zstatic_lib_formatZshared_lib_formatr   ra   r`   r   r#   r   r,   r1   r3   r4   r6   r8   r:   r;   r<   r=   r>   r?   rA   rB   rT   rW   rX   rY   rZ   r[   r_   rg   rj   rm   rl   rp   r|   ry   r~   rv   r{   r}   r   r   r   r   r   r   rE   r   r   rz   r   r   r   r	   r   r   r   r   r   r   r   r      s   $ 
+	 "	B4*+r   zcygwin.*unixposixntZmsvcc             C   sy   |  d  k r t  j }  | d  k r* t j } xH t D]@ \ } } t j | |  d  k	 sm t j | |   d  k	 r1 | Sq1 Wd S)Nr   )rH   r)   r   platform_default_compilersrematch)osnamer   patterncompilerr   r   r   get_default_compiler  s    
		r   ZunixccompilerZUnixCCompilerzstandard UNIX-style compilerZ_msvccompilerZMSVCCompilerzMicrosoft Visual C++cygwinZcygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32Zmingw32ZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32ZbcppZbcppcompilerZBCPPCompilerzBorland C++ Compilerc              C   sv   d d l  m }  g  } x6 t j   D]( } | j d | d  t | d f  q# W| j   |  |  } | j d  d  S)Nr   )FancyGetoptz	compiler=r-   zList of available compilers:)Zdistutils.fancy_getoptr   compiler_classr   r2   sort
print_help)r   Z	compilersr   Zpretty_printerr   r   r   show_compilers  s    
r   c             C   s  |  d  k r t  j }  y/ | d  k r0 t |   } t | \ } } } WnB t k
 r d |  } | d  k	 rx | d | } t |   Yn Xy5 d | } t |  t j | }	 t	 |	  | }
 WnI t
 k
 r t d |   Yn( t k
 r	t d | | f   Yn 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')rH   r)   r   r   rk   ZDistutilsPlatformError
__import__r   modulesvarsImportErrorZDistutilsModuleError)Zplatr   r   r   r   module_name
class_nameZlong_descriptionr   moduleklassr   r   r   new_compiler  s2    	


r   c             C   s   g  } x |  D] } t  | t  oA d t |  k o? d k n sT t d |   t |  d k r~ | j d | d  q t |  d k r | d d  k r | j d | d  q | j d |  q Wx | D] } | j d |  q W| 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$   r.   r/   r0   r2   )r   r   rO   Zmacror5   r   r   r   rF   
  s    1
rF   c             C   s   g  } x$ | D] } | j  |  j |   q WxF | D]> } |  j |  } t | t  re | | } q4 | j  |  q4 Wx | D]y } t j j |  \ } }	 | r |  j | g |	  }
 |
 r | j  |
  q |  j	 d |  q} | j  |  j
 |   q} W| S)Nz6no library file corresponding to '%s' found (skipping))r2   r   r   r$   rD   rH   rI   r   r   r   r   )r   r   r   r   Zlib_optsr5   optr   Zlib_dirZlib_nameZlib_filer   r   r   gen_lib_options7  s$    	r   )r   rH   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   rF   r   r   r   r   r   <module>   s:   $
   							--