a „oe(ã@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ƒr.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ƒ}d t|ƒ¡}d |}t |¡dS) Nz'name' must be a stringcss|]}t|tƒVqdS)N)Ú isinstanceÚstr)Ú.0Úv©rú@C:\Program Files\Certbot\pkgs\setuptools\_distutils\extension.pyÚ móz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|ƒ‘qSr)Úrepr)rÚoptionrrrÚ ƒr z&Extension.__init__..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 ÚkwÚoptionsÚmsgrrrÚ__init__Ws2             zExtension.__init__cCsd |jj|jj|jt|ƒ¡S)Nz<{}.{}({!r}) at {:#x}>)ÚformatÚ __class__Ú __module__Ú __qualname__rÚid)r&rrrÚ__repr__ˆs üzExtension.__repr__)NNNNNNNNNNNNNN)Ú__name__r-r.Ú__doc__r*r0rrrrrs"Fï 1rcCsÀddlm}m}m}ddlm}ddlm}||ƒ}||dddddd�}�zfg}| ¡} | durd�q¦|  | ¡rpqP| d| dkrŒd kr nn|  d | ¡qP|| |ƒ} || ƒ} | d} t | gƒ} d} | dd…D�]Â}| durò|   |¡d} qÔt j |¡d}|dd …}|d d…}|d v�r2| j  |¡qÔ|d k�rJ| j  |¡qÔ|dk�r | d¡}|dk�rz| j  |df¡n$| j  |d|…||d d…f¡qÔ|dk�r¸| j  |¡qÔ|dk�rÐ| j  |¡qÔ|dk�rè| j  |¡qÔ|dk�r| j  |¡qÔ|dk�r| j  |¡qÔ|dk�r*| j} qÔ|dk�r<| j} qÔ|dk�rN| j} qÔ|dk�rr| j  |¡|�s˜| j} qÔ|dv�rŠ| j  |¡qÔ|  d|¡qÔ|  | ¡qPW| ¡n | ¡0|S)z3Reads a Setup file and returns Extension instances.r)Úparse_makefileÚexpand_makefile_varsÚ _variable_rx)ÚTextFile)Ú split_quotedé)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsNéÿÿÿÿÚ*z'%s' lines not handled yeté)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-Dú=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr3r4r5Zdistutils.text_filer6Zdistutils.utilr7ÚreadlineÚmatchr%rÚappendÚosÚpathÚsplitextrrÚfindrrrrrrrrÚclose)Úfilenamer3r4r5r6r7ÚvarsÚfileÚ extensionsÚlineÚwordsÚmoduleÚextZappend_next_wordZwordÚsuffixZswitchÚvalueZequalsrrrÚread_setup_file‘sŒ  ú            &           rO)r2r@r$rrOrrrrÚs }