B ²µ7›Aâ»ã@sNddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dko®ej!dkZ"e"rÂdZ#d Z$d Z%n d Z#d Z$d Z%dddœZ&Gdd„dƒZ'Gdd„dƒZ(dd„Z)dd„Z*dd„Z+dd„Z,d#dd„Z-e)ƒZ.e.dkr:ed e.ƒ‚Gd!d"„d"e ƒZ/dS)$éN)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚ CompileErrorÚLibErrorÚ LinkError)Ú CCompilerÚgen_preprocess_optionsÚgen_lib_options)Úlog)Ú get_platformÚwin32lz1Software\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\.NETFrameworkÚx86Zamd64)r z win-amd64c@sLeZdZdd„ZeeƒZdd„ZeeƒZdd„ZeeƒZdd„ZeeƒZd S) ÚRegcCs:x,tD]$}| ||¡}|r||kr||SqWt|ƒ‚dS)N)ÚHKEYSÚ read_valuesÚKeyError)ÚclsÚpathÚkeyÚbaseÚd©rú:/opt/alt/python37/lib/python3.7/distutils/msvc9compiler.pyÚ get_value@s     z Reg.get_valuecCsnyt||ƒ}Wntk r"dSXg}d}xt d¡d}YnX|rPtj |¡sÆd|}tj   |d¡}|r¸tj |¡r¸tj  |tj tj d¡}tj  |¡}tj |¡sÆt d|¡dSnt d|¡|sØt d¡dStj  |d ¡}tj |¡rö|St d ¡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 ÚdebugrUrÚisdirÚenvironÚgetrZÚpardirÚabspathÚisfile)r:r7r=ZtoolskeyZtoolsdirÚ vcvarsallrrrÚfind_vcvarsallÚs2         rec Cs<t|ƒ}ddddh}i}|dkr(tdƒ‚t d||¡tjd||ftjtjd}z¨| ¡\}}| ¡d krzt|  d ¡ƒ‚|  d ¡}xr|  d ¡D]d}t   |¡}d |kr¨q|  ¡}|  d d ¡\} } |  ¡} | |kr|  tj¡rè| dd…} t| ƒ|| <qWWd|j ¡|j ¡Xt|ƒt|ƒkr8ttt| ¡ƒƒƒ‚|S)NÚincludeÚlibZlibpathrzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)ÚstdoutÚstderrrr+Ú ú=rrF)rerr r]Ú subprocessÚPopenÚPIPEZ communicateÚwaitr*rPrr&Ústripr%ÚendswithrUrYr\rhÚcloserirOÚ ValueErrorÚstrÚlistÚkeys) r:ZarchrdZ interestingÚresultÚpopenrhriÚlinerr(rrrÚquery_vcvarsallýs<          rzg @z(VC %0.1f is not supported by this modulec @sÚeZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd-dd„Zd.dd„Zd/dd„Zd0dd„Zd1dd„Zd2dd„Zdd„Zdd „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)r9ÚverboseZdry_runÚforcerrrr;IszMSVCCompiler.__init__NcCs|dkrtƒ}d}||kr(td|fƒ‚dtjkrfdtjkrf| d¡rfd|_d|_d|_d|_d |_ nÂ|tƒksx|d kr‚t |}nt tƒd t |}t t |ƒ}|d   tj¡|_|d tjd <|dtjd<t|jƒdkrìtd|jƒ‚| d¡|_| d¡|_| d¡|_| d¡|_| d ¡|_ y,x&tjd   d¡D]}|j |¡q||j kr>|}d|}y"| |jg| |g|g¡Wqhtk r8}z t|ƒ‚Wdd}~XYqhXqhnÒ||jkrtj  |¡}tj  |¡}yl| |jgd|d|g|g¡tj  tj  |¡¡\}}tj  ||d¡}| |jgd|g|g¡Wqhtk rú}z t|ƒ‚Wdd}~XYqhXqhntd||fƒ‚d |}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)rr‘Z_setup_compilerÚextendrŽrrrUrrbÚ _c_extensionsÚ_cpp_extensionsr˜ÚspawnrŠrrršÚdirnamer‹r“r—rZrˆ)r9Zsourcesrœr5Z include_dirsr]Ú extra_preargsÚextra_postargsZdependsZ compile_infoÚobjectsZpp_optsZbuildZ compile_optsÚobjÚsrcrZ input_optZ output_optÚmsgZh_dirZrc_dirrr„Zrc_filerrrÚcompileÈsj              zMSVCCompiler.compilec Csž|js| ¡| ||¡\}}|j||d}| ||¡rŽ|d|g}|rJy| |jg|¡Wqštk rŠ}z t|ƒ‚Wdd}~XYqšXn t   d|¡dS)N)rœz/OUT:zskipping %s (up-to-date)) rr‘Ú_fix_object_argsÚlibrary_filenameÚ _need_linkr¢rgrrr r]) r9r¦Zoutput_libnamerœr]Ú target_langÚoutput_filenameZlib_argsr©rrrÚcreate_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|pÊgD]}| d|¡qÌW||||d|g}tj |d¡} |dk rPtj tj |¡¡\}}tj  | | |¡¡}| d|¡| || |¡| rp| |dd…<| r€| | ¡| tj |¡¡y| |jg|¡Wn,tk rÔ}z t|ƒ‚Wdd}~XYnX| ||¡}|dk rT|\}}d||f}y| dd d ||g¡Wn,tk rD}z t|ƒ‚Wdd}~XYnXn t d |¡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))rr‘r«Z _fix_lib_argsÚwarnrtr rUrrZr­rÚ EXECUTABLErrrr£r“r—r¬Úmanifest_setup_ldargsrŸZmkpathr¢r‰rrÚmanifest_get_embed_infor r])r9Ú target_descr¦r¯rœZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr]r¤r¥Ú build_tempr®Z fixed_argsZlib_optsZldflagsZ export_optsZsymÚld_argsZdll_nameZdll_extZ implib_filer©ZmfinfoZ mffilenameÚmfidZout_argrrrÚlink6sl           zMSVCCompiler.linkcCs,tj |tj |¡d¡}| d|¡dS)Nz .manifestz/MANIFESTFILE:)rUrrZr—r)r9r¯r¶r·Ú temp_manifestrrrr³•sz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }| d¡r| dd¡d}PqWdS|tjkr>d}nd}| |¡}|dkrXdS||fS)Nz/MANIFESTFILE:ú:rrK)Ú startswithrPrr²Ú_remove_visual_c_ref)r9rµr·Úargrºr¸rrrr´¡s    z$MSVCCompiler.manifest_get_embed_infocCs²y˜t|ƒ}z | ¡}Wd| ¡Xt dtj¡}t |d|¡}d}t |d|¡}t dtj¡}t ||¡dkrrdSt|dƒ}z| |¡|S| ¡XWnt k r¬YnXdS)NzU|)r’z*\s*zI|)Úw) ÚopenÚreadrrÚrerªÚDOTALLrEÚsearchÚwriteÚOSError)r9Z manifest_fileZ manifest_fZ manifest_bufÚpatternrrrr½¹s.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r9ÚdirrrrÚlibrary_dir_optionäszMSVCCompiler.library_dir_optioncCs tdƒ‚dS)Nztjd d¡D]*}tj tj |¡|¡}tj |¡rH|SqHW|S)NZPathr…)r~rUrrZrbrcr_rP)r9Zexer@Úfnrrrr‡s   zMSVCCompiler.find_exe)rrr)N)rr’)NNNrNNN)NrN) NNNNNrNNNN)r)r/r0r1Z compiler_typeZ executablesr r¡r˜ršr–r™r›Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr;r‘ržrªr°r¹r³r´r½rÉrÊrËrÎr‡rrrrr{+sP  W  V  R + r{)r )0rUrlrMrÂZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr ÚwinregZ OpenKeyExrZEnumKeyrZ EnumValuer$ÚerrorrZ HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrÚplatformÚmaxsizeZ NATIVE_WIN64r6r?r>rŒrr4rTrXr\rerzr|r{rrrrÚsJ  >. # )