JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB YI~d/w@sNddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dkoej!dkZ"e"rdZ#d Z$d Z%n d Z#d Z$d Z%dddZ&GdddZ'GdddZ(ddZ)ddZ*ddZ+ddZ,d#ddZ-e)Z.e.dkr:ed e.Gd!d"d"e Z/dS)$N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64)r z win-amd64c@sLeZdZddZeeZddZeeZddZeeZddZeeZd S) RegcCs:x,tD]$}|||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrtdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||stddStj |d }tj|r|Std dS) Nz %s\Setup\VCr=z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r6rrrr debugrUrisdirenvirongetrZpardirabspathisfile)r:r7r=ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rec Cs<t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd}z|\}}|d krzt| d | d }xr| d D]d}t |}d |krq| }| d d \} } | } | |kr| tjr| dd} t| || <qWWd|j|jXt|t|kr8ttt||S)NincludelibZlibpathrzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr+ =rrF)rerr r] subprocessPopenPIPEZ communicatewaitr*rPrr&stripr%endswithrUrYr\rhcloserirO ValueErrorstrlistkeys) r:ZarchrdZ interestingresultpopenrhrilinerr(rrrquery_vcvarsalls<          rzg @z(VC %0.1f is not supported by this modulec @seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd-ddZd.ddZd/ddZd0ddZd1ddZd2ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd3d)d*Zd+d,ZdS)4 MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr;VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r9verboseZdry_runforcerrrr;IszMSVCCompiler.__init__NcCs|dkrt}d}||kr(td|fdtjkrfdtjkrf|drfd|_d|_d|_d|_d |_ n|tksx|d krt |}nt td t |}t t |}|d  tj|_|d tjd <|dtjd<t|jdkrtd|j|d|_|d|_|d|_|d|_|d |_ y,x&tjd  dD]}|j|q||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compilerextendrrrrUrrb _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrrZr)r9Zsourcesrr5Z include_dirsr] extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrgrrr r]) r9rZoutput_libnamerr] target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsX|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}tj|d} |dk rPtjtj|\}}tj | ||}|d|||| || rp| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnX|||}|dk rT|\}}d||f}y|dd d ||gWn,tk rD}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrtr rUrrZrr EXECUTABLErrrrrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r])r9 target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr]rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6sl           zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifestz/MANIFESTFILE:)rUrrZrr)r9rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|dr|ddd}PqWdS|tjkr>d}nd}||}|dkrXdS||fS)Nz/MANIFESTFILE::rrK) startswithrPrr_remove_visual_c_ref)r9rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |}Wd|Xtdtj}t|d|}d}t|d|}tdtj}t||dkrrdSt|d}z|||S|XWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrrrerDOTALLrEsearchwriteOSError)r9Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r9dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)NZPathr)r~rUrrZrbrcr_rP)r9Zexer@fnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r)r/r0r1Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr;rrrrrrrrrrrrrrrrrr{+sP  W  V  R + r{)r )0rUrlrMrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer$errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r6r?r>rrr4rTrXr\rerzr|r{rrrrsJ  >. # )