JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fc@sDdZddlZddlZddlZddlmZddlTddlmZm Z ddlm Z ddl m Z ddl mZdd lmZdd lmZejd krdZdZndd lmZdZejd krddlmZeeZnejdZ ddZ!GdddeZ"dS(udistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).iN(uCommand(u*(ucustomize_compileruget_python_version(uget_config_h_filename(u newer_group(u Extension(u get_platform(ulogu2.6(u USER_BASEunt(uget_build_versionu3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS(Ni(ushow_compilers(udistutils.ccompilerushow_compilers(ushow_compilers((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyushow_compilers#sushow_compilerscBs|EeZdZdZdejZdWdXd d d efd d ddfdddefdYdZd[dddefd\d]d^d_d`dadbdcgZ d d%d(d.gZ e re j dde j d4nd6dVd7e fgZd8d9Zd:d;Zd<d=Zd>d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVS(eu build_extu8build C/C++ extensions (compile/link to build directory)u (separated by '%s')u build-lib=ubu(directory for compiled extension modulesu build-temp=utu1directory for temporary files (build by-products)u plat-name=upu>platform name to cross-compile for, if supported (default: %s)uinplaceuiu=ignore build-lib and put compiled extensions into the source u,directory alongside your pure Python modulesu include-dirs=uIu.list of directories to search for header filesudefine=uDuC preprocessor macros to defineuundef=uUu!C preprocessor macros to undefineu libraries=ulu!external C libraries to link withu library-dirs=uLu.directories to search for external C librariesurpath=uRu7directories to search for shared C libraries at runtimeu link-objects=uOu2extra explicit link objects to include in the linkudebugugu'compile/link with debugging informationuforceufu2forcibly build everything (ignore file timestamps)u compiler=ucuspecify the compiler typeuswig-cppu)make SWIG create C++ files (default is C)u swig-opts=u!list of SWIG command line optionsuswig=upath to the SWIG executableuuseru#add user include, library and rpathu help-compilerulist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS(Ni(uNoneu extensionsu build_libu plat_nameu build_tempuinplaceupackageu include_dirsudefineuundefu librariesu library_dirsurpathu link_objectsudebuguforceucompileruswiguswig_cppu swig_optsuuser(uself((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyuinitialize_optionsrs(                   ubuild_ext.initialize_optionsc Cs=ddlm}|jdd.d/d0d1d2d3|jdkrP|jj|_n|jj|_|j }|j d d }|j dkr|jj pg|_ nt |j t r|j j tj|_ ntjtjkr|j jtjjtjd n|j j|||kr7|j j|n|jd |jdkr_g|_n|jdkrzg|_n-t |jt r|jj tj|_n|jdkrg|_n-t |jt r|jj tj|_ntjdkr|jjtjjtjdtjtjkrW|jjtjjtjdn|jr~tjj|jd|_ntjj|jd|_|j jtjjtt tdd}|r|jj|nt!dkrc|j"dkrd}n|j"dd}tjjtjd}|rPtjj||}n|jj|qt!dkr|jjtjjtjddqt!dkr|jjtjjtjddq|jjtjjtjddntjdkr'|jjtjjtjdntj#dd d!ksYtj#dd d"krtj$j%tjjtjd#r|jjtjjtjd$d%t&d&q|jjd'n|j'd(r$tj$j%tjjtjd#r|jj|j'd)q$|jjd'n|j(rX|j(j d*}d+d,|D|_(n|j)ry|j)j d*|_)n|j*dkrg|_*n|j*j d-|_*|j+r9tjjt,d }tjjt,d$} tjj-|r|j j|ntjj-| r9|jj| |jj| q9ndS(4Ni(u sysconfigubuildu build_libu build_tempucompilerudebuguforceu plat_nameu plat_specificiuincludeu librariesuntulibsuDebuguReleaseu_homei uwin32uiuPCbuildiuPCuVS8.0iuVS7.1uVC6uos2uConfigiucygwinuatheosubinulibupythonuconfigu.uPy_ENABLE_SHAREDuLIBDIRu,cSsg|]}|dfqS(u1((u.0usymbol((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyu s u.build_ext.finalize_options..u (u build_libu build_lib(u build_tempu build_temp(ucompilerucompiler(udebugudebug(uforceuforce(u plat_nameu plat_name(.u distutilsu sysconfiguset_undefined_optionsupackageuNoneu distributionu ext_packageu ext_modulesu extensionsuget_python_incu include_dirsu isinstanceustrusplituosupathsepusysu exec_prefixubase_exec_prefixuappendupathujoinuensure_string_listu librariesu library_dirsurpathunameuprefixudebugu build_tempudirnameuget_config_h_filenameugetattru MSVC_VERSIONu plat_nameuplatformu executableu startswithuget_python_versionuget_config_varudefineuundefu swig_optsuuseru USER_BASEuisdir( uselfu sysconfigu py_includeuplat_py_includeu _sys_homeusuffixunew_libudefinesu user_includeuuser_lib((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyufinalize_optionss  %     "%     %2$  $    ubuild_ext.finalize_optionsc Csddlm}|jsdS|jjrm|jd}|jj|jpSg|j j |j n|d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|jn|jdk r|j j|jn|jdk rEx-|jD]\}}|j j||qWn|jdk r{x$|jD]}|j j|q^Wn|jdk r|j j|jn|j dk r|j j|j n|jdk r|j j |jn|j!dk r|j j"|j!n|j#dS( Ni(u new_compileru build_clibucompileruverboseudry_runuforceunt($udistutils.ccompileru new_compileru extensionsu distributionuhas_c_librariesuget_finalized_commandu librariesuextenduget_library_namesu library_dirsuappendu build_clibucompileruverboseudry_runuforceucustomize_compileruosunameu plat_nameu get_platformu initializeu include_dirsuNoneuset_include_dirsudefineu define_macrouundefuundefine_macrou set_librariesuset_library_dirsurpathuset_runtime_library_dirsu link_objectsuset_link_objectsubuild_extensions(uselfu new_compileru build_clibunameuvalueumacro((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyurun#s>    !u build_ext.runc Cs0t|tstdnx t|D]\}}t|trLq+nt|t snt|dkr}tdn|\}}tjd|t|t ot j |stdnt|t stdnt||d}x<dD]4}|j |}|dk rt|||qqW|j d|_d|kretjdn|j d}|rg|_g|_x|D]} t| tot| dkstdnt| dkr|jj| dqt| dkr|jj| qqWn||||j|jg}x!|jD]}|j|jq W|S(N(ucheck_extensions_listu extensionsuextendusources(uselfu filenamesuext((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyuget_source_filess ubuild_ext.get_source_filescCsG|j|jg}x*|jD]}|j|j|jq W|S(N(ucheck_extensions_listu extensionsuappenduget_ext_fullpathuname(uselfuoutputsuext((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyu get_outputss ubuild_ext.get_outputscCs|j|jx||jD]q}y|j|Wqtttfk r}z.|js^n|jd|j|fWYdd}~XqXqWdS(Nu"building extension "%s" failed: %s( ucheck_extensions_listu extensionsubuild_extensionuCCompilerErroruDistutilsErroru CompileErroruoptionaluwarnuname(uselfuextue((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyubuild_extensionss  ubuild_ext.build_extensionsc Cs |j}|dks+t|ttf rAtd|jnt|}|j|j}||j}|j pt ||dst j d|jdSt j d|j|j||}|jpg}|jdd}x!|jD]}|j|fqW|jj|d|jd|d|jd|j d |d |j}|dd|_|jrz|j|jn|jpg}|jp|jj|} |jj||d |j|d |jd |j d |d|j!|d|j d|jd| dS(Nujin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesuneweru$skipping '%s' extension (up-to-date)ubuilding '%s' extensionu output_dirumacrosu include_dirsudebuguextra_postargsudependsu librariesu library_dirsuruntime_library_dirsuexport_symbolsu build_tempu target_lang("usourcesuNoneu isinstanceulistutupleuDistutilsSetupErrorunameuget_ext_fullpathudependsuforceu newer_groupulogudebuguinfou swig_sourcesuextra_compile_argsu define_macrosu undef_macrosuappenducompilerucompileu build_tempu include_dirsu_built_objectsu extra_objectsuextenduextra_link_argsulanguageudetect_languageulink_shared_objectu get_librariesu library_dirsuruntime_library_dirsuget_export_symbols( uselfuextusourcesuext_pathudependsu extra_argsumacrosuundefuobjectsulanguage((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyubuild_extensionsN "             ubuild_ext.build_extensionc Csg}g}i}|jr+tjdn|jsRd|jksRd|jkr[d}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d ||          ubuild_ext.swig_sourcescCstjdkrdStjdkrixjd D]5}tjjd|d}tjj|r)|Sq)WdSn&tjd kr|dStd tjd S( uReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. uposixuswiguntu1.3u1.2u1.1u c:\swig%suswig.exeuos2u>I don't know how to find (much less run) SWIG on platform '%s'N(u1.3u1.2u1.1(uosunameupathujoinuisfileuDistutilsPlatformError(uselfuversufn((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyu find_swig]s ubuild_ext.find_swigcCs|j|}|jd}|j|d}|jsstjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S( uReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). u.iNiubuild_pyiii( uget_ext_fullnameusplituget_ext_filenameuinplaceuosupathujoinu build_libuget_finalized_commanduabspathuget_package_dir(uselfuext_nameufullnameumodpathufilenameupackageubuild_pyu package_dir((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyuget_ext_fullpathxs #ubuild_ext.get_ext_fullpathcCs&|jdkr|S|jd|SdS(uSReturns the fullname of a given extension name. Adds the `package.` prefixu.N(upackageuNone(uselfuext_name((u@/opt/alt/python33/lib64/python3.3/distutils/command/build_ext.pyuget_ext_fullnamesubuild_ext.get_ext_fullnamecCsddlm}|jd}tjdkr]|t|ddd|t|ds*$