£Á°è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>

Yf:                 @   s   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 m
 Z
 m Z d d l m Z m Z m Z m Z d d l m Z e j d k r d d l Z Gd	 d
   d
 e	  Z d S)a9  distutils.unixccompiler

Contains the UnixCCompiler class, a subclass of CCompiler that handles
the "typical" Unix-style command-line C compiler:
  * macros defined with -Dname[=value]
  * macros undefined with -Uname
  * include search directories specified with -Idir
  * libraries specified with -lllib
  * library search directories specified with -Ldir
  * compile handled by 'cc' (or similar) executable with -c option:
    compiles .c to .o
  * link static library handled by 'ar' command (possibly with 'ranlib')
  * link shared library handled by 'cc -shared'
    N)	sysconfig)newer)	CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecErrorCompileErrorLibError	LinkError)logdarwinc                   s  e  Z d  Z d Z d d d d g d d g d d g d d d	 g d
 d g d d d g d d i Z e j d d  d k r d g e d <d d d d d d g Z d Z d Z	 d Z
 d Z d Z d Z Z Z e Z e j d k r d Z   f d d    Z d d d d d d! d"  Z d# d$   Z d d% d d& d'  Z d d d d d d% d d d d d( d) 
 Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d% d2 d3  Z   S)4UnixCCompilerZunixpreprocessorNcompilerZcccompiler_socompiler_cxx	linker_soz-shared
linker_exearchiverarz-crranlib   r   z.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.exec                se   t  |  j |   j | | |  \ } } } t j d  } | rX | | k rX | j |  | | | f S)z'Remove standard library path from rpathLIBDIR)super	__class___fix_lib_argsr   get_config_varremove)self	librarieslibrary_dirsruntime_library_dirsZlibdir)r    </opt/alt/python35/lib64/python3.5/distutils/unixccompiler.pyr   U   s    zUnixCCompiler._fix_lib_argsc             C   s  |  j  d  | |  } | \ } } } t | |  }	 |  j |	 }
 | rY |
 j d | g  | ro | |
 d  d  <| r |
 j |  |
 j |  |  j s | d  k s t | |  r| r |  j t j	 j
 |   y |  j |
  Wn1 t k
 r} z t |   WYd  d  } ~ Xn Xd  S)Nz-or   )Z_fix_compile_argsr   r   extendappendZforcer   mkpathospathdirnamespawnr   r   )r   sourceZoutput_fileZmacrosZinclude_dirsextra_preargsextra_postargs
fixed_argsignorepp_optsZpp_argsmsgr#   r#   r$   
preprocess_   s$    $zUnixCCompiler.preprocessc       	      C   s   |  j  } t j d k r. t j | | |  } y& |  j | | | d | g |  Wn1 t k
 r } z t |   WYd  d  } ~ Xn Xd  S)Nr   z-o)r   sysplatform_osx_supportcompiler_fixupr+   r   r   )	r   objsrcZextZcc_argsr.   r1   r   r2   r#   r#   r$   _compiley   s    		zUnixCCompiler._compiler   c             C   s   |  j  | |  \ } } |  j | d | } |  j | |  r |  j t j j |   |  j |  j | g | |  j	  |  j
 r y |  j |  j
 | g  Wq t k
 r } z t |   WYd  d  } ~ Xq Xn t j d |  d  S)N
output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename
_need_linkr'   r(   r)   r*   r+   r   objectsr   r   r	   r   debug)r   r?   Zoutput_libnamer;   r@   target_langoutput_filenamer2   r#   r#   r$   create_static_lib   s    	"zUnixCCompiler.create_static_libc             C   sI  |  j  | |  \ } } |  j | | |  } | \ } } } t |  | | |  } t | t t d   f  sx t d   | d  k	 r t j j	 | |  } |  j
 | |  r5| |  j | d | g } |	 r d g | d  d  <|
 r |
 | d  d  <| r| j |  |  j t j j |   y | t j k rI|  j d  d   } n |  j d  d   } | d k r|  j rd } t j j | d  d k rd } x d | | k r| d 7} qW|  j | | | <t j d	 k rt j | |  } |  j | |  WqEt k
 r1} z t |   WYd  d  } ~ XqEXn t j d
 |  d  S)Nz%'output_dir' must be a string or Nonez-oz-gr   zc++env   =r   zskipping %s (up-to-date))r<   r   r   
isinstancestrtype	TypeErrorr(   r)   joinr>   r?   r%   r'   r*   r   Z
EXECUTABLEr   r   r   basenamer4   r5   r6   r7   r+   r   r
   r   r@   )r   Ztarget_descr?   rB   r;   r    r!   r"   Zexport_symbolsr@   r-   r.   Z
build_temprA   r/   Zlib_optsZld_argsZlinkerir2   r#   r#   r$   link   sH    		"zUnixCCompiler.linkc             C   s   d | S)Nz-Lr#   )r   dirr#   r#   r$   library_dir_option   s    z UnixCCompiler.library_dir_optionc             C   s   d | k p d | k S)Ngcczg++r#   )r   Zcompiler_namer#   r#   r$   _is_gcc   s    zUnixCCompiler._is_gccc             C   s   t  j j t j d   } t j d  d  d k r< d | St j d  d  d k r] d | St j d  d  d	 k r |  j |  r d
 d | g Sd d | g St j d  d  d k s t j d  d  d k r d | g S|  j |  rt j d  d k r	d | Sd | Sn d | Sd  S)NCCr   r   z-L   Zfreebsdz-Wl,-rpath=   zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(   r)   rL   r   r   r4   r5   rR   )r   rO   r   r#   r#   r$   runtime_library_dir_option   s     2
z(UnixCCompiler.runtime_library_dir_optionc             C   s   d | S)Nz-lr#   )r   libr#   r#   r$   library_option
  s    zUnixCCompiler.library_optionc             C   s.  |  j  | d d } |  j  | d d } |  j  | d d } |  j  | d d } t j d k r t j d  } t j d |  }	 |	 d  k r d	 }
 n |	 j d
  }
 x| D]w} t j	 j
 | |  } t j	 j
 | |  } t j	 j
 | |  } t j	 j
 | |  } t j d k r| j d  sF| j d  r| j d  rt j	 j
 |
 | d
 d   |  } t j	 j
 |
 | d
 d   |  } t j	 j
 |
 | d
 d   |  } t j	 j
 |
 | d
 d   |  } t j	 j |  r| St j	 j |  r| St j	 j |  r| St j	 j |  r | Sq Wd  S)NZlib_typeshareddylib
xcode_stubstaticr   CFLAGSz-isysroot\s+(\S+)/rE   z/System/z/usr/z/usr/local/)r=   r4   r5   r   r   researchgroupr(   r)   rK   
startswithexists)r   dirsrY   r@   Zshared_fZdylib_fZxcode_stub_fZstatic_fZcflagsmZsysrootrO   r[   r\   r^   r]   r#   r#   r$   find_library_file  s>    	""""zUnixCCompiler.find_library_file)__name__
__module____qualname__Zcompiler_typeZexecutablesr4   r5   Zsrc_extensionsZobj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZexe_extensionr   r3   r:   rC   rN   rP   rR   rX   rZ   rh   r#   r#   )r   r$   r   -   sF   				
	6,r   )__doc__r(   r4   ra   Z	distutilsr   Zdistutils.dep_utilr   Zdistutils.ccompilerr   r   r   Zdistutils.errorsr   r   r	   r
   r   r5   r6   r   r#   r#   r#   r$   <module>   s   $"