f'N ddlZddlZddlZddlmZmZmZmZmZddl m Z m Z ddl m Z ddlmZddlmZdZdZd d d d d ZdZdZddZd ddddZGdde ZdS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countcj tjtjdtjtjz}n%#t $rt jdYdSwxYwd}d}|5tD]} tj ||\}}}n#t $rYn{wxYw|rt|tj krdtj |rE tt|}n#t t"f$rYwxYw|dkr ||kr||}}dddn #1swxYwY||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredNNr)winreg OpenKeyExHKEY_LOCAL_MACHINEKEY_READKEY_WOW64_32KEYOSErrorr debugr EnumValueREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivvc_dirvtversions >/opt/alt/python311/lib64/python3.11/distutils/_msvccompiler.py _find_vc2015r*s  % 6?V%;;     0111zzLH = = = =A  & 0a 8 8 622     =R6=((RW]]6-B-B(!%((mmGG"I.Hb==W|%;%;-4f(L = = = = = = = = = = = = = = =  !!si8;AA&D&8BD& B D&B  4D&C21D&2DD&DD&&D*-D*c  tjdptjd}|sdS tjtj|dddddd d d d d dg dd}n##tjttf$rYdSwxYwtj|ddd}tj |rd|fSdS)NzProgramFiles(x86) ProgramFilesrzMicrosoft Visual Studio Installerz vswhere.exez-latestz -prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyinstallationPathz -products*mbcsstrict)encodingerrorsVC AuxiliaryBuild) renvironget subprocess check_outputrjoinstripCalledProcessErrorrUnicodeDecodeErrorr)rootrs r) _find_vc2017rA8s :>>- . . P"*..2P2PD z & GLL8+} U U   L +  ( 8---.3UWW   )74F Gzz 7<<dK 9 9D w}}T4x :sABB87B8x86x64armarm64)rB x86_amd64x86_arm x86_arm64c.t\}}|st\}}|stjddStj|d}tj|stjd|dS|dfS)Nz$No suitable Visual C++ version foundrz vcvarsall.batz%s cannot be found)rAr*r rrrr<isfile) plat_spec_r#r" vcvarsalls r)_find_vcvarsallrN_s..KAx 0!- h  8999z X77I 7>>) $ $ & 222z d?cXtjdr(dtjDSt |\}}|st d t jd||t j  dd}nW#t j $rE}tj |jt d |jd}~wwxYwd d |DD}|S) NDISTUTILS_USE_SDKc>i|]\}}||Slower).0r!values r) z_get_vc_env..ss6   U IIKK   rOzUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r3zError executing {}cHi|]\}}}|| || SrSrT)rVr!rLrWs r)rXz_get_vc_env..sH    CE      U   rOc3@K|]}|dVdS)=N) partition)rVlines r) z_get_vc_env..s.::  ::::::rO)rgetenvr8itemsrNrr:r;formatSTDOUTdecoder>r erroroutputcmd splitlines)rKrMrLoutexcenvs r) _get_vc_envrmqsS y$%%    j..00    #9--LIq E$%CDDD"% & - -i C C$    &I& . .   (""" #*$%9"" ""    ;:)9)9:::   C Js!A B++C?:AC::C?c8 |s1tjdtj}|D]b}tjtj||}tj|r|cSc|SNr)rrasplitpathseprr<abspathrJ)exepathspfns r) _find_exerws 4 &!!'' 33  W\\"'//!,,c 2 2 7>>"   III  JrOrFrGrH)win32z win-amd64z win-arm32z win-arm64ceZdZ dZiZdgZgdZdgZdgZeezezezZ dZ dZ dZ d Z d xZZd Zdd ZddZ ddZ ddZ ddZ ddZfdZdZdZdZd dZxZS)! MSVCCompilermsvcz.c)z.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercPtj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverbosedry_runforces r)r~zMSVCCompiler.__init__s.D'7E::: rONc\|t}|tvr4tdt tt|}t |}|std|dd|_|jtj }td||_ td||_ td||_td||_td ||_td ||_|d dtj D]6}|r2||tj7|d dtj D]6}|r2||tj7d|_gd |_gd|_gd}gd}g|d|_g|d|_g|ddd|_g|ddd|_g||_g||_t>j df|jt>j df|jt>j df|jt>j!df|jt>j!df|jt>j!df|jt>j"df|jt>j"df|jt>j"df|ji |_#d|_$dS)Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeincludelib)/nologoz/Ox/W3z/GLz/DNDEBUGz/MD)rz/Odz/MDdz/Zirz/D_DEBUG)r/INCREMENTAL:NO/LTCG)rrrz /DEBUG:FULLz/MANIFEST:EMBED,ID=1z/DLLz/MANIFEST:EMBED,ID=2z/MANIFESTUAC:NOFT)%r PLAT_TO_VCVARSrrctuplermr9_pathsrprrqrwcclinkerrrcmcmtadd_include_dirrstripsepadd_library_dirpreprocess_optionscompile_optionscompile_options_debug ldflags_exeldflags_exe_debugldflags_sharedldflags_shared_debugldflags_staticldflags_static_debugr EXECUTABLE SHARED_OBJECTSHARED_LIBRARY_ldflagsr)rrrKvc_envrtdirldflags ldflags_debugs r) initializezMSVCCompiler.initializesA  $I N * *()H*0&~1F1F*G*GII I#9- Y'' /(*.// /jj,,  !!"*--He,, E22 Y..He,,He,,He,,::i,,222:>> 9 9C 9$$SZZ%7%7888::eR((..rz:: 9 9C 9$$SZZ%7%7888"&   & & & "      >W=&<=!I=!I2H!I[[[1G[IZ[$gm$gV$g=S$gUf$g!(j$4m$4! !4 ($*:  !5 )4+;  !4 ($*@  $d +T-@  $e ,d.A  $d +T-F  %t ,d.A  %u -t/B  %t ,d.G    rOrcifdjDfdjjzDpdfd}tt ||S)Nc i|] }|j SrS) obj_extensionrVextrs r)rXz1MSVCCompiler.object_filenames.."sFFF3sD&FFFrOc i|] }|j SrS) res_extensionrs r)rXz1MSVCCompiler.object_filenames..#s\\\3sD&\\\rOrctj|\}}r tj|}natj|\}}|tjjtjjfr |dd} tj||zS#t$r#td |wxYw)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithraltsepr< LookupErrorrrc)rubaserrLext_map output_dir strip_dirs r) make_out_pathz4MSVCCompiler.object_filenames..make_out_path(s((++ID# $w''--',,T224??BGK#@AA$8D Mw||Jws|0CDDD M M M##A#H#H#K#KLLL  Ms ((C-C>)src_extensions_rc_extensions_mc_extensionslistmap)rsource_filenamesrrrrs` `` @r)object_filenameszMSVCCompiler.object_filenamess FFFF$2EFFF \\\\$2EH[2[\\\   %2  M M M M M M M&C '788999rOc @|js||||||||} | \}} }} } |pg} | d|r| |jn| |jd}| D]} | |\}}n#t$rYwxYw|rtj |}||j vrd|z}n||j vr d|z}d}n||j vrN|}d|z} ||jg| z||gzn!#t $r}t#|d}~wwxYw||jvrtj |}tj |} ||jd|d||gtj tj |\}}tj ||d z}||jd|z|gn!#t $r}t#|d}~wwxYwt#d |||jg| z| z}|r|d |||d |z|| ||k#t $r}t#|d}~wwxYw| S) Nz/cFz/Tcz/TpTz/foz-hz-rr|z"Don't know how to compile {} to {}z/EHscz/Fo)rr_setup_compileappendextendrrKeyErrorrrrr _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr<rcr)rsourcesrmacros include_dirsr extra_preargsextra_postargsdepends compile_infoobjectspp_optsbuild compile_opts add_cpp_optsobjsrcr input_opt output_optmsgh_dirrc_dirrrLrc_fileargss r)compilezMSVCCompiler.compile>s  OO   **:v|+2G^MM :F7%$* D!!!  6    : ; ; ; ;    4 5 5 5 A (A (C  :SS     +gooc**d(((!CK ,,,!CK # +++ "S[ ,JJy72j)5LLMMMM),,,&s+++,+++,,-- ,JJudFCHIII g..rw/?/?/E/EFFGD! gll64%<@@GJJg>????),,,&s+++,##G$*F3$4$4666G9|+g5D % G$$$ KK " " " KK $ $ $ KK ' ' ' ( 4    % ( ( ("3''' (s[ B"" B/.B/#D** E4EEB"H88 III&K== LLLc|js||||\}}|||}|||r||d|zgz}|r t jd|jd|| |jg|zdS#t$r}t|d}~wwxYwt jd|dS)N)r/OUT:Executing "%s" %s skipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkr rrr<rrr) rroutput_libnamerr target_langoutput_filenamelib_argsrs r)create_static_libzMSVCCompiler.create_static_libs  OO   "33GZHH//;E0GG ??7O 4 4 C'O";!<z%MSVCCompiler.link..sNNN:+NNNrOrrz/IMPLIB:rrr)rrr _fix_lib_argswarnstrr rrr<rrrrrrrrrrmkpathr rrrrr)r target_descrrr libraries library_dirsruntime_library_dirsexport_symbolsrrr build_tempr fixed_argslib_optsr export_optsld_argsdll_namedll_ext implib_filers r)linkzMSVCCompiler.links  OO   "33GZHH'' <(<>> 8B5 >'**#"NNNNN# # 4rO)rrrr)rr)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__ compiler_type executablesrrrrrrrstatic_lib_extensionshared_lib_extensionstatic_lib_formatshared_lib_format exe_extensionr~rrrrrrrrrr __classcell__)r s@r)rzrzs6MKFM---OWNWN$o5$%'56NMM!!,22)M!!!! J J J J `$%$&::::DHIAEWWWWz&* !&* CCCC<"&  CCCCCCCCJ*****!!!LLL***rOrzr)rr:rdistutils.errorsrrrrrdistutils.ccompilerrr distutilsr distutils.utilr itertoolsr r*rAPLAT_SPEC_TO_RUNTIMErNrmrwrrzrSrOr)r,s  ??????????????::::::::''''''"""8B  $<* qqqqq9qqqqqrO