bg3V^dZddlZddlZddlZddlZddlZddlZddlm Z ddl Z ddl m Z ddlmZddlmZddlmZmZmZmZdZejd Zejd ZGd d e jjZd ZdZ dZ!dZ"d)dZ#dZ$dZ%dZ&dZ'iZ(ej)dkrp ddl*Z*de(d<de(d<de(d<e+e*ddZ,e,0ej-de,.\Z/Z0e,e(e/e0z<[/[0[,n#e1$re j2d YnwxYwd!Z3d*d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9dS)+a Support code for building Python extensions on Windows. # NT stuff # 1. Make sure libpython.a exists for gcc. If not, build it. # 2. Force windows to use gcc (we're struggling with MSVC and g77 support) # 3. Force windows to use g77 N)log) UnixCCompiler)get_build_version)UnknownFileError)msvc_runtime_librarymsvc_runtime_versionmsvc_runtime_majorget_build_architecturec,t}|gn|gS)zBReplacement for outdated version of get_msvcr from cygwinccompiler)r)msvcrs s/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/numpy/distutils/mingw32ccompiler.pyget_msvcr_replacementr"s " "E22UG+z\[Ordinal/Name Pointer\] Tablez$^\s+\[([\s*[0-9]*)\] ([a-zA-Z0-9_]*)cDeZdZdZdZ d dZ d dZ d dZdS) Mingw32CCompilerzH A modified MingW32 compiler compatible with an MSVC built Python. mingw32rctjj||||t t }t d}|s|r|dt}|r|dd|ztdkr| ddd d n| d d dd dg|_ dS)NT)debugNPY_MINGW_USE_CUSTOM_MSVCR__MSVCRT_VERSION__z0x%04iAMD64z#gcc -g -DDEBUG -DMS_WIN64 -O0 -Wallz7gcc -g -DDEBUG -DMS_WIN64 -O0 -Wall -Wstrict-prototypeszgcc -gzgcc -g -shared)compiler compiler_so linker_exe linker_soz gcc -O2 -Wallz!gcc -O2 -Wall -Wstrict-prototypeszg++ z g++ -sharedzg++) distutilscygwinccompilerCygwinCCompiler__init__build_import_librarybuild_msvcr_library define_macrorr set_executables compiler_cxx)selfverbosedry_runforce msvcr_successmsvcr_dbg_success msvcr_versions r rzMingw32CCompiler.__init__4s2 !1::D'2#* ! , , , ,  (?!' ! ) ) )#G rNct}|r|sg}||||||||||d| | | | | f}tj}||d|jjdS)N)rappendrlink__code__ co_argcount)r% target_descobjectsoutput_filename output_dir libraries library_dirsruntime_library_dirsexport_symbolsr extra_preargsextra_postargs build_temp target_langruntime_libraryargsfuncs r r.zMingw32CCompiler.linkls /00  .    _ - - -$ ! d-DM--.//rc|d}g}|D]<}tjtj|\}}tj|\}}|r |dd}||jddgzvrt d|d|d|rtj|}|dks|dkr@|tj |||z|j z|tj |||j z>|S)Nr@.rcz.reszunknown file type 'z ' (from 'z')) ospathsplitextnormcase splitdrivesrc_extensionsrbasenamer-join obj_extension) r%source_filenames strip_dirr4 obj_namessrc_namebaseextdrvs r object_filenamesz!Mingw32CCompiler.object_filenamess{  Bz ( L LH'**BG,<,#> M=',N""===-=== 6 ! !AMAAMAAA6n66 W $%%%gll67++ 7>>#   JJJ  WWWhh? @ @@rcZtjdd|g}|dS)Nz objdump.exez-p ) subprocess check_outputsplit)rzsts r dump_tablers)  -s!; < > > >  4yyA~~ )C/000 eS  #Q %(8(8(=(==>>> ?@@@ 1222   # #A GGFQqTM " " " " # ##################s"BHH H cndddtfd}d}||p ||S)Namd64x86)rIntelcPtjtjddd}tj|sdStj|D]0\}}}||vr&|vr"tj||cS1dS)NWINDIRz C:\WINDOWSwinsxs)rDrErKrjgetrpwalk)dll_name winsxs_pathrootdirsfilesarchs r _find_dll_in_winsxsz%find_dll.._find_dll_in_winsxssgll2:>>(M#J#J#+-- w~~k** 4!#!5!5 4 4 D$5  TT\\w||D(33333trc2tjgtjddzD]b}tj||}tj|r!tj|cScdS)NPATH;) rgrhrDrjrrErKrpabspath)rrEfilepaths r _find_dll_in_pathz#find_dll.._find_dll_in_pathsZL2:f#5#;#;C#@#@@ 1 1Dw||D(33Hw~~h'' 1wx00000 1 1 1r)r )rrrrs @r find_dllrso  355 7D     111  x ( ( G,=,=h,G,GGrFctjdkrdSt}|tjddS|dkrtjddSt }|r|dz }d|z}tjtj d|}tj |rtjd |d d S|d z}t|}|stj d |zdSd|z}tjtj d|}tj d|d|dt||dd|d|g} tj| } tj|| S)NntFz?Skip building import library: Runtime is not compiled with MSVCPz=Skip building msvcr library: custom functionality not presentrzlib%s.alibszSkip building msvcr library: "z" existsTrcz*Cannot build msvcr library: "%s" not foundz lib%s.defzBuilding msvcr library: "" (from )dlltool-d-l)rDrnr rrrrErKrgrhisfilerrinforr~callremove) r msvcr_ver msvcr_nameout_nameout_filemsvcr_dll_namedll_filedef_namedef_filecmdretcodes r r!r!s w$u#$$I 6 7 7 7u2~~ 6 7 7 7u%''J c :%Hw||CJ99H w~~h 88   t &(N''H  =  ! ! !uZ'Hw||CJ99HHH((($%%%8$$$ dHdH 5Coc""GIhKrctjdkrdSt}|dkrtS|dkrt St d|z)NrrrzUnhandled arch %s)rDrnr _build_import_library_amd64_build_import_library_x86rq)rs r r r Us[ w$ ! # #D w*,,, (***,t3444rc ttjdd\}}gd}tjg}t tdr:tjtjkr |tjnNt tdr9tjtjkr|tjddg}g}|D]G}|||fz}|D];}|D]6} |tj || |7#> M=(((H ZLEsM""&s#*'D'D S_%%%% m $ $&CJ)F)F S_%%%HJLL-77 L LH" L L!!"',,x"J"JKKKK L L $$ 7>>( # # $(# # # # $ :a= !!rct\}}|rtjd|dSt}tjd|d|ddt t jddz}tj t j d|}t||dd |d |g}tj|dS) N)Skip building import library: "%s" existsz'Building import library (arch=AMD64): "rrpython%d%d.defr`rrrr)rrrr{rrkrgrlrDrErKrhrr~ check_call) out_existsrrrrrs r rrs022J =xHHH  HHHhh"### %(8!(<"="==Hw||CJ99H8$$$ dHdH 5C#rct\}}|rtjd|dSdttjddz}t jtj d|}t j |sttdr,t jtj d|}nCttdr,t jtj d|}nd}t j |r|}ntjd |dStjd |d d lm}d ttjddz}t jtj d|}||j|gzd}||\} } t+|d5} || | |j| dddn #1swxYwYt1} dd| d|d|g} t3j| }|rtjddS)z; Build the import libraries for Mingw32-gcc on Windows rNzpython%d%d.libr`rrirr@z+Cannot build import library: "%s" not foundz(Building import library (ARCH=x86): "%s"r)lib2defrF)shellrrz --dllnamez--defz --output-libz:Failed to build import library for gcc. Linking will fail.)rrrrkrgrlrDrErKrhrrrirrrnumpy.distutilsrgetnm DEFAULT_NMparse_nmr output_def DEF_HEADERr{r~r)rrlib_namelib_filebase_librrr nm_outputdlistflistfidrrstatuss r rrs122J =xHHH%(8!(<"="==Hw||CJ99H 7>>( # # 3 & & w||COVXFFHH S- ( ( w||COVXFFHHH 7>>( # # HH HBH M M M FH 7BBB''''''%(8!(<"="==Hw||CJ99H  ( +5::I##I..LE5 h  B5%);SAAABBBBBBBBBBBBBBB!!H   H 8 %C $S ) )F O MNNN FsH22H69H6win32z 8.0.50727.4280z 9.0.21022.890z10.0.30319.460100CRT_ASSEMBLY_VERSIONz (\d+)\.(\d)z9Cannot import msvcrt: using manifest will not be possiblec tt|dz|z}n##t$rtd||fzdwxYwt jd}||||dzS)zUGiven a major and minor version of the MSVCR, returns the corresponding XML file. z)Version %d,%d of MSVCRT not supported yetNa )fullvermajmin)_MSVCRVER_TO_FULLVERstrKeyErrorrqtextwrapdedent)rrrtemplates r msvc_manifest_xmlrs/&s38c>':':; ///Ds$%%*. // H '#cBB BBs # ArzcX|dkrd}n|dkrd}ntd|zd||fzS)aWReturn the rc file used to generate the res file which will be embedded as manifest for given manifest file name, of given type ('dll' or 'exe'). Parameters ---------- name : str name of the manifest file to embed type : str {'dll', 'exe'} type of the binary which will embed the manifest rzr`exerBzType %s not supportedz&#include "winuser.h" %d RT_MANIFEST %s)rq)rntyperctypes r manifest_rcrsN u}} 047888 ~ &&rct}|r4|t|ks#tdt||fzdSdS)z6msver is the ms runtime version used for the MANIFEST.zKDiscrepancy between linked msvcr (%d) and the one about to be embedded (%d)N)r rrq)msverrs r !check_embedded_msvcr_match_linkedr*sb   C .c%jj  JJ,-.. ...  rctj|dgd}tj|dS)Nyocr)rDrErJ_gen_temp_sourcefilerF)configrQs r configtest_namer 6sD 7  F77b#FF G GD 7  D ! !! $$rcHt|}|jj}||zdzS)Nz .manifest)r r exe_extension)rrexexts r manifest_namer :s( 6 " "D O )E %<+ %%rc*t|}|dzS)NrC)r )rrs r rc_namer@s 6 " "D %<rct}||dkrt|t|d\}}t t |t |}t t|d5}|j t|| |ddddS#1swxYwYdSdSdS)Nrfr) get_build_msvc_versionrrrrrrr  temp_filesr-r)rrma_strmi_strmanxmlmans r generate_manifestrEs " $ $E  A:: -e 4 4 4 ZZ--c22NFF&s6{{CKK@@FmF++S11 "S!((v)>)>??? &!!! " " " " " " " " " " " " " " " " " "  :s=CC #C )F)rz):rXrDrgr~rernumpy.distutils.ccompilernumpyrrdistutils.cygwinccompilerrdistutils.unixccompilerrdistutils.msvccompilerrrdistutils.errorsrnumpy.distutils.misc_utilrrr r rcompilerrrrrr{rrrr!r rrrrplatformmsvcrtgetattrcrt_verrgroupsrr ImportErrorrrrrr r rrrZrr r(s;  ! ! 111111NNNNNN------???????????? ,,, 5 6 6 ; < <DDDDDy0@DDDR$A$A$AL###@HHH49999v 5 5 5""""""H(/ / / D<7N &4T"%2T"'7U#'&"8$??  rx88??AAHC.5 s +S G NNN LMMMMM N CCC@&&&&0 . . .%%%&&&  " " " " "s(AC<<DD