Your IP : 216.73.216.110
3
\)�@s.dZddlZddlZGdd�d�Zdd�ZdS)zmdistutils.extension
Provides the Extension class, used to describe C/C++ extension
modules in setup scripts.�Nc@s"eZdZdZddd�Zdd�ZdS)� Extensiona�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.
optional : boolean
specifies that a build failure in the extension should not abort the
build process, but simply not install the failing extension.
NcKst|t�std��t|t�o,tdd�|D��s6td��||_||_|pHg|_|pRg|_|p\g|_ |pfg|_
|ppg|_|pzg|_| p�g|_
|
p�g|_|p�g|_|p�g|_|
p�g|_|p�g|_||_||_t|�dk�rdd�|D�}djt|��}d |}tj|�dS)
Nz'name' must be a stringcss|]}t|t�VqdS)N)�
isinstance�str)�.0�v�r�+/usr/lib64/python3.6/distutils/extension.py� <genexpr>jsz%Extension.__init__.<locals>.<genexpr>z#'sources' must be a list of stringsrcSsg|]}t|��qSr)�repr)rZoptionrrr�
<listcomp>�sz&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: %s)rr�AssertionError�list�all�name�sources�include_dirs�
define_macros�undef_macros�library_dirs� libraries�runtime_library_dirs�
extra_objects�extra_compile_args�extra_link_args�export_symbols� swig_opts�depends�language�optional�len�join�sorted�warnings�warn)�selfrrrrrrrrrrrrrrrr�kwZoptions�msgrrr�__init__Vs4
zExtension.__init__cCsd|jj|jj|jt|�fS)Nz<%s.%s(%r) at %#x>)� __class__�
__module__�__qualname__r�id)r$rrr�__repr__�s
zExtension.__repr__)NNNNNNNNNNNNNN)�__name__r)r*�__doc__r'r,rrrrrs ?
!rcCs�ddlm}m}m}ddlm}ddlm}||�}||dddddd�}�zhg}�x\|j�} | dkrfP|j | �rrqT| d| d$ko�dknr�|j
d | �qT|| |�} || �}
|
d}t|g�}d}
�x�|
dd�D�]�}|
dk r�|
j|�d}
q�t
jj|�d}|dd
�}|d
d�}|d%k�r8|jj|�q�|dk�rP|jj|�q�|dk�r�|jd�}|d&k�r�|jj|df�n$|jj|d|�||d
d�f�q�|dk�r�|jj|�q�|dk�r�|jj|�q�|dk�r�|jj|�q�|dk�r|jj|�q�|dk�r|jj|�q�|dk�r0|j}
q�|dk�rB|j}
q�|dk�rT|j}
q�|dk�rx|jj|�|�s�|j}
q�|d'k�r�|jj|�q�|j
d#|�q�W|j|�qTWWd|j�X|S)(z3Reads a Setup file and returns Extension instances.r)�parse_makefile�expand_makefile_vars�_variable_rx)�TextFile)�split_quoted�)Zstrip_commentsZskip_blanksZ
join_linesZ lstrip_wsZ rstrip_wsN�*z'%s' lines not handled yet��.c�.cc�.cpp�.cxx�.c++�.m�.mmz-Iz-D�=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz
-Xcompilerz-u�.a�.so�.sl�.o�.dylibzunrecognized argument '%s'���)r7r8r9r:r;r<r=rD)r?r@rArBrC)Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3�readline�matchr#r�append�os�path�splitextrr�findrrrrrrrr�close)�filenamer/r0r1r2r3�vars�file�
extensions�lineZwords�moduleZextZappend_next_wordZword�suffixZswitch�valueZequalsrrr�read_setup_file�s�
rU)r.rHr"rrUrrrr�<module>sz
?>