;
Ρβ"Ic            
   @   s©   d  Z  d Z d d l Z d d l m Z m Z m Z m Z m Z m	 Z	 d d l
 m Z m Z m Z d d l m Z d d l m Z d d l m Z Gd	   d
 e  Z d S(   u   distutils.bcppcompiler

Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
uB   $Id: bcppcompiler.py 61003 2008-02-23 18:30:17Z christian.heimes $i    N(   u   DistutilsExecErroru   DistutilsPlatformErroru   CompileErroru   LibErroru	   LinkErroru   UnknownFileError(   u	   CCompileru   gen_preprocess_optionsu   gen_lib_options(   u
   write_file(   u   newer(   u   logc             B   s   |  Ee  Z d  Z d Z i  Z d g Z d d d g Z e e Z d Z d Z	 d Z
 d	 Z Z d
 Z d d d d  Z d d d d d d d d  Z d d d d  Z d d d d d d d d d d d 
 Z d d  Z d d d  Z d d d d d d  Z d S(   u   Concrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    u   bcppu   .cu   .ccu   .cppu   .cxxu   .obju   .libu   .dllu   %s%su   .exei    c             C   sΒ   t  j |  | | |  d |  _ d |  _ d |  _ d  |  _ d d d d g |  _ d d d d g |  _ d	 d
 d d g |  _	 d	 d
 d d g |  _
 g  |  _ d
 d d g |  _ d
 d d d g |  _ d  S(   Nu	   bcc32.exeu   ilink32.exeu   tlib.exeu   /tWMu   /O2u   /qu   /g0u   /Odu   /Tpdu   /Gnu   /xu   /r(   u	   CCompileru   __init__u   ccu   linkeru   libu   Noneu   preprocess_optionsu   compile_optionsu   compile_options_debugu   ldflags_sharedu   ldflags_shared_debugu   ldflags_staticu   ldflags_exeu   ldflags_exe_debug(   u   selfu   verboseu   dry_runu   force(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   __init__7   s    					c	             C   s  |  j  | | | | | |  \ } }	 } }
 } | p g  } | j d  | o | j |  j  n | j |  j  x’|	 D]} y | | \ } } Wn t k
 o wy Yn Xt j j |  } t j j |  } |  j	 t j j
 |   | d k o qy n | d k oZ y |  j d d | | g  Wqy t k
 o' } z t |   WYd  d  } ~ Xqy Xqy n | |  j k o
 d } n! | |  j k o
 d } n d } d | } y4 |  j |  j g | |
 | | g | | g  Wqy t k
 o' } z t |   WYd  d  } ~ Xqy Xqy W|	 S(	   Nu   -cu   .resu   .rcu   brcc32u   -fou    u   -Pu   -o(   u   _setup_compileu   appendu   extendu   compile_options_debugu   compile_optionsu   KeyErroru   osu   pathu   normpathu   mkpathu   dirnameu   spawnu   DistutilsExecErroru   CompileErroru   _c_extensionsu   _cpp_extensionsu   cc(   u   selfu   sourcesu
   output_diru   macrosu   include_dirsu   debugu   extra_preargsu   extra_postargsu   dependsu   objectsu   pp_optsu   buildu   compile_optsu   obju   srcu   extu   msgu	   input_optu
   output_opt(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   compileS   sH     	 


.$c       	      C   sΔ   |  j  | |  \ } } |  j | d | } |  j | |  op | d g | } | o n y |  j |  j g |  Wqΐ t k
 o' } z t |   WYd  d  } ~ Xqΐ Xn t j d |  d  S(   Nu
   output_diru   /uu   skipping %s (up-to-date)(	   u   _fix_object_argsu   library_filenameu
   _need_linku   spawnu   libu   DistutilsExecErroru   LibErroru   logu   debug(	   u   selfu   objectsu   output_libnameu
   output_diru   debugu   target_langu   output_filenameu   lib_argsu   msg(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   create_static_lib   s    $c              C   s  |  j  | |  \ } } |  j | | |  \ } } } | o t j d t |   n | d  k	 o t j j | |  } n |  j	 | |  or| t
 j k o; d } |	 o |  j d  d   } q|  j d  d   } n8 d } |	 o |  j d  d   } n |  j d  d   } | d  k o
 d } n΅ t j j |  \ } } t j j |  \ } } t j j | d  } t j j | d |  } d g } x, | p g  D] } | j d | | f  qW|  j t | | f d	 |  t t j j |  } | g } g  } x] | D]U } t j j t j j |   \ } } | d
 k o | j |  q| j |  qWx+ | D]# } | j d t j j |   qhW| j d  | j |  | j d | g  | j d  xN | D]F } |  j | | |	  } | d  k o | j |  qΠ| j |  qΠW| j d  | j d  | j d | g  | j d  | j |  |
 o |
 | d  d  <n | o | j |  n |  j t j j |   y |  j |  j g |  Wqt k
 o' } z t |   WYd  d  } ~ XqXn t j  d |  d  S(   Nu7   I don't know what to do with 'runtime_library_dirs': %su   c0w32u   c0d32u    i    u   %s.defu   EXPORTSu     %s=_%su
   writing %su   .resu   /L%su   /L.u   ,u   ,,u   import32u   cw32mtu   skipping %s (up-to-date)(!   u   _fix_object_argsu   _fix_lib_argsu   logu   warnu   stru   Noneu   osu   pathu   joinu
   _need_linku	   CCompileru
   EXECUTABLEu   ldflags_exe_debugu   ldflags_exeu   ldflags_shared_debugu   ldflags_sharedu   splitu   splitextu   dirnameu   appendu   executeu
   write_fileu   mapu   normpathu   normcaseu   extendu   find_library_fileu   mkpathu   spawnu   linkeru   DistutilsExecErroru	   LinkErroru   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   startup_obju   ld_argsu   def_fileu   headu   tailu   modnameu   extu   temp_diru   contentsu   symu   objects2u	   resourcesu   fileu   baseu   lu   libu   libfileu   msg(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   link­   s    	
	 	 $ ! $c       	      C   s   | o( | d } | d | d | | f } n | d | f } xY | D]M } xD | D]< } t  j j | |  j |   } t  j j |  o | SqS WqF Wd  Sd  S(   Nu   _du   _bcpp(   u   osu   pathu   joinu   library_filenameu   existsu   None(	   u   selfu   dirsu   libu   debugu   dlibu	   try_namesu   diru   nameu   libfile(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   find_library_file6  s    

  u    c             C   s,  | d  k o
 d } n g  } x| D] } t j j t j j |   \ } } | |  j d d g k o t d | | f   n | o t j j |  } n | d k o$ | j t j j	 | | |   q$ | d k o$ | j t j j	 | | d   q$ | j t j j	 | | |  j
   q$ W| S(   Nu    u   .rcu   .resu"   unknown file type '%s' (from '%s')(   u   Noneu   osu   pathu   splitextu   normcaseu   src_extensionsu   UnknownFileErroru   basenameu   appendu   joinu   obj_extension(   u   selfu   source_filenamesu	   strip_diru
   output_diru	   obj_namesu   src_nameu   baseu   ext(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   object_filenamesP  s$     
 $$$c             C   s@  |  j  d  | |  \ } } } t | |  } d g | }	 | d  k	 o |	 j d |  n | o | |	 d  d  <n | o |	 j |  n |	 j |  |  j p | d  k p t | |  oy | o |  j t j	 j
 |   n y |  j |	  Wq<t k
 o1 }
 z t |
  t |
   WYd  d  }
 ~
 Xq<Xn d  S(   Nu	   cpp32.exeu   -oi    (   u   _fix_compile_argsu   Noneu   gen_preprocess_optionsu   appendu   extendu   forceu   neweru   mkpathu   osu   pathu   dirnameu   spawnu   DistutilsExecErroru   printu   CompileError(   u   selfu   sourceu   output_fileu   macrosu   include_dirsu   extra_preargsu   extra_postargsu   _u   pp_optsu   pp_argsu   msg(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu
   preprocessk  s$    	'
N(   u   __name__u
   __module__u   __doc__u   compiler_typeu   executablesu   _c_extensionsu   _cpp_extensionsu   src_extensionsu   obj_extensionu   static_lib_extensionu   shared_lib_extensionu   static_lib_formatu   shared_lib_formatu   exe_extensionu   __init__u   Noneu   compileu   create_static_libu   linku   find_library_fileu   object_filenamesu
   preprocess(   u
   __locals__(    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   BCPPCompiler   sJ   
	

B|u   BCPPCompiler(   u   __doc__u   __revision__u   osu   distutils.errorsu   DistutilsExecErroru   DistutilsPlatformErroru   CompileErroru   LibErroru	   LinkErroru   UnknownFileErroru   distutils.ccompileru	   CCompileru   gen_preprocess_optionsu   gen_lib_optionsu   distutils.file_utilu
   write_fileu   distutils.dep_utilu   neweru	   distutilsu   logu   BCPPCompiler(    (    (    u3   /mit/python/lib/python3.0/distutils/bcppcompiler.pyu   <module>   s   	.