� {fc @ s� d Z d Z d d l Z d d l Z d d l Z d d l Ty d d l Z Wn e k rc d Z n Xd d d � � YZ d � Z d S( sm distutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.s $Id$i����N( t *t Extensionc B s> e Z d Z d d d d d d d d d d d d d d � Z RS( s4 Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. c K sM | | _ | | _ | p g | _ | p* g | _ | p9 g | _ | pH g | _ | pW g | _ | pf g | _ | pu g | _ | p� g | _ | p� g | _ | p� g | _ | p� g | _ | p� g | _ | | _ t | � rI| j � } | j � t t | � } d t j | d � } t d k r2t j | � qIt j j | d � n d S( Ns Unknown Extension options: s , s ( t namet sourcest include_dirst define_macrost undef_macrost library_dirst librariest runtime_library_dirst extra_objectst extra_compile_argst extra_link_argst export_symbolst swig_optst dependst languaget lent keyst sortt mapt reprt stringt joint warningst Nonet warnt syst stderrt write( t selfR R R R R R R R R R R R R R R t kwt Lt msg( ( s+ /usr/lib64/python2.7/distutils/extension.pyt __init__Z s. N( t __name__t __module__t __doc__R R" ( ( ( s+ /usr/lib64/python2.7/distutils/extension.pyR s <c C s� d d l m } m } m } d d l m } d d l m } | | � } | | d d d d d d d d d d �} zag } xT| j � } | d k r� Pn | j | � r� q~ | d | d k o� d k n r� | j d | � q~ q� n | | | � } | | � } | d } t | g � } d } x�| d D]�} | d k rZ| j | � d } q/n t j j | � d } | d d !} | d } | d( k r�| j j | � q/| d k r�| j j | � q/| d k r0t j | d � } | d k r| j j | d f � q�| j j | d | !| | d f � q/| d k rO| j j | � q/| d k rn| j j | � q/| d k r�| j j | � q/| d k r�| j j | � q/| d k r�| j j | � q/| d k r�| j } q/| d k r�| j } q/| d k r| j } q/| d! k rD| j j | � | s�| j } q�q/| d k r\| j } q/| d! k r�| j j | � | s�| j } q�q/| d) k r�| j j | � q/| j d' | � q/W| j | � q~ WWd | j � X| S(* Ni����( t parse_makefilet expand_makefile_varst _variable_rx( t TextFile( t split_quotedt strip_commentsi t skip_blankst join_linest lstrip_wst rstrip_wsi R s '%s' lines not handled yeti s .cs .ccs .cpps .cxxs .c++s .ms .mms -Is -Dt =s -Us -Cs -ls -Ls -Rs -rpaths -Xlinkers -Xcompilers -us .as .sos .sls .os .dylibs unrecognized argument '%s'( s .cs .ccs .cpps .cxxs .c++s .ms .mm( s .as .sos .sls .os .dylib( t distutils.sysconfigR&