Ë �†=ª�¡Geãó`—dZddlmZddlZddlZddlZddlZddlZddlZddl Z ejjejje ««Zejdej «Zd„ZGd„de«Zedk(r&e j,ee j.d d««yy) zuUtility functions for Windows builds. These functions are executed via gyp-win-tool when using the ninja generator. é)Úprint_functionNz/OUT:(?P.+)$cój—t«}|j|«}|�tj|«yy©N)ÚWinToolÚDispatchÚsysÚexit)ÚargsÚexecutorÚ exit_codes ú1/usr/lib/python3.12/site-packages/gyp/win_tool.pyÚmainrs0€Ü ‹Y€(Ø×Ñ Ó%€)ØÐ܇H�HˆYÕðócój—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zy)rz†This class performs all the Windows tooling steps. The methods can either be executed directly, or dispatched from an argument list.c ó—t|«dkr td«‚|ddk7ryd}|D]X}tj|«}|sŒt j ddd|j d «tj«fz«}n|€y||d <y) zWAllows to use a unique instance of mspdbsrv.exe per linker instead of a shared one.éúNot enough argumentsrzlink.exeNz\W+Úz%s_%dÚoutÚ_MSPDBSRV_ENDPOINT_) ÚlenÚ ExceptionÚ_LINK_EXE_OUT_ARGÚmatchÚreÚsubÚgroupÚosÚgetpid)ÚselfÚenvr Ú endpoint_nameÚargÚms r Ú_UseSeparateMspdbsrvzWinTool._UseSeparateMspdbsrv's–€ô ˆ4ƒy�1‚}Ü Ð,Ó -Ð-à ˆA�w�*ÒØ ð€MÛˆÜ × !Ñ ! #Ó &€aÚ ÜŸ™˜v rØ �q—w‘w˜u“~¤r§y¡y£{Ð3Ñ 3ó5ˆ á ð ðÐØ ð "/€CÐÒrcó†—t|«dkr td«‚d|j|d«z}t||«|ddŽS)z(Dispatches a string command to a method.rrzExec%srN)rrÚ_CommandifyNameÚgetattr)r r Úmethods r rzWinTool.DispatchBsL€ä ˆ4ƒy�1‚}Ü Ð,Ó -Ð-à ˜×,Ñ,¨T°!©WÓ5Ñ 5€FØ Œ7�4˜Ó  $ q r (Ð +Ð+rcóB—|j«jdd«S)z@Transforms a tool name like recursive-mirror to RecursiveMirror.Ú-r)ÚtitleÚreplace)r Ú name_strings r r'zWinTool._CommandifyNameJs€à × Ñ Ó × &Ñ & s¨BÓ /Ð/rcó¶—t|«j«ddjd«}|D�cgc]}|jdd«‘Œ}}t|«Scc}w)z@Gets the saved environment from a file for a given architecture.NéþÿÿÿÚÚ=r)ÚopenÚreadÚsplitÚdict)r ÚarchÚpairsÚitemÚkvss r Ú_GetEnvzWinTool._GetEnvNsT€ô �‹J�O‰OÓ ˜c˜rÐ "× (Ñ (¨Ó .€EÙ*/Ó 0©% $ˆ4�:‰:�c˜1Õ ¨%€CÐ 0Ü �‹9Ðùò 1s°Acó8—t|d«j«y)zSimple stamp command.ÚwN)r3Úclose)r Úpaths r Ú ExecStampzWinTool.ExecStampWs€äˆˆsƒO×ÑÕrcó—tjj|«r—tjj|«rd„}t j ||¬«n]tj |tj«s$tj|tj«tj|«tjj|«rt j||«yt j||«y)z)Emulation of rm -rf out && cp -af in out.có¤—tj|tj«s$tj|tj «||«yr)rÚaccessÚW_OKÚchmodÚstatÚS_IWRITE)Úfnr?Úexcinfos r Ú _on_errorz.WinTool.ExecRecursiveMirror.._on_error_s/€ô—‘˜4¤§¡Ô)Ü �H‰H�Tœ4Ÿ=™=Ô )Ù ˆT�(r)ÚonerrorN)rr?ÚexistsÚisdirÚshutilÚrmtreerCrDrErFrGÚunlinkÚcopytreeÚcopy2)r ÚsourceÚdestrJs r ÚExecRecursiveMirrorzWinTool.ExecRecursiveMirror[s’€ä ‡w�w‡~�~�dÔÜ �‰�‰�tÔ ò ô � ‰ �d IÖ.ä�y‰y˜œrŸw™wÔ'ä �(‰(�4œŸ™Ô 'Ü � ‰ �$Œä ‡w�w‡}�}�VÔÜ ‡o�o�f˜dÕ#ä ‡l�l�6˜4Õ rcó8—|j|«}|dk(r|j||«tjdk(r#t |«}|dj dd«|d<t j|tjdk(|t jt jd¬«}|j«\}}|j«D]C}|jd«rŒ|jd «rŒ'|jd «rŒ9t|«ŒE|jS) z°Filter diagnostic output from link that looks like: ' Creating library ui.dll.lib and object ui.dll.exp' This happens when there are exports from the dll or exe. ÚTrueÚwin32rÚ/Ú\T©Úshellr!ÚstdoutÚstderrÚuniversal_newlinesz Creating library zGenerating codezFinished generating code)r;r%rÚplatformÚlistr-Ú subprocessÚPopenÚPIPEÚSTDOUTÚ communicateÚ splitlinesÚ startswithÚprintÚ returncode) r r7Úuse_separate_mspdbsrvr r!ÚlinkrÚ_Úlines r ÚExecLinkWrapperzWinTool.ExecLinkWrapperqsé€ð �,‰,�tÓ €CØ Ò&Ø ×Ñ  TÔ*Ü ‡|�|�wÒÜ �$‹Z€dØ�Q‘—‘  TÓ*€dˆ1�gô × Ñ ˜D¬¯ © ¸Ñ(?ÀSÜ#-§?¡?¼:×;LÑ;LØ/3ô 5€Dð× Ñ Ó �F€CˆØ—‘Ö ˆØ�o‰oÐ4Õ5Ø�o‰oÐ/Õ0Ø�o‰oÐ8Õ9Ü ˆd� ð !ð �?‰?Ðrc óR—tj|||||||dj| «dœ } d} | rRtjd| z«|dk(r5tjd| z«tjd| z«d| z} tj|| z«| rötjd | z«d | z} d | z} t | d «5}t | d «5}t jd d|j««}t jd d|j««}ddd«ddd«k7rZtj|«d„}||«|| «|| «tjjd|›d| ›d| ›d�«yyy#1swYŒrxYw#1swYŒvxYw)zZA wrapper for handling creating a manifest resource and then executing a link command.Ú ) Úpythonr7rÚldcmdÚresnameÚmtÚrcÚintermediate_manifestÚ manifestsrzn%(python)s gyp-win-tool manifest-wrapper %(arch)s %(mt)s -nologo -manifest %(manifests)s -out:%(out)s.manifestrWz`%(python)s gyp-win-tool manifest-to-rc %(arch)s %(out)s.manifest %(out)s.manifest.rc %(resname)szF%(python)s gyp-win-tool rc-wrapper %(arch)s %(rc)s %(out)s.manifest.rcz %(out)s.manifest.resz’%(python)s gyp-win-tool manifest-wrapper %(arch)s %(mt)s -nologo -manifest %(out)s.manifest %(intermediate_manifest)s -out:%(out)s.assert.manifestz%(out)s.assert.manifestz%(out)s.manifestÚrz\s+Ncó:—t|tj¬«tdtj¬«t|d«5}t|j «tj¬«tdtj¬«ddd«y#1swYyxYw)N)Úfilez-----ry)rirr^r3r4)ÚfilenameÚfs r Údumpz+WinTool.ExecLinkWithManifests..dumpÍsX€Ü �œsŸz™zÕ *Ü �œcŸj™jÕ )Ü�H˜cÔ" aÜ �!—&‘&“(¤§¡Õ ,Ü �'¤§ ¡ Õ +÷#×"Ñ"ús ÁABÂBzLinker generated manifest "z" added to final manifest "z" (result in "z8"). Were /MANIFEST switches used in #pragma statements? r) rÚ executableÚjoinrbÚ check_callr3rrr4rrPr^Úwrite)r r7Úembed_manifestrrsrtrurvrwrxÚ variablesÚ add_to_ldÚassert_manifestÚ our_manifestÚour_fÚassert_fÚour_dataÚ assert_datar~s r ÚExecLinkWithManifestszWinTool.ExecLinkWithManifests�s¿€ô—‘ØØ ØØØ Ø Ø4Ø—8‘8˜IÓ&ñ €Ið€IÙÜ×Ñð :Ø z RT_MANIFEST "rZrYÚ"N)r3r‚rr?Úabspathr-)r r7r Ú manifest_pathÚ resource_pathÚ resource_nameÚoutputs r ÚExecManifestToRczWinTool.ExecManifestToRcësY€ð37Ñ/€M�= -Ü ˆm˜SÔ ! VØ ‡l‚lÚÜ �‰�‰˜ Ó&×.Ñ.¨t°SÕ9ð;ô<÷ "× !Ñ !ús “AA"Á"A+c ó°‡—ddgt| «zd|d|d|d|d|d||g z} |j|«} tj| d | tjtj d ¬ «} | j «\} }| j«}d Štˆfd „|D««}|D]$}|j‰«rŒ||vsŒt|«Œ&| jS) zjFilter noisy filenames output from MIDL compile step that isn't quietable via command line flags. Úmidlz/nologoz/outz/tlbz/hz/dlldataz/iidz/proxyTr[)z Processing z64 bit Processing c3ó~•K—|]4}|j‰«r!tjj|«–—Œ6y­wr)rhrr?Úbasename)Ú.0ÚxÚprefixess €r Ú z*WinTool.ExecMidlWrapper.. s3øèø€ð?Ù#˜ q§|¡|°HÔ'=ô—W‘W×%Ñ% a×(Ù#ùsƒ:=) rar;rbrcrdrerfrgÚsetrhrirj)r r7ÚoutdirÚtlbÚhÚdlldataÚiidÚproxyÚidlÚflagsr r!r�rrmÚlinesÚ processingrnrŸs @r ÚExecMidlWrapperzWinTool.ExecMidlWrapperõsëø€ð �IÐ ¤ e£Ñ ,Ø�Ø�Ø ˆaØ�GØ�Ø�%Ø ð0 ñ €Dð �,‰,�tÓ €CÜ × Ñ ˜T¨°3Ü$.§O¡O¼Jר�o‰o˜oÕ.Ú Ü ˆd� ð !ð × Ñ Ðrcó^—|j|«}tj|d|tjtjd¬«}|j «\}}|j «D]4}|jd«rŒ|jd«rŒ'|sŒ*t|«Œ6|jS)zgFilter logo banner from invocations of rc.exe. Older versions of RC don't support the /nologo flag.Tr[z+Microsoft (R) Windows (R) Resource Compilerr®r¯rŽs r Ú ExecRcWrapperzWinTool.ExecRcWrapper#s‘€ð �,‰,�tÓ €CÜ × Ñ ˜T¨°3Ü$.§O¡O¼J×Ð>rcó6—tjj|t«}|j d«}|D�cgc]%}tjj ||«dz‘Œ'}}dg}|j |«tj|dt¬«Scc}w)zfExecuted by msvs-ninja projects when the 'ClCompile' target is used to build selected C/C++ files.Ú;z^^z ninja.exeT)r\r´) rr?ÚrelpathÚBASE_DIRr5r€Úextendrbr·)r Ú project_dirÚselected_filesr|Ú ninja_targetsÚcmds r Ú ExecClCompilezWinTool.ExecClCompile?s‡€ô—'‘'—/‘/ +¬xÓ8€KØ#×)Ñ)¨#Ó.€Ná&ó(Ù&ˆHô—W‘W—\‘\ +¨xÓ8¸4Ó?Ø&ðð(à ˆ-€C؇J�Jˆ}ÔÜ �?‰?˜3 d´Ô 9Ð9ùò (sº*BN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r%rr'r;r@rUrorŒr�r˜r¬r°r²r¼rÆ©rr rr#sU„ñ@ò/ò6,ò0òòò!ò,ò ò ò ?ó :rrÚ__main__r)rÊÚ __future__rrrrNrbrFÚstringrr?Údirnamer“Ú__file__rÀÚcompileÚ IGNORECASErrÚobjectrrÇr ÚargvrËrr ÚrÕs�ðñõ &ã Û Û ÛÛ Û Û à �7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó 5€ð�B—J‘JÐ2°B·M±MÓBÐòôe:ˆfôe:ðN  ˆzÒØ €#‡(�(‰4�—‘˜˜� Ó Õðr