;
Ρβ"Ic               @   s²   d  Z  d 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 d	   Z Gd
   d e	  Z d S(   u9  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'
u?   $Id: unixccompiler.py 65206 2008-07-23 16:10:53Z georg.brandl $i    N(   u	   sysconfig(   u   newer(   u	   CCompileru   gen_preprocess_optionsu   gen_lib_options(   u   DistutilsExecErroru   CompileErroru   LibErroru	   LinkError(   u   logc       	   
   C   sκ  d } } t |   }  t j   d } t | j d  d  } | d k  o d } } n d | k } d | k } | p d t j k oF xC y$ |  j d  } |  | | d  =Wq t	 k
 o	 PYq Xq n d t j k o# | o |  t j d j   }  n | o? y$ |  j d  } |  | | d  =WqHt	 k
 o YqHXn d } d | k o! | j d  } | | d } n/ d |  k o! |  j d  } |  | d } n | o5 t j j |  o! t j d	 |  t j d
  n |  S(   ue  
    This function will strip '-isysroot PATH' and '-arch ARCH' from the
    compile flags if the user has specified one them in extra_compile_flags.

    This is needed because '-arch ARCH' adds another architecture to the
    build, without a way to remove an architecture. Furthermore GCC will
    barf if multiple '-isysroot' arguments are present.
    i   u   .i    i   u   -archu	   -isysrootu	   ARCHFLAGSi   u4   Compiling with an SDK that doesn't seem to exist: %su$   Please check your Xcode installationFTN(   u   Falseu   listu   osu   unameu   intu   splitu   Trueu   environu   indexu
   ValueErroru   Noneu   pathu   isdiru   logu   warn(	   u   compiler_sou   cc_argsu	   stripArchu   stripSysrootu   kernel_versionu   major_versionu   indexu   sysrootu   idx(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   _darwin_compiler_fixup+   sF    	

	c             B   sn  |  Ee  Z d  Z i d d 6d g d 6d g d 6d g d 6d d g d 6d g d 6d	 d
 g d 6d d 6Z e j d d  d k o d g e d <n d d d d d d g Z d Z d Z	 d Z
 d Z d Z Z Z e j d k o
 d Z n d d d d d d  Z d   Z d d d d   Z d d d d d d d d d d d! 
 Z d"   Z d#   Z d$   Z d d%  Z d S(&   u   unixu   preprocessoru   ccu   compileru   compiler_sou   compiler_cxxu   -sharedu	   linker_sou
   linker_exeu   aru   -cru   archiveru   ranlibNi   u   darwinu   .cu   .Cu   .ccu   .cxxu   .cppu   .mu   .ou   .au   .sou   .dylibu   lib%s%su   cygwinu   .exec             C   s8  |  j  d  | |  } | \ } } } t | |  }	 |  j |	 }
 | o |
 j d | g  n | o | |
 d  d  <n | o |
 j |  n |
 j |  |  j p | d  k p t | |  oo | o |  j t	 j
 j |   n y |  j |
  Wq4t k
 o' } z t |   WYd  d  } ~ Xq4Xn d  S(   Nu   -oi    (   u   _fix_compile_argsu   Noneu   gen_preprocess_optionsu   preprocessoru   extendu   appendu   forceu   neweru   mkpathu   osu   pathu   dirnameu   spawnu   DistutilsExecErroru   CompileError(   u   selfu   sourceu   output_fileu   macrosu   include_dirsu   extra_preargsu   extra_postargsu
   fixed_argsu   ignoreu   pp_optsu   pp_argsu   msg(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu
   preprocess   s$    'c       	      C   s   |  j  } t j d k o t | | |  } n y& |  j | | | d | g |  Wn3 t k
 o' } z t |   WYd  d  } ~ Xn Xd  S(   Nu   darwinu   -o(   u   compiler_sou   sysu   platformu   _darwin_compiler_fixupu   spawnu   DistutilsExecErroru   CompileError(	   u   selfu   obju   srcu   extu   cc_argsu   extra_postargsu   pp_optsu   compiler_sou   msg(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   _compileͺ   s    	i    c             C   sς   |  j  | |  \ } } |  j | d | } |  j | |  o |  j t j j |   |  j |  j | g | |  j	  |  j
 oU y |  j |  j
 | g  WqΪ t k
 o' } z t |   WYd  d  } ~ XqΪ Xqξ n t j d |  d  S(   Nu
   output_diru   skipping %s (up-to-date)(   u   _fix_object_argsu   library_filenameu
   _need_linku   mkpathu   osu   pathu   dirnameu   spawnu   archiveru   objectsu   ranlibu   DistutilsExecErroru   LibErroru   logu   debug(   u   selfu   objectsu   output_libnameu
   output_diru   debugu   target_langu   output_filenameu   msg(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   create_static_lib΄   s    
(c             C   sw  |  j  | |  \ } } |  j | | |  } | \ } } } t |  | | |  } t | t t d   f  p t d   n | d  k	 o t j	 j
 | |  } n |  j | |  o­| |  j | d | g } |	 o d g | d  d  <n |
 o |
 | d  d  <n | o | j |  n |  j t j	 j |   yξ | t j k o |  j d  d   } n |  j d  d   } | d k oo |  j oe d } t j	 j | d  d k o- d } x$ d | | k o | d 7} q»Wn |  j | | | <n t j d	 k o t | |  } n |  j | |  Wqst k
 o' } z t |   WYd  d  } ~ XqsXn t j d
 |  d  S(   Nu%   'output_dir' must be a string or Noneu   -ou   -gi    u   c++u   envi   u   =u   darwinu   skipping %s (up-to-date)(   u   _fix_object_argsu   _fix_lib_argsu   gen_lib_optionsu
   isinstanceu   stru   typeu   Noneu	   TypeErroru   osu   pathu   joinu
   _need_linku   objectsu   extendu   mkpathu   dirnameu	   CCompileru
   EXECUTABLEu
   linker_exeu	   linker_sou   compiler_cxxu   basenameu   sysu   platformu   _darwin_compiler_fixupu   spawnu   DistutilsExecErroru	   LinkErroru   logu   debug(   u   selfu   target_descu   objectsu   output_filenameu
   output_diru	   librariesu   library_dirsu   runtime_library_dirsu   export_symbolsu   debugu   extra_preargsu   extra_postargsu
   build_tempu   target_langu
   fixed_argsu   lib_optsu   ld_argsu   linkeru   iu   msg(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   linkΞ   sJ    		 $c             C   s   d | S(   Nu   -L(    (   u   selfu   dir(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   library_dir_option  s    c             C   sγ   t  j j t j d   } t j d  d  d k o	 d | St j d  d  d k o	 d | St j d  d  d	 k p t j d  d  d
 k o d | g S| d  d  d k p | d  d  d k o	 d | Sd | Sd  S(   Nu   CCi   u   darwinu   -Li   u   hp-uxu   +s -Li   u   irix646u   osf1V5u   -rpathi   u   gccu   g++u   -Wl,-Ru   -R(   u   osu   pathu   basenameu	   sysconfigu   get_config_varu   sysu   platform(   u   selfu   diru   compiler(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   runtime_library_dir_option  s    		4.	c             C   s   d | S(   Nu   -l(    (   u   selfu   lib(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   library_option%  s    c             C   sΫ   |  j  | d d } |  j  | d d } |  j  | d d } x | D] } t j j | |  } t j j | |  }	 t j j | |  }
 t j j |	  o |	 St j j |  o | St j j |
  o |
 SqF Wd  S(   Nu   lib_typeu   sharedu   dylibu   static(   u   library_filenameu   osu   pathu   joinu   existsu   None(   u   selfu   dirsu   libu   debugu   shared_fu   dylib_fu   static_fu   diru   sharedu   dylibu   static(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   find_library_file(  s     	(   u   __name__u
   __module__u   compiler_typeu   Noneu   executablesu   sysu   platformu   src_extensionsu   obj_extensionu   static_lib_extensionu   shared_lib_extensionu   dylib_lib_extensionu   static_lib_formatu   shared_lib_formatu   dylib_lib_formatu   exe_extensionu
   preprocessu   _compileu   create_static_libu   linku   library_dir_optionu   runtime_library_dir_optionu   library_optionu   find_library_file(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   UnixCCompilerj   s>   







		6			u   UnixCCompiler(   u   __doc__u   __revision__u   osu   sysu	   distutilsu	   sysconfigu   distutils.dep_utilu   neweru   distutils.ccompileru	   CCompileru   gen_preprocess_optionsu   gen_lib_optionsu   distutils.errorsu   DistutilsExecErroru   CompileErroru   LibErroru	   LinkErroru   logu   _darwin_compiler_fixupu   UnixCCompiler(    (    (    u4   /mit/python/lib/python3.0/distutils/unixccompiler.pyu   <module>   s   "	?