;ò
�ü?c           @   sw   d  Z  d Z d k Z d k Z d k Z d k Ty d k Z Wn e j
 o e Z n Xd f  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: extension.py,v 1.18 2003/01/27 16:30:36 akuchling Exp $N(   s   *s	   Extensionc           B   s;   t  Z d  Z e e e e e e e e e e e e d „ Z RS(   sÀ  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.
      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   sª  t  | ƒ t j p
 t d ‚ t  | ƒ t j o  t t  | ƒ t g t | ƒ j p
 t d ‚ | |  _ | |  _ | p g  |  _	 | p g  |  _
 | p g  |  _ | p g  |  _ | p g  |  _ | p g  |  _ |	 p g  |  _ |
 p g  |  _ | p g  |  _ | p g  |  _ | p g  |  _ | |  _ t | ƒ oq | i ƒ  } | i ƒ  t t | ƒ } d t i | d ƒ } t t j	 o t i | ƒ q¦t  i! i" | d ƒ n d  S(   Ns   'name' must be a strings#   'sources' must be a list of stringss   Unknown Extension options: s   , s   
(#   s   types   names
   StringTypes   AssertionErrors   sourcess   ListTypes   maps   lens   selfs   include_dirss   define_macross   undef_macross   library_dirss	   librariess   runtime_library_dirss   extra_objectss   extra_compile_argss   extra_link_argss   export_symbolss   dependss   languages   kws   keyss   Ls   sorts   reprs   strings   joins   msgs   warningss   Nones   warns   syss   stderrs   write(   s   selfs   names   sourcess   include_dirss   define_macross   undef_macross   library_dirss	   librariess   runtime_library_dirss   extra_objectss   extra_compile_argss   extra_link_argss   export_symbolss   dependss   languages   kws   msgs   L(    (    s0   /mit/python/lib/python2.3/distutils/extension.pys   __init__W   s.    @			(   s   __name__s
   __module__s   __doc__s   Nones   __init__(    (    (    s0   /mit/python/lib/python2.3/distutils/extension.pys	   Extension   s   9 c         C   sÙ  d k  l } l }	 l }
 d k l } d k l } | |  ƒ } | |  d d d d d d d d d	 d ƒ} g  } x_n oW| i ƒ  } | t j o Pn |
 i | ƒ o qy n | d
 | d j o
 d j n o | i d | ƒ qy n |	 | | ƒ } | | ƒ } | d
 } t | g  ƒ } t } x–| d D]Š} | t j	 o | i | ƒ t } q1n t i i | ƒ d } | d
 d !} | d } | d d d d d d d f j o | i i | ƒ q1| d j o | i i | ƒ q1| d j ob t  i! | d ƒ } | d j o | i# i | t f ƒ q»| i# i | d
 | !| | d f ƒ q1| d j o | i$ i | ƒ q1| d j o | i% i | ƒ q1| d j o | i& i | ƒ q1| d j o | i' i | ƒ q1| d j o | i( i | ƒ q1| d j o | i( } q1| d j o | i) } q1| d  j o | i% } q1| d! j o) | i) i | ƒ | o | i) } q»q1| d" d# d$ d% d& f j o | i* i | ƒ q1| i d' | ƒ q1W| i | ƒ qy W| Sd  S((   N(   s   parse_makefiles   expand_makefile_varss   _variable_rx(   s   TextFile(   s   split_quoteds   strip_commentsi   s   skip_blankss
   join_liness	   lstrip_wss	   rstrip_wsi    iÿÿÿÿs   *s   '%s' lines not handled yeti   s   .cs   .ccs   .cpps   .cxxs   .c++s   .ms   .mms   -Is   -Ds   =s   -Us   -Cs   -ls   -Ls   -Rs   -rpaths   -Xlinkers
   -Xcompilers   -us   .as   .sos   .sls   .os   .dylibs   unrecognized argument '%s'(+   s   distutils.sysconfigs   parse_makefiles   expand_makefile_varss   _variable_rxs   distutils.text_files   TextFiles   distutils.utils   split_quoteds   filenames   varss   files
   extensionss   readlines   lines   Nones   matchs   warns   wordss   modules	   Extensions   exts   append_next_words   words   appends   oss   paths   splitexts   suffixs   switchs   values   sourcess   include_dirss   strings   finds   equalss   define_macross   undef_macross   extra_compile_argss	   librariess   library_dirss   runtime_library_dirss   extra_link_argss   extra_objects(   s   filenames   suffixs   varss   modules   append_next_words   files   split_quoteds   TextFiles   exts   expand_makefile_varss   _variable_rxs   parse_makefiles   equalss   wordss   lines   words   values   switchs
   extensions(    (    s0   /mit/python/lib/python2.3/distutils/extension.pys   read_setup_file†   s‚     &	
 ")(   s   __doc__s   __revision__s   oss   strings   syss   typess   warningss   ImportErrors   Nones	   Extensions   read_setup_file(   s   __revision__s   strings	   Extensions   warningss   read_setup_files   syss   os(    (    s0   /mit/python/lib/python2.3/distutils/extension.pys   ?   s   l