ó
Nä²Wc           @   s  d  Z  d Z d d l Z d d l Z d d l m Z d d l m Z m Z d d l	 m
 Z
 d d l m Z d d l	 m Z d d l Z e j d	 ƒ y d d
 l m Z Wn e k
 rÀ e Z n Xe j Z e j Z d e f d „  ƒ  YZ e ƒ  Z d e j f d „  ƒ  YZ d S(   s}   Cython.Distutils.build_ext

Implements a version of the Distutils 'build_ext' command, for
building Cython extension modules.s   $Id:$iÿÿÿÿN(   t   DistutilsPlatformError(   t   newert   newer_group(   t   log(   t	   build_ext(   t	   sysconfigsx   Cython.Distutils.build_ext does not properly handle dependencies and is deprectated. Use Cython.Build.build_ext instead.(   t
   basestringt   Optimizationc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s1   d |  _  t j |  j  Œ  |  _ t j ƒ  |  _ d  S(   Nt   OPTt   CFLAGSt   CPPFLAGSt   EXTRA_CFLAGSt
   BASECFLAGSt	   PY_CFLAGS(   s   OPTs   CFLAGSs   CPPFLAGSs   EXTRA_CFLAGSs
   BASECFLAGSs	   PY_CFLAGS(   t   flagsR   t   get_config_varst   statet   config_vars(   t   self(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   __init__!   s         	c         C   s€   d } xs t  |  j |  j ƒ D]\ \ } } | d k	 r g  | j ƒ  D] } | | k rA | ^ qA } d j | ƒ |  j | <q q Wd S(   s.   disable optimization for the C or C++ compilers   -O1s   -O2s   -O3t    N(   s   -O1s   -O2s   -O3(   t   zipR   R   t   Nonet   splitt   joinR   (   R   t
   badoptionst   flagt   optiont   optt   L(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   disable_optimization.   s
    "+c         C   sF   x? t  |  j |  j ƒ D]( \ } } | d k	 r | |  j | <q q Wd S(   s   restore the original stateN(   R   R   R   R   R   (   R   R   R   (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   restore_state7   s    "(   t   __name__t
   __module__R   R   R   (    (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR       s   			R   c           B   s  e  Z d  Z e j j Z e j j Z e j j Z e j j Z e j	 d# d$ d% d d" d e f d& d' d( d) d* d+ d, d- d d" d e f d. d/ d0 d1 g ƒ e j	 d d d d	 d d d d d d g
 ƒ d „  Z d „  Z d „  Z d „  Z d „  Z d  „  Z d! „  Z RS(2   sC   build C/C++ and Cython extensions (compile/link to build directory)s   cython-cpluss   generate C++ source filess   cython-create-listings   write errors to a listing files   cython-line-directivess   emit source line directivess   cython-include-dirs=s    path to the Cython include filess   cython-c-in-temps'   put generated C files in temp directorys   cython-gen-pxis*   generate .pxi file for public declarationss   cython-directives=s   compiler directive overridess
   cython-gdbs$   generate debug information for cygdbs   cython-compile-time-envs   cython compile time environments   pyrex-cpluss   pyrex-create-listings   pyrex-line-directivess   pyrex-include-dirs=s   pyrex-c-in-temps   pyrex-gen-pxis   pyrex-directives=s	   pyrex-gdbc         C   sn   t  j j |  ƒ d |  _ d |  _ d |  _ d  |  _ d  |  _ d |  _	 d |  _
 t |  _ d |  _ d  |  _ d  S(   Ni    (   t
   _build_extR   t   initialize_optionst   cython_cplust   cython_create_listingt   cython_line_directivesR   t   cython_include_dirst   cython_directivest   cython_c_in_tempt   cython_gen_pxit   Falset
   cython_gdbt   no_c_in_tracebackt   cython_compile_time_env(   R   (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR#   {   s    									c         C   s<   | d  d k r% t  |  d | d ƒ St j j |  | ƒ Sd  S(   Ni   t   pyrex_t   cython_(   t   getattrR"   R   t   __getattr__(   R   t   name(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR2   ˆ   s    c         C   s9   | d  d k r( t  |  d | d | ƒ S| |  j | <d  S(   Ni   R/   R0   (   t   setattrt   __dict__(   R   R3   t   value(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   __setattr__Ž   s    c         C   sw   t  j j |  ƒ |  j d  k r+ g  |  _ n- t |  j t ƒ rX |  j j t j	 ƒ |  _ n  |  j
 d  k rs i  |  _
 n  d  S(   N(   R"   R   t   finalize_optionsR'   R   t
   isinstanceR   R   t   ost   pathsepR(   (   R   (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR8   •   s    c         C   sX   |  j  s7 g  |  j D] } t | d t ƒ r d ^ q rD t j ƒ  n  t j j |  ƒ d  S(   NR,   i   (	   R,   t
   extensionsR1   R+   t   optimizationR   R"   R   t   run(   R   t   ext(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR>       s    c         C   sM   |  j  |  j ƒ x6 |  j D]+ } |  j | j | ƒ | _ |  j | ƒ q Wd  S(   N(   t   check_extensions_listR<   t   cython_sourcest   sourcest   build_extension(   R   R?   (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   build_extensions«   s    c   #      C   sC  y0 d d l  m } m } m } d d l m } Wn6 t k
 rh t j ƒ  d } d | GHt	 d ƒ ‚ n Xg  } g  }	 i  }
 |  j
 p“ t | d d ƒ } |  j p® t | d	 d ƒ } |  j pÉ t | d
 d ƒ } |  j pt | d d ƒ p| j o| j j ƒ  d k } |  j pt | d d ƒ } |  j p8t | d t ƒ } |  j pSt | d d- ƒ } |  j } y4 x- | j D]" } | | k rl| j | ƒ qlqlWWn t k
 r¦n Xt | j ƒ | _ x- | j D]" } | | k rÃ| j | ƒ qÃqÃW|  j } t | d ƒ r| j | j ƒ n  | r#d } n d } |  j rŸ|  j sNt | d d ƒ rŸt  j! j" |  j# d ƒ } x< | j$ j% d ƒ d  D] } t  j! j" | | ƒ } q}Wn d- } d- } xõ | D]í } t  j! j& t  j! j' | ƒ ƒ \ } } | d k rñd } n  | d k rS| pt  j! j( | ƒ } | j t  j! j" | | | ƒ ƒ |	 j | ƒ | d |
 | <q²| d k sk| d k r’| d- k s†t) | | ƒ rŸ| } qŸq²| j | ƒ q²W|	 s­| S| j$ } x†|	 D]~} |
 | } | g t | j* pâd. ƒ } | d j ƒ  d k r1t  j! j+ | d  d ƒ r1| | d  d g 7} n  |  j, pIt- | | d ƒ }  |  rq| d- k	 rqt) | | ƒ }  n  |  r+t. j/ d | | ƒ |  j0 t  j! j( | ƒ ƒ |  j r¸t  j1 } n	 |  j2 } | | d | d  | d! | d" | d# | d$ | d% | d& | d' | d( | d) | ƒ}! | | d* |! d+ | ƒ}" q½t. j/ d, | ƒ q½W| S(/   s  
        Walk the list of source files in 'sources', looking for Cython
        source files (.pyx and .py).  Run Cython on all that are
        found, and return a modified 'sources' list with Cython source
        files replaced by the generated C (or C++) files.
        iÿÿÿÿ(   t   CompilationOptionst   default_optionst   compile(   t
   PyrexErrori   s   failed to import Cython: %ss&   Cython does not appear to be installedR%   i    R&   R-   R$   s   c++R*   R,   R.   R(   s   .cpps   .cR)   t   pyrext   .s   .pys   .pyxs   .pxis   .pxdiüÿÿÿiýÿÿÿt   pxdR   s   cythoning %s to %st   use_listing_filet   include_patht   compiler_directivest   output_filet   cplust   emit_linenumst   c_line_in_tracebackt   generate_pxit
   output_dirt	   gdb_debugt   compile_time_envt   optionst   full_module_names+   skipping '%s' Cython extension (up-to-date)N(    (3   t   Cython.Compiler.MainRE   RF   RG   t   Cython.Compiler.ErrorsRH   t   ImportErrort   syst   exc_infoR    R%   R1   R&   R-   R$   t   languaget   lowerR*   R,   R+   R.   R   R'   t   appendt   AttributeErrort   listt   include_dirsR(   t   hasattrt   updatet   inplaceR)   R:   t   pathR   t
   build_tempR3   R   t   splitextt   basenamet   dirnameR   t   dependst   isfilet   forceR   R   t   infot   mkpatht   curdirt	   build_lib(#   R   RB   t	   extensionRE   t   cython_default_optionst   cython_compileRH   t   et   new_sourcesRA   t   cython_targetst   create_listingt   line_directivesR-   RP   R*   R,   R.   t   includest   it
   directivest
   target_extt
   target_dirt   package_namet   newest_dependencyt   sourcet   baseR?   RT   t   module_namet   targetRl   t   rebuildRW   t   result(    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyRA   ³   sº    								$	 	
0				N(   s   cython-cplusNs   generate C++ source files(   s   cython-create-listingNs   write errors to a listing file(   s   cython-line-directivesNs   emit source line directives(   s   cython-c-in-tempNs'   put generated C files in temp directory(   s   cython-gen-pxiNs*   generate .pxi file for public declarations(   s   cython-directives=Ns   compiler directive overrides(   s
   cython-gdbNs$   generate debug information for cygdb(   s   cython-compile-time-envNs   cython compile time environment(   s   pyrex-cplusNs   generate C++ source files(   s   pyrex-create-listingNs   write errors to a listing file(   s   pyrex-line-directivesNs   emit source line directives(   s   pyrex-c-in-tempNs'   put generated C files in temp directory(   s   pyrex-gen-pxiNs*   generate .pxi file for public declarations(   s   pyrex-directives=Ns   compiler directive overrides(   s	   pyrex-gdbNs$   generate debug information for cygdb(   R    R!   t   descriptionR"   R   t   sep_byt   user_optionst   boolean_optionst   help_optionst   extendR   R#   R2   R7   R8   R>   RD   RA   (    (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyR   A   sh      
        
    
								(   t   __doc__t   __revision__R\   R:   t   distutils.errorsR    t   distutils.dep_utilR   R   t	   distutilsR   t   distutils.commandR   R"   R   t   warningst   warnt   __builtin__R   R[   t   strt   extension_name_ret   show_compilerst   objectR   R=   (    (    (    s=   /bar/jli/Chip-seq/script/cython/Cython/Distutils/build_ext.pyt   <module>   s(   
			