;
Ρβ"Ic            	   @   sr   d  Z  d Z d d l Z d d l m Z d d l Td d l m Z d d l m	 Z	 d   Z
 Gd	   d
 e  Z d S(   u΄   distutils.command.build_clib

Implements the Distutils 'build_clib' command, to build a C/C++ library
that is included in the module distribution and needed by an extension
module.u@   $Id: build_clib.py 58495 2007-10-16 18:12:55Z guido.van.rossum $i    N(   u   Command(   u   *(   u   customize_compiler(   u   logc              C   s   d d l  m }  |    d  S(   Ni    (   u   show_compilers(   u   distutils.ccompileru   show_compilers(   u   show_compilers(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   show_compilers   s    c             B   s   |  Ee  Z d  Z d d d d d g Z d d
 g Z d d d e f g Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d S(   u/   build C/C++ libraries used by Python extensionsu
   build-clibu   bu%   directory to build C/C++ libraries tou
   build-tempu   tu,   directory to put temporary build by-productsu   debugu   gu"   compile with debugging informationu   forceu   fu2   forcibly build everything (ignore file timestamps)u	   compiler=u   cu   specify the compiler typeu   help-compileru   list available compilersc             C   sU   d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d |  _ d  |  _	 d  S(   Ni    (
   u   Noneu
   build_clibu
   build_tempu	   librariesu   include_dirsu   defineu   undefu   debugu   forceu   compiler(   u   self(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   initialize_options6   s    								c             C   s¦   |  j  d d d d	 d
 d  |  j j |  _ |  j o |  j |  j  n |  j d  k o |  j j p g  |  _ n t |  j t  o |  j j t	 j
  |  _ n d  S(   Nu   buildu
   build_tempu
   build_clibu   compileru   debugu   force(   u
   build_tempu
   build_clib(   u
   build_tempu
   build_temp(   u   compileru   compiler(   u   debugu   debug(   u   forceu   force(   u   set_undefined_optionsu   distributionu	   librariesu   check_library_listu   include_dirsu   Noneu
   isinstanceu   stru   splitu   osu   pathsep(   u   self(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   finalize_optionsF   s    	
c             C   s  |  j  p d  Sd d l m } | d |  j d |  j d |  j  |  _ t |  j  |  j d  k	 o |  j j	 |  j  n |  j
 d  k	 o1 x. |  j
 D] \ } } |  j j | |  q Wn |  j d  k	 o( x% |  j D] } |  j j |  qΥ Wn |  j |  j   d  S(   Ni    (   u   new_compileru   compileru   dry_runu   force(   u	   librariesu   distutils.ccompileru   new_compileru   compileru   dry_runu   forceu   customize_compileru   include_dirsu   Noneu   set_include_dirsu   defineu   define_macrou   undefu   undefine_macrou   build_libraries(   u   selfu   new_compileru   nameu   valueu   macro(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   run`   s$    
	
 
 c             C   sώ   t  | t  p t d   n xΧ | D]Ο } t  | t  o# t |  d k o t d   n t  | d t  o t d   n d | d k p$ t j d k o, t j | d k o t d | d   n t  | d t  p t d	   q' q' Wd
 S(   u:  Ensure that the list of libraries (presumably provided as a
           command option 'libraries') is valid, i.e. it is a list of
           2-tuples, where the tuples are (library_name, build_info_dict).
           Raise DistutilsSetupError if the structure is invalid anywhere;
           just returns otherwise.u+   'libraries' option must be a list of tuplesi   u*   each element of 'libraries' must a 2-tuplei    uN   first element of each tuple in 'libraries' must be a string (the library name)u   /u;   bad library name '%s': may not contain directory separatorsi   uM   second element of each tuple in 'libraries' must be a dictionary (build info)N(	   u
   isinstanceu   listu   DistutilsSetupErroru   tupleu   lenu   stru   osu   sepu   dict(   u   selfu	   librariesu   lib(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   check_library_listx   s"     $5c             C   s@   |  j  p d  Sg  } x$ |  j  D] \ } } | j |  q W| S(   N(   u	   librariesu   Noneu   append(   u   selfu	   lib_namesu   lib_nameu
   build_info(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   get_library_names   s    

 c             C   s   |  j  |  j  g  } xk |  j D]` \ } } | j d  } | d  k p t | t t f  o t d |   n | j |  q  W| S(   Nu   sourcesuf   in 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames(	   u   check_library_listu	   librariesu   getu   Noneu
   isinstanceu   listu   tupleu   DistutilsSetupErroru   extend(   u   selfu	   filenamesu   lib_nameu
   build_infou   sources(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   get_source_files£   s    
 $c             C   sρ   xκ | D]β \ } } | j  d  } | d  k p t | t t f  o t d |   n t |  } t j d |  | j  d  } | j  d  } |  j j	 | d |  j
 d | d | d |  j } |  j j | | d |  j d |  j q Wd  S(   Nu   sourcesuf   in 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenamesu   building '%s' libraryu   macrosu   include_dirsu
   output_diru   debug(   u   getu   Noneu
   isinstanceu   listu   tupleu   DistutilsSetupErroru   logu   infou   compileru   compileu
   build_tempu   debugu   create_static_libu
   build_clib(   u   selfu	   librariesu   lib_nameu
   build_infou   sourcesu   macrosu   include_dirsu   objects(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   build_libraries²   s&     $		N(   u
   build-clibu   bu%   directory to build C/C++ libraries to(   u
   build-tempu   tu,   directory to put temporary build by-products(   u   debugu   gu"   compile with debugging information(   u   forceu   fu2   forcibly build everything (ignore file timestamps)(   u	   compiler=u   cu   specify the compiler type(   u   __name__u
   __module__u   descriptionu   user_optionsu   boolean_optionsu   Noneu   show_compilersu   help_optionsu   initialize_optionsu   finalize_optionsu   runu   check_library_listu   get_library_namesu   get_source_filesu   build_libraries(   u
   __locals__(    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu
   build_clib   s*   
     							u
   build_clib(   u   __doc__u   __revision__u   osu   distutils.coreu   Commandu   distutils.errorsu   distutils.sysconfigu   customize_compileru	   distutilsu   logu   show_compilersu
   build_clib(    (    (    u9   /mit/python/lib/python3.0/distutils/command/build_clib.pyu   <module>   s   
	