zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
U
G=®dô[ã @s‚dZddlZddlZddlmZmZmZmZmZddl    m
Z
m Z ddl m Z dZz,ddlZdZeZejZejZejZejZWnhek
räz4ddlZddlZdZeZejZejZejZejZWnek
rÞe  d¡YnXYnXerþejejejej fZ!d    d
„Z"d d „Z#d d„Z$Gdd„dƒZ%dd„Z&dd„Z'dd„Z(Gdd„de
ƒZ)e&ƒdkr~e  *d¡e)Z+ddl,m)Z)ddl,m%Z%dS)z‚distutils.msvccompiler
 
Contains MSVCCompiler, an implementation of the abstract CCompiler class
for the Microsoft Visual Studio.
éN)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚ CompileErrorÚLibErrorÚ    LinkError)Ú    CCompilerÚgen_lib_options)ÚlogFTzWarning: Can't read registry to find the necessary compiler setting
Make sure that Python modules winreg, win32api or win32con are installed.cCsnzt||ƒ}Wntk
r$YdSXg}d}zt||ƒ}Wntk
rTYqjYnX| |¡|d7}q.|S)zReturn list of registry keys.Nré)Ú RegOpenKeyExÚRegErrorÚ
RegEnumKeyÚappend)ÚbaseÚkeyÚhandleÚLÚiÚk©rúYD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\setuptools/_distutils/msvccompiler.pyÚ    read_keys7s
 
 
rcCs‚zt||ƒ}Wntk
r$YdSXi}d}zt||ƒ\}}}Wntk
rZYq~YnX| ¡}t|ƒ|t|ƒ<|d7}q.|S)zXReturn dict of registry keys and values.
 
    All names are converted to lowercase.
    Nrr
)r r Ú RegEnumValueÚlowerÚ convert_mbcs)rrrÚdrÚnameÚvalueÚtyperrrÚ read_valuesHs
 
rcCs:t|ddƒ}|dk    r6z |dƒ}Wntk
r4YnX|S)NÚdecodeÚmbcs)ÚgetattrÚ UnicodeError)ÚsÚdecrrrr]s  rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
Ú MacroExpandercCsi|_| |¡dS©N)ÚmacrosÚ load_macros)ÚselfÚversionrrrÚ__init__gszMacroExpander.__init__cCs2tD](}t||ƒ}|r|||jd|<q.qdS)Nz$(%s))ÚHKEYSrr()r*ZmacroÚpathrrrrrrÚ    set_macroks
 
zMacroExpander.set_macroc
 
Csød|}| d|dd¡| d|dd¡d}| d|d    ¡z*|d
krX| d |d ¡n| d |d ¡Wn*tk
r’}z tdƒ‚W5d}~XYnXd}tD]V}zt||ƒ}Wntk
rÆYqœYnXt|dƒ}t|d||fƒ}    |    d|jd<qœdS)Nz%Software\Microsoft\VisualStudio\%0.1fZ VCInstallDirz    \Setup\VCZ
productdirZ VSInstallDirz    \Setup\VSz Software\Microsoft\.NETFrameworkZ FrameworkDirZ installrootg@ZFrameworkSDKDirzsdkinstallrootv1.1ZsdkinstallrootaPython was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.z.Software\Microsoft\NET Framework Setup\Productrz%s\%sr+z$(FrameworkVersion))    r/ÚKeyErrorrr-r r r rr()
r*r+ZvsbaseÚnetÚexcÚprÚhrrrrrr)rs,ÿ
 
zMacroExpander.load_macroscCs$|j ¡D]\}}| ||¡}q
|Sr')r(ÚitemsÚreplace)r*r$rÚvrrrÚsubŽszMacroExpander.subN)Ú__name__Ú
__module__Ú __qualname__r,r/r)r8rrrrr&fsr&cCsšd}tj |¡}|dkrdS|t|ƒ}tj|d… dd¡\}}t|dd…ƒd}|dkrf|d7}t|d    d
…ƒd }|dkr†d }|dkr–||SdS) zÃReturn the version of MSVC that was used to build Python.
 
    For Python 2.3 and up, the version number is included in
    sys.version.  For earlier versions, assume the compiler is MSVC 6.
    zMSC v.éÿÿÿÿéNú r
éþÿÿÿé éég$@r)Úsysr+ÚfindÚlenÚsplitÚint)Úprefixrr$ÚrestZ majorVersionZ minorVersionrrrÚget_build_version“s  rJcCs@d}tj |¡}|dkrdStj d|¡}tj|t|ƒ|…S)zUReturn the processor architecture.
 
    Possible results are "Intel" or "AMD64".
    z bit (r<ÚIntelú))rCr+rDrE)rHrÚjrrrÚget_build_architecture¬s  rNcCs0g}|D]"}tj |¡}||kr| |¡q|S)znReturn a list of normalized paths with duplicates removed.
 
    The current order of paths is maintained.
    )Úosr.Únormpathr)ÚpathsZ reduced_pathsr3ÚnprrrÚnormalize_and_reduce_paths¹s   rSc
@sÖeZdZdZdZiZdgZdddgZdgZdgZ    eeee    Z
d    Z d
Z d Z d Zd ZZdZd-dd„Zdd„Zd.dd„Zd/dd„Zd0dd„Zd1dd„Zdd„Zd d!„Zd"d#„Zd2d$d%„Zd&d'„Zd3d)d*„Zd+d,„ZdS)4Ú MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++,
       as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxú.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsvt ||||¡tƒ|_tƒ|_|jdkr\|jdkrHd|_t|jƒ|_nd|_d|j|_    nd|jd|_    d|_
dS)    NrKézSoftware\Microsoft\VisualStudiozSoftware\Microsoft\DevstudiozVisual Studio version %szMicrosoft SDK compiler %sr=F) rr,rJÚ_MSVCCompiler__versionrNÚ_MSVCCompiler__archÚ_MSVCCompiler__rootr&Ú_MSVCCompiler__macrosÚ_MSVCCompiler__productÚ initialized)r*ÚverboseÚdry_runÚforcerrrr,æs
 
zMSVCCompiler.__init__cCsÀg|_dtjkrDdtjkrD| d¡rDd|_d|_d|_d|_d|_nx|     d¡|_t
|jƒd    krlt d
|j ƒ‚| d¡|_| d¡|_| d¡|_| d¡|_| d¡|_|  d ¡|  d ¡z&tjd d ¡D]}|j |¡qÎWntk
röYnXt|jƒ|_d  |j¡tjd<d|_|jdkrPddddddg|_dddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkržddddg|_ndddddg|_dg|_d |_dS)!NZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer.rzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.ÚlibÚincludeú;rKz/nologoz/Oxz/MDz/W3z/GXz/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOrVz/INCREMENTAL:noz/DEBUGz    /pdb:NoneT)Ú_MSVCCompiler__pathsrOÚenvironÚfind_exeÚccÚlinkerr`ÚrcÚmcÚget_msvc_pathsrErr[Úset_path_env_varrFrr0rSÚjoinZpreprocess_optionsrXÚcompile_optionsÚcompile_options_debugÚldflags_sharedrWÚldflags_shared_debugZldflags_staticr\)r*r3rrrÚ
initializeøsr ý     
 
 
ÿ
ÿ
ÿ
ÿ  ÿÿzMSVCCompiler.initializeÚcCsÞ|dkr d}g}|D]Ä}tj |¡\}}tj |¡d}|tj |¡d…}||jkrbtd|ƒ‚|rrtj |¡}||jkr˜|     tj 
|||j ¡¡q||j kr¾|     tj 
|||j ¡¡q|     tj 
|||j ¡¡q|S)Nrrr
zDon't know how to compile %s)rOr.ÚsplitextÚ
splitdriveÚisabsÚsrc_extensionsrÚbasenameÚ_rc_extensionsrrlÚ res_extensionÚ_mc_extensionsÚ obj_extension)r*Zsource_filenamesZ    strip_dirÚ
output_dirZ    obj_namesÚsrc_namerÚextrrrÚobject_filenames8s.
 
 ÿ
 ÿ ÿzMSVCCompiler.object_filenamesNc     Csp|js| ¡| ||||||¡}    |    \}}
}} } |p6g} |  d¡|rT|  |j¡n |  |j¡|
D]}z| |\}}Wntk
r’YqdYnX|r¤tj     
|¡}||j krºd|}nT||j krÐd|}n>||j kr<|}d|}z"| |jg| |g|g¡Wqdtk
r6}z t|ƒ‚W5d}~XYqdXqdnÒ||jkrþtj     |¡}tj     |¡}zl| |jgd|d|g|g¡tj     tj     |¡¡\}}tj     ||d¡}| |jgd|g|g¡Wqdtk
rø}z t|ƒ‚W5d}~XYqdXqdntd||fƒ‚d    |}z&| |jg| | ||g|¡Wqdtk
rh}z t|ƒ‚W5d}~XYqdXqd|
S)
Nz/cz/Tcz/Tpz/foz-hz-rrUz"Don't know how to compile %s to %sz/Fo)r\rqZ_setup_compilerÚextendrnrmr0rOr.ÚabspathÚ _c_extensionsÚ_cpp_extensionsrxÚspawnrhrrrzÚdirnamerirsrwrlrf)r*Úsourcesr|r(Ú include_dirsÚdebugÚ extra_preargsÚextra_postargsÚdependsZ compile_infoÚobjectsZpp_optsÚbuildZ compile_optsÚobjÚsrcr~Z    input_optZ
output_optÚmsgZh_dirZrc_dirrÚ_Zrc_filerrrÚcompileWsˆ
ÿ
 
 
 
 
  ÿÿ
 
 
ÿÿ
ÿÿ
ÿÿþ
zMSVCCompiler.compilec    
Csž|js| ¡| ||¡\}}|j||d}| ||¡rŽ|d|g}|rJz| |jg|¡Wqštk
rŠ}z t|ƒ‚W5d}~XYqšXn t     
d|¡dS)N)r|ú/OUT:úskipping %s (up-to-date)) r\rqÚ_fix_object_argsÚlibrary_filenameÚ
_need_linkr„r`rrr    rˆ)    r*rŒZoutput_libnamer|rˆÚ target_langÚoutput_filenameZlib_argsrrrrÚcreate_static_lib¬sÿ zMSVCCompiler.create_static_libc
CsÒ|js| ¡| ||¡\}}| |||¡}|\}}}|rL| dt|ƒ¡t||||ƒ}|dk    rptj     ||¡}| 
||¡rÂ|t j kr¬|    rœ|j dd…}q¾|jdd…}n|    r¸|j }n|j}g}|pÈgD]}| d|¡qÊ||||d|g}|dk    rHtj tj |¡¡\}}tj     tj |d¡| |¡¡}| d|¡|
rZ|
|dd…<| rj| | ¡| tj |¡¡z| |jg|¡Wn,tk
r¾}z t|ƒ‚W5d}~XYnXn t d|¡dS)Nz5I don't know what to do with 'runtime_library_dirs': r
z/EXPORT:r“rz/IMPLIB:r”)r\rqr•Z _fix_lib_argsÚwarnÚstrrrOr.rlr—rZ
EXECUTABLErprorrsrwr…r–r€Úmkpathr„rgrrr    rˆ)r*Z target_descrŒr™r|Ú    librariesÚ library_dirsÚruntime_library_dirsÚexport_symbolsrˆr‰rŠÚ
build_tempr˜Z
fixed_argsZlib_optsZldflagsZ export_optsÚsymZld_argsZdll_nameZdll_extZ implib_filerrrrÚlinkÅsjÿ
ÿþ
 
ÿÿ
 
ÿþ 
zMSVCCompiler.linkcCsd|S)Nz    /LIBPATH:r©r*ÚdirrrrÚlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tdƒ‚dS)Nz<don't know how to set runtime library search path for MSVC++)rr¥rrrÚruntime_library_dir_optionsÿz'MSVCCompiler.runtime_library_dir_optioncCs
| |¡Sr')r–)r*r`rrrÚlibrary_optionszMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj || |¡¡}tj |¡r$|Sq$qdS)NZ_d)rOr.rlr–Úexists)r*Údirsr`rˆZ    try_namesr¦rZlibfilerrrÚfind_library_file#s zMSVCCompiler.find_library_filecCsz|jD].}tj tj |¡|¡}tj |¡r|Sqtjd d¡D].}tj tj |¡|¡}tj |¡rF|SqF|S)aŒReturn path to an MSVC executable program.
 
        Tries to find the program in several places: first, one of the
        MSVC program search paths from the registry; next, the directories
        in the PATH environment variable.  If any of those work, return an
        absolute path that is known to exist.  If none of them work, just
        return the original program name, 'exe'.
        ÚPathrb)rcrOr.rlrÚisfilerdrF)r*Zexer3Úfnrrrre5s    
 
 
zMSVCCompiler.find_exeÚx86cCsÂtsgS|d}|jdkr,d|j|jf}nd|j|f}tD]H}t||ƒ}|r>|jdkrt|j ||¡ d¡S|| d¡Sq>|jdkr¾tD]&}t|d|jƒdk    r–| d    ¡q¾q–gS)
zÐGet a list of devstudio directories (include, lib or path).
 
        Return a list of strings.  The list will be empty if unable to
        access the registry or appropriate registry keys not found.
        z dirsrVz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesrbr=z%s\6.0Nz´It seems you have Visual Studio 6 installed, but the expected registry settings are not present.
You must at least run the Visual Studio GUI once so that these entries are created.)    Ú _can_read_regrWrYr-rrZr8rFr›)r*r.ÚplatformrrrrrrrjKs,
 
ÿÿ
 
 
 
zMSVCCompiler.get_msvc_pathscCs6|dkr| d¡}n
| |¡}|r2d |¡tj|<dS)z¡Set environment variable 'name' to an MSVC path type value.
 
        This is equivalent to a SET command prior to execution of spawned
        commands.
        r`ZlibraryrbN)rjrlrOrd)r*rr3rrrrkos
 
zMSVCCompiler.set_path_env_var)rrr)rrr)NNNrNNN)NrN)
NNNNNrNNNN)r)r°)r9r:r;Ú__doc__Ú compiler_typeZ executablesr‚rƒrxrzrvryr{Zstatic_lib_extensionÚshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr,rqrr’ršr¤r§r¨r©r¬rerjrkrrrrrTÈsj
ÿÿ
Bý
 þ
Xû
ó
S
 
$rTg @z3Importing new compiler from distutils.msvc9compiler)rT)r&)-r³rCrOÚdistutils.errorsrrrrrÚdistutils.ccompilerrrÚ    distutilsr    r±ÚwinregZhkey_modÚ    OpenKeyExr ÚEnumKeyr Ú    EnumValuerÚerrorr Ú ImportErrorÚwin32apiZwin32conÚinfoÚ
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOTr-rrrr&rJrNrSrTrˆZOldMSVCCompilerZdistutils.msvc9compilerrrrrÚ<module>s`
 
 
 
 ý    - 9