Ñò
$8Zc        	   @   s¬   d  Z  d Z d d k Z d d k l Z l Z l Z l Z l Z l	 Z	 d d k
 l Z l Z l Z d d k l Z d d k l Z d d k l Z d	 e f d
 „  ƒ  YZ d S(   sƒ   distutils.bcppcompiler

Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
s   $Id$iÿÿÿÿN(   t   DistutilsExecErrort   DistutilsPlatformErrort   CompileErrort   LibErrort	   LinkErrort   UnknownFileError(   t	   CCompilert   gen_preprocess_optionst   gen_lib_options(   t
   write_file(   t   newer(   t   logt   BCPPCompilerc           B   sú   e  Z d  Z d Z h  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 RS(   s   Concrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    t   bcpps   .cs   .ccs   .cpps   .cxxs   .objs   .libs   .dlls   %s%ss   .exei    c         C   sÂ   t  i |  | | | ƒ 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(   Ns	   bcc32.exes   ilink32.exes   tlib.exes   /tWMs   /O2s   /qs   /g0s   /Ods   /Tpds   /Gns   /xs   /r(   R   t   __init__t   cct   linkert   libt   Nonet   preprocess_optionst   compile_optionst   compile_options_debugt   ldflags_sharedt   ldflags_shared_debugt   ldflags_statict   ldflags_exet   ldflags_exe_debug(   t   selft   verboset   dry_runt   force(    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyR   9   s    					c	         C   sð  |  i  | | | | | | ƒ \ } }	 } }
 } | p g  } | i d ƒ | o | i |  i ƒ n | i |  i ƒ xw|	 D]o} y | | \ } } Wn t j
 o
 qy n Xt i i | ƒ } t i i | ƒ } |  i	 t i i
 | ƒ ƒ | d j o qy n | d j oE y |  i d d | | g ƒ Wqy t j
 o } t | ‚ qy Xqy n | |  i j o
 d } n! | |  i j o
 d } n d } d | } y4 |  i |  i g | |
 | | g | | g ƒ Wqy t j
 o } t | ‚ qy Xqy W|	 S(	   Ns   -cs   .ress   .rct   brcc32s   -fot    s   -Ps   -o(   t   _setup_compilet   appendt   extendR   R   t   KeyErrort   ost   patht   normpatht   mkpatht   dirnamet   spawnR    R   t   _c_extensionst   _cpp_extensionsR   (   R   t   sourcest
   output_dirt   macrost   include_dirst   debugt   extra_preargst   extra_postargst   dependst   objectst   pp_optst   buildt   compile_optst   objt   srct   extt   msgt	   input_optt
   output_opt(    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt   compileU   sH     


.c   	      C   s¯   |  i  | | ƒ \ } } |  i | d | ƒ} |  i | | ƒ o[ | d g | } | o n y |  i |  i g | ƒ Wq« t j
 o } t | ‚ q« Xn t i d | ƒ d  S(   NR.   s   /us   skipping %s (up-to-date)(	   t   _fix_object_argst   library_filenamet
   _need_linkR*   R   R    R   R   R1   (	   R   R5   t   output_libnameR.   R1   t   target_langt   output_filenamet   lib_argsR<   (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt   create_static_lib–   s    c          C   s×  |  i  | | ƒ \ } } |  i | | | ƒ \ } } } | o t i d t | ƒ ƒ n | d  j	 o t i i | | ƒ } n |  i	 | | ƒ o3| t
 i j o) d } |	 o |  i } qî |  i } n& d } |	 o |  i } n |  i } | d  j o
 d } nµ t i i | ƒ \ } } t i i | ƒ \ } } t i i | d ƒ } t i i | d | ƒ } d g } x, | p g  D] } | i d | | f ƒ q{W|  i t | | f d	 | ƒ t t i i | ƒ } | g } g  } x] | D]U } t i i t i i | ƒ ƒ \ } } | d
 j o | i | ƒ qä| i | ƒ qäWx+ | D]# } | i d t i i | ƒ ƒ qDW| i d ƒ | i | ƒ | i d | g ƒ | i d ƒ xN | D]F } |  i | | |	 ƒ } | d  j o | i | ƒ q¬| i | ƒ q¬W| i d ƒ | i d ƒ | i d | g ƒ | i d ƒ | i | ƒ |
 o |
 | d *n | o | i | ƒ n |  i t i i | ƒ ƒ y |  i |  i g | ƒ WqÓt j
 o } t | ‚ qÓXn t i  d | ƒ d  S(   Ns7   I don't know what to do with 'runtime_library_dirs': %st   c0w32t   c0d32R    i    s   %s.deft   EXPORTSs     %s=_%ss
   writing %ss   .ress   /L%ss   /L.t   ,s   ,,t   import32t   cw32mts   skipping %s (up-to-date)(!   R@   t   _fix_lib_argsR   t   warnt   strR   R%   R&   t   joinRB   R   t
   EXECUTABLER   R   R   R   t   splitt   splitextR)   R"   t   executeR	   t   mapR'   t   normcaseR#   t   find_library_fileR(   R*   R   R    R   R1   (    R   t   target_descR5   RE   R.   t	   librariest   library_dirst   runtime_library_dirst   export_symbolsR1   R2   R3   t
   build_tempRD   t   startup_objt   ld_argst   def_filet   headt   tailt   modnameR;   t   temp_dirt   contentst   symt   objects2t	   resourcest   filet   baset   lR   t   libfileR<   (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt   link¯   s„    	

	 	 $ ! c   	      C   sŸ   | o( | d } | d | d | | f } n | d | f } xY | D]M } xD | D]< } t  i i | |  i | ƒ ƒ } t  i i | ƒ o | SqS WqF Wd  Sd  S(   Nt   _dt   _bcpp(   R%   R&   RQ   RA   t   existsR   (	   R   t   dirsR   R1   t   dlibt	   try_namest   dirt   nameRm   (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyRX   8  s    

  R    c         C   s)  | d  j o
 d } n g  } x| D]ý } t i i t i i | ƒ ƒ \ } } | |  i d d g j o t d | | f ‚ n | o t i i | ƒ } n | d j o$ | i t i i	 | | | ƒ ƒ q$ | d j o$ | i t i i	 | | d ƒ ƒ q$ | i t i i	 | | |  i
 ƒ ƒ q$ W| S(   NR    s   .rcs   .ress"   unknown file type '%s' (from '%s')(   R   R%   R&   RT   RW   t   src_extensionsR   t   basenameR"   RQ   t   obj_extension(   R   t   source_filenamest	   strip_dirR.   t	   obj_namest   src_nameRk   R;   (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt   object_filenamesR  s&     
 $$$c         C   s   |  i  d  | | ƒ \ } } } t | | ƒ } d g | }	 | d  j	 o |	 i d | ƒ n | o | |	 d *n | o |	 i | ƒ n |	 i | ƒ |  i p | d  j p t | | ƒ o_ | o |  i t i	 i
 | ƒ ƒ n y |  i |	 ƒ Wqt j
 o }
 |
 GHt |
 ‚ qXn d  S(   Ns	   cpp32.exes   -oi    (   t   _fix_compile_argsR   R   R"   R#   R   R
   R(   R%   R&   R)   R*   R    R   (   R   t   sourcet   output_fileR/   R0   R2   R3   t   _R6   t   pp_argsR<   (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt
   preprocessn  s$    	'N(   t   __name__t
   __module__t   __doc__t   compiler_typet   executablesR+   R,   Rw   Ry   t   static_lib_extensiont   shared_lib_extensiont   static_lib_formatt   shared_lib_formatt   exe_extensionR   R   R?   RG   Rn   RX   R~   R„   (    (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyR      sJ   	

B|(   R‡   t   __revision__R%   t   distutils.errorsR    R   R   R   R   R   t   distutils.ccompilerR   R   R   t   distutils.file_utilR	   t   distutils.dep_utilR
   t	   distutilsR   R   (    (    (    s,   /usr/lib/python2.6/distutils/bcppcompiler.pyt   <module>   s   .