+
    –°³jª ã                   óR
  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIH t H!t! ^ R	I"H#t#H$t$ ^ R
I%H&t& ^ RI'H(t( ^ RI)H*t* ] PV                  ! 4       '       d   ^ RI,H-t-H.t. ^ RI/H0t0H1t1H2t2H3t3 MR R lt0R R lt1R R lt2R R lt3Rt4]Pj                  Pm                  ]74      t8]Pj                  Ps                  ]Pj                  Ps                  ]84      4      t:]Pj                  Pw                  ]:R4      t<]P                  P{                  R4      t>]P                  P{                  R4      t?]P                  R8H  t@RtA]@'       d   ]P„                  ! 4       R3MR¹tC]Pˆ                  ! ]E4      tFR R ltGR  R! ltH]P’                  R" R# l4       tJR$ R% ltK]P˜                  ! ^4      R& R' l4       tMR( R) ltN]P’                  R* R+ l4       tO ! R, R-4      tP]P’                  R. R/ l4       tQ]P’                  R0 R1 l4       tRR2 R3 ltSR4 R5 ltTR6 R7 ltURºR8 R9 lltV]P’                  R: R; l4       tW]P’                  R< R= l4       tX]P’                  R> R? l4       tY]P’                  R@ RA l4       tZ]P’                  RB RC l4       t[]P’                  RD RE l4       t\]P’                  RF RG l4       t]]P’                  RH RI l4       t^]P’                  RJ RK l4       t_]P’                  RL RM l4       t`]P’                  RN RO l4       ta]P’                  RP RQ l4       tbRR RS ltcRT RU ltdRV RW lteRX RY ltfRZ R[ ltgR\ R] lthR^ R_ lti ! R` Ra4      tjR»Rb Rc lltkR¼Rd Re lltlRf Rg ltmRh Ri ltnRj Rk ltoRl Rm ltp]P’                  Rn Ro l4       tq]P’                  Rp Rq l4       trRr Rs ltsR½Rt Ru llttRv Rw ltuR¾Rx Ry lltv ! Rz R{]j4      twR| R} ltxR~ R ltyR€ R� ltzR‚ Rƒ lt{R„ R… lt|R† R‡ lt}Rˆ R‰ lt~RŠ R‹ lt]P’                  RŒ R� l4       t€]P’                  RŽ R� l4       t�]P’                  R� R‘ l4       t‚]P’                  R’ R“ l4       tƒR” R• lt„R– R— lt…R˜ R™ lt†Rš R› lt‡Rœ R� ltˆ ! Rž RŸ]w4      t‰R  R¡ ltŠ]P˜                  ! ^4      R¢ R£ l4       t‹R¤ R¥ ltŒR¦t�R§ R¨ ltŽR© Rª lt�R« R¬ lt�R­ R® lt‘R¿R¯ R° llt’ ! R± R²]‰4      t“R³ R´ lt” ! Rµ R¶4      t•R· R¸ lt–R# )Àé    N)ÚSequence)ÚcdllÚwintypes)Úfind_library)ÚPath©ÚAny)Údynamo_timed)ÚconfigÚexc)Úinvalid_vec_isaÚVecISA)Ú	cache_dir©ÚTorchVersion)Ú
OrderedSet)Ú_run_build_commandÚbuild_paths)Úlog_global_cache_errorsÚlog_global_cache_statsÚlog_global_cache_valsÚuse_global_cachec                ó4   € V ^8„  d   QhR\         R\         RR/# ©é   ÚargsÚkwargsÚreturnNr   )Úformats   "Ú\/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/cpp_builder.pyÚ__annotate__r!   0   s!   € ÷ ñ ¤sð ´cð ¸dñ ó    c                  ó   € R # ©N© ©r   r   s   *,r    r   r   0   ó   € Ùr"   c                ó4   € V ^8„  d   QhR\         R\         RR/# r   r   )r   s   "r    r!   r!   3   s!   € ÷ ñ ¤cð ´Sð ¸Tñ r"   c                  ó   € R # r$   r%   r&   s   *,r    r   r   3   r'   r"   c                ó4   € V ^8„  d   QhR\         R\         RR/# r   r   )r   s   "r    r!   r!   6   s!   € ÷ ñ ¤Sð ´Cð ¸Dñ r"   c                  ó   € R # r$   r%   r&   s   *,r    r   r   6   r'   r"   c                ó$   € V ^8„  d   QhR\         /# ©r   r   ©Úbool)r   s   "r    r!   r!   9   s   € ÷ ñ œdñ r"   c                  ó   € R # ©Fr%   r%   r"   r    r   r   9   s   € Ùr"   ÚCxxBuildz_inductor/script.ldÚlinuxÚdarwinÚwin32zx86_64-w64-mingw32-g++Úreplacec                óF   € V ^8„  d   QhR\         R\        \         ,          /# ©r   Úcompilerr   ©ÚstrÚlist)r   s   "r    r!   r!   R   s   € ÷ ñ ¤cð ¬d´3­iñ r"   c                 óv   € \         '       d   V .# \        P                  ! V 4      pV'       g   \        R 4      hV# )zempty compiler command)Ú_IS_WINDOWSÚshlexÚsplitÚ
ValueError)r9   Úcommands   & r    Ú_split_compiler_commandrC   R   s1   € ßƒ{ØˆzÐÜ�kŠk˜(Ó#€GßÜÐ1Ó2Ð2Ø€Nr"   c                óR   € V ^8„  d   QhR\         R\         R\        \         ,          /# )r   r9   r   r   r:   )r   s   "r    r!   r!   [   s%   € ÷ 7ñ 7¤ð 7¬Cð 7´D¼µIñ 7r"   c                 ó    € . \        V 4      OVO# r$   )rC   )r9   r   s   &*r    Ú_compiler_commandrF   [   s   € Ø6Ô$ XÓ.Ð6°Ð6Ð6r"   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   Úcpp_compilerr   ©r;   )r   s   "r    r!   r!   `   s   € ÷ ñ ¬3ð ´3ñ r"   c                 óð   €  \         P                  ! \        V R 4      \         P                  R7      P	                  4       P
                  ! \         #   \        \         P                  \        3 d     R# i ; i)ú	--version©ÚstderrÚ )
Ú
subprocessÚcheck_outputrF   ÚDEVNULLÚstripÚdecodeÚSUBPROCESS_DECODE_ARGSÚFileNotFoundErrorÚSubprocessErrorrA   )rI   s   &r    Ú_compiler_version_stringrX   _   sk   € ð
ä×#Ò#Ü! ,°Ó<Ü!×)Ñ)ô÷ ‰U‹Wß‰Vðô
 ,ð-ð	
øô œz×9Ñ9¼:ÐFô Úðús   ‚AA Á A5Á4A5c                ó0   € V ^8„  d   QhR\         R\         /# rH   rJ   )r   s   "r    r!   r!   n   s   € ÷ Dñ D¬sð D´sñ Dr"   c                 óZ   € \        V 4      pV'       d   VP                  4       ^ ,          # R# )r   rO   )rX   Ú
splitlines)rI   Úversion_strings   & r    Ú_compiler_version_first_liner]   n   s'   € Ü-¨lÓ;€Nß-;ˆ>×$Ñ$Ó& qÕ)ÐCÀÐCr"   c                óT   € V ^8„  d   QhR\         \        R,          ,          R\        /# )r   ÚsearchNr   )r   r;   )r   s   "r    r!   r!   t   s#   € ÷ !ñ !¤¬¨t­Õ 4ð !¼ñ !r"   c                 ó   € ^ RI HpHp V  F±  p Vfˆ   \        P                  R8w  d   K  \
        P                  ! R4      '       g   K=  ^ RIHp V! 4       pV! \
        P                  P                  VR4      VR7      pV;_uu_ 4        \        4       pRRR4       \        P                  ! \        VR4      4       Vu # 	  \&        P(                  h  + '       g   i     LF; i  \        P                  \         \"        \$        3 d     EK  i ; i)	r   )Úget_lock_dirÚLOCK_TIMEOUTNr3   ÚTORCH_INDUCTOR_INSTALL_GXX)ÚFileLockzg++.lock)ÚtimeoutrL   )Útorch._inductor.codecachera   rb   ÚsysÚplatformÚosÚgetenvÚtorch.utils._filelockrd   ÚpathÚjoinÚinstall_gcc_via_condarP   rQ   rF   rW   rV   ÚImportErrorrA   r   ÚInvalidCxxCompiler)r_   ra   rb   Úcxxrd   Úlock_dirÚlocks   &      r    Úcpp_compiler_searchrt   s   sÓ   € çDãˆð	ØŠ{ô —<‘< 7Ô*Ùä—y’yÐ!=×>Ò>ÙÝ:á'›>�ÙÜ—G‘G—L‘L ¨:Ó6Àô�÷ ’TÜ/Ó1�C÷ ä×#Ò#Ô$5°c¸;Ó$GÔHØŠJñ' ô6 ×
 Ñ
 Ð ÷ —Tûô
 ×&Ñ&ÜÜÜð	
ô 	ó ð	ús4   �C#ªC#Á?C#ÂCÂ)C#ÃC ÃC#Ã#%DÄDc                ó$   € V ^8„  d   QhR\         /# r-   rJ   )r   s   "r    r!   r!   •   s   € ÷ ñ œsñ r"   c            
     óê  € \         P                  P                  \        4       R4      p \         P                  P                  V RR4      p\         P                  P	                  V4      '       g…   \
        P                  R4       \         P                  P                  RR4      pVf   \        P                  ! R4      pVe2   \        P                  ! VRRV  2R	R
RRR.\        P                  R7       V# )z>On older systems, this is a quick way to get a modern compilerÚgccÚbinúg++zDownloading GCC via condaÚ	CONDA_EXEÚcondaÚcreatez	--prefix=z--channel=conda-forgez--quietz-yz
python=3.8Úgxx)Ústdout)ri   rl   rm   r   ÚexistsÚlogÚinfoÚenvironÚgetÚshutilÚwhichrP   Ú
check_callÚPIPE)ÚprefixÚcxx_pathr{   s      r    rn   rn   •   s½   € ä�W‰W�\‰\œ)›+ uÓ-€FÜ�w‰w�|‰|˜F E¨5Ó1€HÜ�7‰7�>‰>˜(×#Ò#Ü�‰Ð,Ô-Ü—
‘
—‘˜{¨GÓ4ˆØŠ=Ü—L’L Ó)ˆEØÒÜ×!Ò!àØØ ˜xÐ(Ø+ØØØ Øð	ô "—‘õð €Or"   c                ó(   € V ^8„  d   QhR\         RR/# ©r   r9   r   NrJ   )r   s   "r    r!   r!   °   s   € ÷ ñ ¬3ð °4ñ r"   c                óê   €  \         P                  ! \        V R4      \         P                  R7       R#   \         d   p\
        P                  ! T 4      ThRp?i\         P                   d     R# i ; i)zM
Check if compiler is ready, in case end user not activate MSVC environment.
ú/helprM   N)rP   rQ   rF   ÚSTDOUTrV   r   rp   rW   )r9   Úes   & r    Úcheck_compiler_exist_windowsr�   ¯   s]   € ð
Ü×ÒÜ˜h¨Ó0¼×9JÑ9J÷	
øô ô 6Ü×$Ò$ XÓ.°AÐ5ûÜ×%Ñ%ô âðús    ‚04 ´A2¿AÁA2Á-A2Á1A2c                   óh   a € ] tR t^¿t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )ÚWinPeFileVersionInfoc                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	file_pathr   NrJ   )r   Ú__classdict__s   "€r    r!   Ú!WinPeFileVersionInfo.__annotate__À   s   ø€ ÷ !ñ !¡#ð !¨$ñ !r"   c                óˆ   € Wn         \        P                  ! R 4      V n        V P	                  4        V P                  4        R# )zversion.dllN)r”   ÚctypesÚWinDLLÚversion_dllÚ_setup_functionsÚ_get_version_info)Úselfr”   s   &&r    Ú__init__ÚWinPeFileVersionInfo.__init__À   s0   € Ø"ŒÜ!Ÿ=š=¨Ó7ˆÔØ×ÑÔØ×ÑÖ r"   c                ó   <€ V ^8„  d   QhRR/# ©r   r   Nr%   )r   r•   s   "€r    r!   r–   Æ   s   ø€ ÷ @ñ @ $ñ @r"   c                ó  € \         P                  \         P                  .V P                  P                  n        \         P                  V P                  P                  n        \         P                  \         P                  \         P                  \         P                  .V P                  P                  n        \         P                  V P                  P                  n        \         P                  \         P                  \        P                  ! \        P                  4      \        P                  ! \         P                  4      .V P                  P                   n        \         P                  V P                  P                   n        R # r$   )r   ÚLPCWSTRÚLPDWORDrš   ÚGetFileVersionInfoSizeWÚargtypesÚDWORDÚrestypeÚLPVOIDÚGetFileVersionInfoWÚBOOLÚLPCVOIDr˜   ÚPOINTERÚc_void_pÚUINTÚVerQueryValueW©r�   s   &r    r›   Ú%WinPeFileVersionInfo._setup_functionsÆ   sú   € ä×ÑÜ×Ñð=
ˆ×Ñ×0Ñ0Ô9ô <D¿>¹>ˆ×Ñ×0Ñ0Ô8ô ×ÑÜ�N‰NÜ�N‰NÜ�O‰Oð	9
ˆ×Ñ×,Ñ,Ô5ô 8@·}±}ˆ×Ñ×,Ñ,Ô4ô ×ÑÜ×ÑÜ�NŠNœ6Ÿ?™?Ó+Ü�NŠNœ8Ÿ=™=Ó)ð	4
ˆ×Ñ×'Ñ'Ô0ô 3;·-±-ˆ×Ñ×'Ñ'Ö/r"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   r–   Ý   s   ø€ ÷ Oñ O 4ñ Or"   c                ó¾  € \         P                  ! 4       pV P                  P                  V P                  \
        P                  ! V4      4      pV^ 8X  d   \        RV P                   R24      h\
        P                  ! V4      V n	        V P                  P                  V P                  ^ W P                  4      pV'       g   \        RV P                   R24      hR# )r   zCan't get version info size of Ú.zCan't get version info of N)r   r§   rš   r¥   r”   r˜   ÚbyrefÚRuntimeErrorÚcreate_string_bufferÚversion_inforª   )r�   ÚdummyÚsizeÚsuccesss   &   r    rœ   Ú&WinPeFileVersionInfo._get_version_infoÝ   s¸   € Ü—’Ó ˆØ×Ñ×7Ñ7Ø�N‰NœFŸLšL¨Ó/ó
ˆð �1Œ9ÜÐ!@ÀÇÁÐ@PÐPQÐRÓSÐSä"×7Ò7¸Ó=ˆÔØ×"Ñ"×6Ñ6Ø�N‰N˜A˜t×%6Ñ%6ó
ˆ÷ ÜÐ!;¸D¿N¹NÐ;KÈ1ÐMÓNÐNñ r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   )Úint)r   r•   s   "€r    r!   r–   î   s   ø€ ÷ ñ ¡ñ r"   c                ó®  € \         P                  ! 4       p\        P                  ! 4       pV P                  P                  V P                  R \         P                  ! V4      \         P                  ! V4      4      pV'       d   VP                  ^ 8X  d   ^ # . p^ pVP                  e£   \        VP                  ^,          4       F€  pV^,          p\         P                  ! VP                  V,           ^4      p\        P                  VR,          R4      p\        P                  VR,          R4      p	VP                  WY34       K‚  	  V# \        R4       V# )z\VarFileInfo\Translation:Nr   NÚlittle:r   é   NzBuffer is None)r˜   r®   r   r¯   rš   r°   r¹   r¶   ÚvalueÚrangeÚ	string_atr¿   Ú
from_bytesÚappendÚprint)
r�   Ú	lp_bufferÚu_lenr¼   ÚtranslationsÚlang_idÚiÚoffsetÚdataÚ	code_pages
   &         r    Úget_language_idÚ$WinPeFileVersionInfo.get_language_idî   s  € Ü—O’OÓ%ˆ	Ü—’“ˆà×"Ñ"×1Ñ1Ø×ÑØ'Ü�LŠL˜Ó#Ü�LŠL˜Óó	
ˆ÷ ˜%Ÿ+™+¨Ô*ÙàˆØˆØ�?‰?Ò&Ü˜5Ÿ;™;¨!Õ+Ö,�Ø˜Q��Ü×'Ò'¨	¯©¸&Õ(@À!ÓD�ÜŸ.™.¨¨b­°8Ó<�ÜŸN™N¨4°­9°hÓ?�	Ø×#Ñ# WÐ$8Ö9ñ -ð ˆô Ð"Ô#àˆr"   )r”   rš   r¹   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rž   r›   rœ   rÑ   Ú__static_attributes__Ú__classdictcell__©r•   s   @r    r’   r’   ¿   s1   ø‡ € ÷!ð !÷@ð @÷.Oð O÷"ö r"   r’   c                ó(   € V ^8„  d   QhR\         RR/# r‹   rJ   )r   s   "r    r!   r!     s   € ÷ l
ñ l
¬ð l
°ñ l
r"   c                ó  € R R lp\        V 4      '       g   R# \        P                  P                  V 4      '       d   T pMV! 4       w  r2VRJ d   R# \	        V4      pVP                  4       pVR8w  d   \        R4      hR# )z¬
Torch.compile() is only work on MSVC with English language pack well.
Check MSVC's language pack: https://github.com/pytorch/pytorch/issues/157673#issuecomment-3051682766
c                óF   € V ^8„  d   QhR\         \        \        3,          /# r-   ©Útupler/   r;   )r   s   "r    r!   Ú/check_msvc_cl_language_id.<locals>.__annotate__  s   € ÷ Rñ Rœe¤D¬# IÕ.ñ Rr"   c            	     ó>  € \         P                  P                  \         P                  P	                  RR4      RRR4      p \         P                  P                  V 4      '       gh   \         P                  P                  \         P                  P	                  RR4      RRR4      p \         P                  P                  V 4      '       g   R#  V RR	R
RRRRR.	p\        P                  ! VRRR7      P                  4       pV'       g   R# \         P                  P                  VRRR4      p\         P                  P                  V4      '       g   R# \         P                  ! V4       Uu. uFI  p\         P                  P                  \         P                  P                  W44      4      '       g   KG  VNKK  	  ppV'       g   R# \        VRR7      ^ ,          p\         P                  P                  VVRRRR4      p\         P                  P                  V4      '       d   RV3# \         P                  P                  VVRRRR4      p\         P                  P                  V4      '       d   RV3#  R# u upi   \        P                  \        3 d    Ru # i ; i)z-
Finds the path to cl.exe using vswhere.exe.
zProgramFiles(x86)zC:\Program Files (x86)zMicrosoft Visual StudioÚ	Installerzvswhere.exeÚProgramFileszC:\Program Filesz-latestz-prereleasez	-productsÚ*z	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z	-propertyÚinstallationPathTúutf-8)ÚtextÚencodingÚVCÚToolsÚMSVC)Úreverserx   ÚHostX64Úx64zcl.exeÚHostX86Úx86©FrO   )ri   rl   rm   r‚   rƒ   r   rP   rQ   rS   ÚlistdirÚisdirÚsortedÚCalledProcessErrorrV   )Úvswhere_pathÚcmdÚvs_install_pathÚmsvc_tools_pathÚdÚtoolset_versionsÚlatest_toolset_versionÚcl_paths           r    Úget_msvc_cl_pathÚ3check_msvc_cl_language_id.<locals>.get_msvc_cl_path  sD  € ô —w‘w—|‘|Ü�J‰J�N‰NÐ.Ð0IÓJØ%ØØó	
ˆô �w‰w�~‰~˜l×+Ò+ÜŸ7™7Ÿ<™<Ü—
‘
—‘˜~Ð/BÓCØ)ØØó	ˆLô —7‘7—>‘> ,×/Ò/Ø Ð ð<	ð ØØØØØØCØØ"ð
ˆCô )×5Ò5Ø˜$¨ôç‰e‹gð ÷ #Ø Ð ô !Ÿg™gŸl™l¨?¸DÀ'È6ÓRˆOÜ—7‘7—>‘> /×2Ò2Ø Ð ô
 Ÿš OÔ4ó á4�AÜ—7‘7—=‘=¤§¡§¡¨oÓ!A×B÷ �Ù4ð ð  ÷
 $Ø Ð Ü%+Ð,<ÀdÔ%KÈAÕ%NÐ"ô —g‘g—l‘lØØ&ØØØØóˆGô �w‰w�~‰~˜g×&Ò&Ø˜W�}Ð$ô Ÿ'™'Ÿ,™,Ø#Ø*ØØØØó�ô —7‘7—>‘> '×*Ò*Ø ˜=Ð(ð +ð ÐùòI øôB ×-Ñ-Ô/@ÐAô 	ØÒð	úsX   Ã9I< ÄI< Ä
AI< ÅI< ÅI< Å+AI7Æ4I7Æ:I< ÇA I< È'AI< É0I< É7I< É<JÊJNFi	  znTorch.compile() is only support MSVC with English language pack,Please reinstall its language pack to English.)Ú_is_msvc_clri   rl   r   r’   rÑ   r·   )r9   rý   Úcl_exe_pathÚb_retr¹   rÌ   s   &     r    Úcheck_msvc_cl_language_idr    s|   € õRôh �x× Ò Ùä	‡w�w‡~�~�h×Òà‰á-Ó/ÑˆØ�E‹>Ùä'¨Ó4€LØ×*Ñ*Ó,€GØ�$„äð=ó
ð 	
ñ r"   c                ó0   € V ^8„  d   QhR\         R\         /# r8   rJ   )r   s   "r    r!   r!   }  s   € ÷ ñ ¤sð ¬sñ r"   c                óö  €  \         P                  ! \        V R4      \         P                  RR7      pRpTP                  4        FA  pR	T9   g   K  TP                  R
^4      R,          P                  4       P                  4       pKC  	  Tf   \        RT  RT  R24      hTR9  d   \        RT  RT 24      hT#   \         d   p\        RT  R24      ThRp?i\         d   p\        RT  R24      ThRp?ii ; i)zK
Check if MinGW `compiler` exists and return it's flavor (win32 or posix).
ú-vT)rN   ræ   z
Compiler: z is not found.NzFailed to run z -vzThread modelÚ:zCannot determine the flavor of z, (win32 or posix). No Thread model found in zOnly win32 and pofix flavor of z is supported. The flavor is éÿÿÿÿ)r5   Úposix)rP   rQ   rF   rŽ   rV   r·   Ú	Exceptionr[   r@   rS   Úlower)r9   Úoutr�   ÚflavorÚlines   &    r    Úcheck_mingw_win32_flavorr  |  s  € ð
	BÜ×%Ò%Ü˜h¨Ó-Ü×$Ñ$Øô
ˆð €FØ—‘Ö ˆØ˜TÖ!Ø—Z‘Z  QÓ'¨Õ+×1Ñ1Ó3×9Ñ9Ó;ŠFñ !ð ‚~ÜØ-¨h¨ZÐ7cÐdlÐcmÐmpÐqó
ð 	
ð Ð'Ô'ÜØ-¨h¨ZÐ7TÐU[ÐT\Ð]ó
ð 	
ð €Møô) ô IÜ˜Z¨ z°Ð@ÓAÀqÐHûÜô BÜ˜^¨H¨:°SÐ9Ó:ÀÐAûðBús)   ‚1B: Â:C8ÃCÃC8Ã"C8Ã#C3Ã3C8c                ó$   € V ^8„  d   QhR\         /# r-   rJ   )r   s   "r    r!   r!   ž  s   € ÷ ñ œ#ñ r"   c                  óÄ  € \         P                  P                  R 8X  dI   \        P                  R8w  d4   \
        p \         P                  P                  '       g   \        V 4       V # \        '       dD   \        P                  P                  RR4      p \        V 4      p \        V 4       \        V 4       V # \         P                  ! 4       '       d   \         P"                  # \%        \         P&                  P(                  \*        \,        34      '       d%   \-        \         P&                  P(                  4      pM\         P&                  P(                  3p\/        V4      p V # )Úwindowsr5   ÚCXXÚcl)r   Úaot_inductorÚcross_target_platformrg   rh   Ú	MINGW_GXXÚpackage_cpp_onlyr  r>   ri   r‚   rƒ   Únormalize_path_separatorr�   r  Ú	is_fbcoder   ÚccÚ
isinstanceÚcpprq   r<   rÞ   rt   )r9   r_   s     r    Úget_cpp_compilerr  ž  sç   € ä×Ñ×1Ñ1°YÔ>Ü�L‰L˜GÔ#ô ˆÜ×"Ñ"×3×3Ð3Ü$ XÔ.Øˆçƒ{Ü—:‘:—>‘> %¨Ó.ˆÜ+¨HÓ5ˆÜ$ XÔ.Ü! (Ô+ð €Oô ×Ò×ÒÜ—>‘>Ð!Ü”f—j‘j—n‘n¤t¬U m×4Ò4Üœ6Ÿ:™:Ÿ>™>Ó*‰Fä—j‘j—n‘nÐ&ˆFÜ& vÓ.ˆØ€Or"   c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# )r   Úuse_relative_pathr   )r/   rÞ   r;   )r   s   "r    r!   r!   ¹  s"   € ÷ ñ ¬$ð ´5¼¼c¸µ?ñ r"   c                 óê   € \         '       d   \        R 4      h\        P                  ! 4       '       d<   \        P
                  pV '       d   \        P                  M\        P                  pW3# RpRpW3# )zWindows is not supported yet.ÚldÚobjcopy)r>   r·   r   r  r   r!  Úobjcopy_fallbackr"  )r  r!  r"  s   &  r    Úget_ld_and_objcopyr$  ¹  sg   € ßƒ{ÜÐ:Ó;Ð;ä×Ò×ÒÜ—‘ˆB÷ %ô ×,Ò,ä ×(Ñ(ð ð ˆ;Ðð ˆBØˆGØˆ;Ðr"   c          
      óT   € V ^8„  d   QhR\         R\         R\         R\         R\         /# )r   Ú
cubin_fileÚkernel_namer!  r"  r   rJ   )r   s   "r    r!   r!   Ê  s:   € ÷ ñ Üðäðô 	ðô ð	ô
 	ñr"   c                 óÀ  € V R ,           pV RV RV  2p\         P                  ! VP                  4       RRRR7       V RV 2p\         P                  ! VP                  4       RRRR7       \        P                  ! RRV 4      pVRV R	V R
2,           RV RV R2,           RV RV R2,           V,           p\         P                  ! VP                  4       RRRR7       V# )ú.oz  -r -b binary -z noexecstack -o Ú T©Úcapture_outputræ   ÚcheckzB --rename-section .data=.rodata,alloc,load,readonly,data,contents z[\W]Ú_z --redefine-sym _binary_z	_start=__z_start z--redefine-sym _binary_z_size=__z_size z_end=__z_end )rP   Úrunr@   ÚreÚsub)r&  r'  r!  r"  Úobj_filerö   Ú	file_names   &&&&   r    Úconvert_cubin_to_objr4  Ê  s÷   € ð ˜DÕ €HàˆDÐ0°°
¸!¸J¸<Ð
H€CÜ‡N‚N�3—9‘9“;¨t¸$ÀdÕKàˆIÐWÐX`ÐWaÐ
b€CÜ‡N‚N�3—9‘9“;¨t¸$ÀdÕKô —’�w  ZÓ0€IàØ$ Y K¨y¸¸ÀWÐ
Mõ	Nà# I ;¨h°{°mÀ6Ð
Jõ	Kð $ I ;¨g°k°]À%Ð
Hõ	Ið õ		ð ô ‡N‚N�3—9‘9“;¨t¸$ÀdÕKØ€Or"   c                ó€   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        R\        /# )r   ÚcubinsÚ
output_dirrI   r   )r<   rÞ   r;   )r   s   "r    r!   r!   å  s=   € ÷ /ñ /Ü””sœC�x•Õ!ð/äð/ô ð/ô 	ñ	/r"   c                óH  € \         P                  P                  VR4      p\         P                  P                  VR4      p\        VR4      ;_uu_ 4       pVP	                  R4       V  Fs  w  rg\         P                  P                  V4      pVP                  RR4      P                  RR4      p	VP	                  R	V R
V RV RV	 RV RV RV RV RV R24       Ku  	  RRR4       \        P                  ! \        VRVRV4      RRRR7       V#   + '       g   i     L9; i)aE  Convert multiple cubin files to a single .o using batched .incbin assembly.

Instead of spawning 3 subprocesses per cubin (ld + 2x objcopy), generates
a single .S file with .incbin directives for all cubins and compiles it
with one compiler invocation. Produces bit-identical rodata and symbols
as the per-cubin convert_cubin_to_obj approach.

Args:
    cubins: list of (cubin_file_path, kernel_name) tuples.
    output_dir: directory for the generated .S and .o files.
    cpp_compiler: C compiler to use for assembling (default: gcc).

Returns:
    Path to the combined .o file.
zcubins_combined.Szcubins_combined.oÚwz.section .rodata
Ú\z\\Ú"z\"z.balign 16
.global __z_start
.global __z_end
__z_start:
.incbin "z"
__z_end:
.global __z_size
.set __z	_size, __z	_end - __z_start
Nú-cú-oTr+  )
ri   rl   rm   ÚopenÚwriteÚabspathr6   rP   r/  rF   )
r6  r7  rI   Úasm_pathÚobj_pathÚfr&  r'  Ú	abs_cubinÚescaped_paths
   &&&       r    Úbatch_convert_cubins_to_objrF  å  s.  € ô( �w‰w�|‰|˜JÐ(;Ó<€HÜ�w‰w�|‰|˜JÐ(;Ó<€Hä	ˆh˜×	Ô	 Ø	�‰Ð$Ô%Û'-Ñ#ˆJäŸ™Ÿ™¨
Ó3ˆIØ$×,Ñ,¨T°6Ó:×BÑBÀ3ÈÓNˆLØ�G‰GðØ(˜Mð *Ø(˜Mð *Ø �Mð "Ø(˜>ð *Ø �Mð "Ø(˜Mð *Ø%˜ð 'Ø �M ¨;¨-°xðAö
ñ	 (.÷ 
ô$ ‡N‚NÜ˜,¨¨h¸¸hÓGØØØõ	ð €O÷1 
×	ús   ÁBDÄD!	c                ó0   € V ^8„  d   QhR\         R\        /# rH   ©r;   r/   )r   s   "r    r!   r!     s   € ÷ @ñ @¤#ð @¬$ñ @r"   c                 óX   € \        V 4      p\        \        P                  ! R V4      4      # )z\bApple\b.*\bclang\b)r]   r/   r0  r_   ©rI   Ú
first_lines   & r    Ú_is_apple_clangrL    s#   € ä-¨lÓ;€JÜ”—	’	Ð1°:Ó>Ó?Ð?r"   c                ó0   € V ^8„  d   QhR\         R\        /# rH   rH  )r   s   "r    r!   r!     s   € ÷ Tñ TœCð T¤Dñ Tr"   c                 óœ  € \         '       dI   \        P                  ! R V 4      '       d   \        R4      h\	        \        P                  ! RV 4      4      # \
        P                  R8X  d   \        V 4      '       d   R# \        V 4      pRV9  d    \        P                  ! RV4      '       d   R# \	        \        P                  ! RV 4      4      # )z((clang$)|(clang\+\+$))z]Please use clang-cl, due to torch.compile only support MSVC-like CLI (compiler flags syntax).z
(clang-cl)r4   TÚIntelz(^|[\s/-])clang version\bz&(^|[/\s-])(clang\+\+|clang)(?=[\s-]|$))	r>   r0  r_   r·   r/   rg   rh   rL  r]   rJ  s   & r    Ú	_is_clangrP    s�   € çƒ{ä�9Š9Ð/°×>Ò>ÜØoóð ô ”B—I’I˜m¨\Ó:Ó;Ð;ä
‡|�|�xÔ¤O°L×$AÒ$AÙä-¨lÓ;€JØ�jÔ ¤R§Y¢YØ$ j÷&ò &ñ ä”—	’	ÐCÀ\ÓRÓSÐSr"   c                ó0   € V ^8„  d   QhR\         R\        /# rH   rH  )r   s   "r    r!   r!   4  s   € ÷ Xñ Xœ#ð X¤$ñ Xr"   c                 óÚ   € \        V 4      '       d   R # \        V 4      p\        P                  ! RV\        P                  4      '       d   R# \        \        P                  ! RV 4      4      # )Fz+(^|[\s/-])(gcc|g\+\+|gnu-c\+\+)(?=[\s(-]|$)Tz*(^|[/\s-])(gcc|g\+\+|gnu-c\+\+)(?=[\s-]|$))rP  r]   r0  r_   Ú
IGNORECASEr/   rJ  s   & r    Ú_is_gccrT  3  sV   € ô �×ÒÙä-¨lÓ;€JÜ	‡y‚yØ6ØÜ
�‰÷ò ñ
 ä”—	’	ÐGÈÓVÓWÐWr"   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   rI   Úmajorr   )r;   r¿   r/   )r   s   "r    r!   r!   E  s&   € ÷ Lñ L¬Cð L¼ð LÄñ Lr"   c                 ó¦  € \        V 4      '       g   R #  \        P                  ! \        V RR4      \        P                  R7      P                  4       P                  ! \         p\        P                  ! RT4      pTf   R # \        TP                  ^ 4      4      \        \        T4      4      8  #   \        \        P                  3 d     R # i ; i)Fz-dumpfullversionz-dumpversionrM   z\d+(?:\.\d+)*)rT  rP   rQ   rF   rR   rS   rT   rU   rV   rW   r0  r_   r   Úgroupr;   )rI   rV  Ú
output_msgÚversion_searchs   &&  r    Ú_is_gcc_version_less_thanr[  D  sº   € ä�<× Ò Ùð
ä×#Ò#Ü! ,Ð0BÀNÓSÜ!×)Ñ)ô÷ ‰U‹Wß‰Vðô
 ,ð-ð 	ô —Y’YÐ/°Ó<€NØÒÙä˜×,Ñ,¨QÓ/Ó0´<ÄÀEÃ
Ó3KÑKÐKøô œz×9Ñ9Ð:ô Úðús   •AB1 Â1CÃCc                ó0   € V ^8„  d   QhR\         R\        /# rH   rH  )r   s   "r    r!   r!   ]  s   € ÷ ñ œcð ¤dñ r"   c                 óf  € \         '       g   R #  \        P                  ! \        V R4      \        P                  \        P
                  R R7      pVP                  ;'       g    RP                  4       P                  4       p\        V4      ;'       d    RV^ ,          9   #   \         d     R # i ; i)Fr�   ©r~   rN   r-  r"   s	   Microsoft)r>   rP   r/  rF   r‡   rŽ   r~   rS   r[   r/   ÚOSError)rI   ÚresultÚliness   &  r    rÿ   rÿ   \  sŒ   € ç‹;ÙðÜ—’Ü˜l¨GÓ4Ü—?‘?Ü×$Ñ$Øô	
ˆð —‘×%Ð% #×,Ñ,Ó.×9Ñ9Ó;ˆä�E‹{×7Ð7˜|¨u°Q­xÑ7Ð7øäô Úðús   �AB! Á#0B! ÂB! Â!B0Â/B0c                ó0   € V ^8„  d   QhR\         R\        /# rH   rH  )r   s   "r    r!   r!   r  s   € ÷ $ñ $¤Sð $¬Tñ $r"   c                 óÌ  € R  R lp \        V 4      pVP                  4       p\        V4      ;'       d    RV^ ,          9   pV'       dr   \        '       d)   \        P
                  ! RV 4      '       d   \        R4      h\        P
                  ! RV4      pVe#   VP                  ^4      pV! \        V4      4       V#   \         d     R# \        P                   d     R# i ; i)c                ó(   € V ^8„  d   QhR\         RR/# )r   Úcompiler_versionr   Nr   )r   s   "r    r!   Ú(_is_intel_compiler.<locals>.__annotate__s  s   € ÷ ñ ´ð À$ñ r"   c                ód   € \         '       d   RMRpV \        V4      8  d   \        RV R24      hR# )zg
On Windows: early version icx has `-print-file-name` issue, and can't preload correctly for inductor.
z2024.2.1z0.0.0z0Intel Compiler error: less than minimal version rµ   N)r>   r   r·   )re  Úmin_versions   & r    Ú_check_minimal_versionÚ2_is_intel_compiler.<locals>._check_minimal_versions  s:   € ÷ %0£K‘j°WˆØœl¨;Ó7Ô7ÜØBÀ;À-ÈqÐQóð ñ 8r"   rO  z((icx$)|(icx-cc$))z[Please use icx-cl, due to torch.compile only support MSVC-like CLI (compiler flags syntax).z(\d+[.]\d+[.]\d+[.]\d+)F)rX   r[   r/   r>   r0  r_   r·   rX  r   rV   rP   rW   )rI   ri  rY  ra  Úis_intel_compilerÚicx_ver_searchÚicx_vers   &      r    Ú_is_intel_compilerrn  q  sÈ   € õðÜ-¨lÓ;ˆ
Ø×%Ñ%Ó'ˆÜ  ›K×?Ð?¨G°u¸QµxÑ,?Ðßß‹{Ü—9’9Ð2°L×AÒAÜ&Øuóð ô
  ŸYšYÐ'AÀ:ÓNˆNØÒ)Ø(×.Ñ.¨qÓ1�Ù&¤|°GÓ'<Ô=à Ð øÜô ÚÜ×%Ñ%ô âðús5   ˆ,B= µB= Á
B= ÁB= Á3A	B= Â=C#ÃC#ÃC#Ã"C#c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   š  s   € ÷ 'ñ '”ñ 'r"   c                  ó(   € \        \        4       4      # r$   )rT  r  r%   r"   r    Úis_gccrq  ™  s   € äÔ#Ó%Ó&Ð&r"   c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   Ÿ  s   € ÷ )ñ )”$ñ )r"   c                  ó(   € \        \        4       4      # r$   )rP  r  r%   r"   r    Úis_clangrt  ž  s   € äÔ%Ó'Ó(Ð(r"   c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   ¤  s   € ÷ 2ñ 2œ4ñ 2r"   c                  ó(   € \        \        4       4      # r$   )rn  r  r%   r"   r    rk  rk  £  s   € äÔ.Ó0Ó1Ð1r"   c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   ©  s   € ÷ /ñ /œñ /r"   c                  ó(   € \        \        4       4      # r$   )rL  r  r%   r"   r    Úis_apple_clangry  ¨  s   € äÔ+Ó-Ó.Ð.r"   c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   ®  s   € ÷ +ñ +”Dñ +r"   c                  ó(   € \        \        4       4      # r$   )rÿ   r  r%   r"   r    Ú
is_msvc_clr|  ­  s   € äÔ'Ó)Ó*Ð*r"   c                ó0   € V ^8„  d   QhR\         R\         /# r8   rJ   )r   s   "r    r!   r!   ³  s   € ÷ ñ ¬ð ´ñ r"   c                 óè  € \         P                  P                  4       pR VR&    \        P                  ! \        V R4      \        P                  VR7      P                  ! \         pTP                  RR4      pTP                  RR4      pT#   \         dZ     \        P                  ! \        T R4      \        P                  TR7      P                  ! \         p Lv  \         d      R# i ; ii ; i)	ÚCÚLC_ALLr  )rN   ÚenvrL   rO   Úr.  Ú
)ri   r‚   ÚcopyrP   rQ   rF   rŽ   rT   rU   r	  r6   )r9   r�  r\   s   &  r    Úget_compiler_version_infor…  ²  sî   € ä
�*‰*�/‰/Ó
€CØ€Cˆ�MðÜ#×0Ò0Ü˜h¨Ó-Ü×$Ñ$Øô
÷ ‰&ð	ô )ð	*ˆð $×+Ñ+¨D°#Ó6€NØ#×+Ñ+¨D°#Ó6€NØÐøô ô ð	Ü'×4Ò4Ü! (¨KÓ8Ü!×(Ñ(Øô÷ ‰fð	ô -ð	.ŠNøô
 ô 	Ûð	úðús+   ¥AB ÂC1ÂACÃC-Ã(C1Ã,C-Ã-C1c                ó`   € V ^8„  d   QhR\         \        ,          R\         \        ,          RR/# )r   Ú	dest_listÚsrc_listr   N©r<   r;   )r   s   "r    r!   r!   Ì  s)   € ÷ ?ñ ?œD¤�Ið ?´´cµð ?¸tñ ?r"   c                 ó6   € V P                  R  V 4       4       R# )c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir$   ©r„  Údeepcopy)Ú.0Úitems   & r    Ú	<genexpr>Ú_append_list.<locals>.<genexpr>Í  s   é € Ð>±X¨T”T—]’] 4×(Ð(³Xùó   ‚#%N)Úextend)r‡  rˆ  s   &&r    Ú_append_listr”  Ì  s   € Ø×ÑÑ>±XÓ>Ö>r"   c                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# )r   Ú	orig_listr   r‰  )r   s   "r    r!   r!   Ð  s"   € ÷ ñ ¬4´­9ð ¼¼c½ñ r"   c                 óN   € . pV  F  pW!9  g   K  VP                  V4       K  	  V# r$   )rÇ   )r–  Únew_listr�  s   &  r    Ú_remove_duplication_in_listr™  Ð  s*   € Ø€HÛˆØÖØ�O‰O˜DÖ!ñ ð €Or"   c                ó(   € V ^8„  d   QhR\         RR/# ©r   Úpath_dirr   NrJ   )r   s   "r    r!   r!   Ø  s   € ÷ Oñ O¤sð O¨tñ Or"   c                 ó  € \         P                  P                  V 4      '       g     \        V 4      P	                  R R R7       R# R#   \
         d:   pTP                  \        P                  8w  d   \        RT  24      Th Rp?R# Rp?ii ; i)T)ÚparentsÚexist_okzFail to create path N)	ri   rl   r   r   Úmkdirr_  ÚerrnoÚEEXISTr·   )rœ  r   s   & r    Ú_create_if_dir_not_existr£  Ø  su   € Ü�7‰7�>‰>˜(×#Ò#ð	OÜ�‹N× Ñ ¨¸Ð Ö=ñ $øô ô 	OØ�y‰yœEŸL™LÔ(Ü"Ð%9¸(¸Ð#DÓEÈ3ÐNõ )ûð	Oús   §A ÁBÁ.BÂBc                ó(   € V ^8„  d   QhR\         RR/# r›  rJ   )r   s   "r    r!   r!   á  s   € ÷ 	ñ 	œ#ð 	 $ñ 	r"   c                 ó¼  € \         P                  P                  V 4      '       d·   \         P                  ! V R R7       F‚  w  rpV F8  p\         P                  P	                  W4      p\         P
                  ! V4       K:  	  V F8  p\         P                  P	                  W4      p\         P                  ! V4       K:  	  K„  	  \         P                  ! V 4       R# R# )F)ÚtopdownN)ri   rl   r   Úwalkrm   ÚremoveÚrmdir)rœ  ÚrootÚdirsÚfilesÚnamer”   Údir_paths   &      r    Ú_remove_dirr¯  á  s•   € Ü	‡w�w‡~�~�h×ÒÜ!#§¢¨¸5×!AÑˆD˜Û�ÜŸG™GŸL™L¨Ó4�	Ü—	’	˜)Ö$ñ ó �ÜŸ7™7Ÿ<™<¨Ó3�Ü—’˜Ö"ó ñ	 "Bô 	�Š�Öñ  r"   c                ó4   € V ^8„  d   QhR\         R\         RR/# ©r   Úcmd_lineÚcwdr   NrJ   )r   s   "r    r!   r!   í  s!   € ÷ 6ñ 6œsð 6¬ð 6°ñ 6r"   c                 ó´  € \         P                  ! V 4      p \        P                  ! W!R \        P                  \        P
                  R7       R#   \        P                   ds   pTP                  P                  ! \         pRT9   ;'       g    RT9   pT'       d    \        P                  R8X  d   RpYF,          p\        P                  ! Y$4      ThRp?ii ; i)T)r³  r-  r~   rN   z'omp.h' file not foundÚlibompr4   a¢  

OpenMP support not found. Please try one of the following solutions:
(1) Set the `CXX` environment variable to a compiler other than Apple clang++/g++ that has builtin OpenMP support;
(2) install OpenMP via conda: `conda install llvm-openmp`;
(3) install libomp via brew: `brew install libomp`;
(4) manually setup OpenMP and set the `OMP_PREFIX` environment variable to point to a path with `include/omp.h` under it.N)r?   r@   rP   r/  r‡   rŽ   rô   r~   rT   rU   rg   rh   r   ÚCppCompileError)r²  r³  rö   r�   ÚoutputÚopenmp_problemÚinstructions   &&     r    Ú_run_compile_cmdrº  í  s«   € Ü
�+Š+�hÓ
€Cð6Ü�ŠØ ¬Z¯_©_ÄZ×EVÑEV÷	
øô ×(Ñ(ô 6Ø—‘—’Ô"8Ð9ˆØ1°VÑ;×QÐQ¸xÈ6Ñ?QˆßœcŸl™l¨hÔ6ð2ð ð Õ!ˆFÜ×!Ò! #Ó.°AÐ5ûð6ús   ˜6A ÁCÁ%6CÂ6CÃCc                ó4   € V ^8„  d   QhR\         R\         RR/# r±  rJ   )r   s   "r    r!   r!     s!   € ÷ (ñ (œcð (¬ð (°ñ (r"   c                 ó|   € \        R 4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)Úcompile_fileN)r
   rº  )r²  r³  s   &&r    Úrun_compile_cmdr¾    s$   € Ü	�n×	%Õ	%Ü˜Ô'÷ 
&×	%×	%Ò	%ús   ”*ª;	c                ó0   € V ^8„  d   QhR\         R\         /# )r   Ú	orig_pathr   rJ   )r   s   "r    r!   r!   	  s   € ÷ ñ ¬ð ´ñ r"   c                 ó^   € \         '       d!   V P                  \        P                  R 4      # V # )Ú/)r>   r6   ri   Úsep)rÀ  s   &r    r  r  	  s$   € ßƒ{Ø× Ñ ¤§¡¨Ó-Ð-ØÐr"   c                   ól  a € ] tR tRt o RtR)V 3R lR lltV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltV 3R& lR' ltR(tV tR# )*ÚBuildOptionsBasei  z°
This is the Base class for store cxx build options, as a template.
Actually, to build a cxx shared library. We just need to select a compiler
and maintains the suitable args.
Nc                ó>  <€ V ^8„  d   QhRS[ RS[S[ ,          R,          RS[S[ ,          R,          RS[S[ ,          R,          RS[S[ ,          R,          RS[S[ ,          R,          RS[S[ ,          R,          R	S[S[ ,          R,          R
S[RS[RS[RS[RS[RR/# )r   r9   ÚdefinitionsNÚinclude_dirsÚcflagsÚldflagsÚlibraries_dirsÚ	librariesÚpassthrough_argsÚaot_moder  Úcompile_onlyÚprecompilingÚpreprocessingr   )r;   r<   r/   )r   r•   s   "€r    r!   ÚBuildOptionsBase.__annotate__  sÖ   ø€ ÷ "2ñ "2áð"2ñ ™#•Y Õ%ð"2ñ ™3•i $Õ&ð	"2ñ
 ‘S•	˜DÕ ð"2ñ ‘c•˜TÕ!ð"2ñ ™S�	 DÕ(ð"2ñ ™•9˜tÕ#ð"2ñ ™s�) dÕ*ð"2ñ ð"2ñ  ð"2ñ ð"2ñ ð"2ñ ð"2ð 
ñ"2r"   c                óJ  € Wn         T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        R V n        W�n	        W n
        W°n        WÀn        WÐn        R # r$   )Ú	_compilerÚ_definitionsÚ_include_dirsÚ_cflagsÚ_ldflagsÚ_libraries_dirsÚ
_librariesÚ_passthrough_argsÚprecompiled_headerÚ	_aot_modeÚ_use_relative_pathÚ_compile_onlyÚ_precompilingÚ_preprocessing)r�   r9   rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÎ  r  rÏ  rÐ  rÑ  s   &&&&&&&&&&&&&&r    rž   ÚBuildOptionsBase.__init__  s—   € ð  "ŒØ'2×'8Ð'8°bˆÔØ(4×(:Ð(:¸ˆÔØ"(§, ,¨BˆŒØ#*§= =¨bˆŒØ*8×*>Ð*>¸BˆÔØ%.§_ _°"ˆŒà,<×,BÐ,BÀˆÔð /3ˆÔà'ŒØ(9ÔØ#/ÔØ#/ÔØ$1Ör"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rÒ  :  s   ø€ ÷ ñ ¨tñ r"   c                ó    € V P                   '       g%   V P                  '       g   V P                  '       d   . V n        . V n        . V n        R # R # r$   )rß  rà  rá  rÙ  rÚ  rØ  r±   s   &r    Ú_process_compile_only_optionsÚ.BuildOptionsBase._process_compile_only_options:  s@   € Ø××Ð ×!3×!3Ð!3°t×7J×7JÐ7JØ#%ˆDÔ Ø ˆDŒOØˆDŽMñ 8Kr"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rÒ  @  s   ø€ ÷ Uñ U¨4ñ Ur"   c                ór  € \        V P                  4      V n        \        V P                  4      V n        \        V P                  4      V n        \        V P                  4      V n        \        V P
                  4      V n        \        V P                  4      V n        \        V P                  4      V n        R # r$   )r™  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  r±   s   &r    Ú_remove_duplicate_optionsÚ*BuildOptionsBase._remove_duplicate_options@  s~   € Ü7¸×8IÑ8IÓJˆÔÜ8¸×9KÑ9KÓLˆÔÜ2°4·<±<Ó@ˆŒÜ3°D·M±MÓBˆŒÜ:¸4×;OÑ;OÓPˆÔÜ5°d·o±oÓFˆŒÜ!<¸T×=SÑ=SÓ!TˆÖr"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rÒ  I  s   ø€ ÷ )ñ ) 4ñ )r"   c                óF   € V P                  4        V P                  4        R # r$   )rå  ré  r±   s   &r    Ú_finalize_optionsÚ"BuildOptionsBase._finalize_optionsI  s   € Ø×*Ñ*Ô,Ø×&Ñ&Ö(r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   rJ   )r   r•   s   "€r    r!   rÒ  M  s   ø€ ÷ ñ ™cñ r"   c                ó   € V P                   # r$   ©rÔ  r±   s   &r    Úget_compilerÚBuildOptionsBase.get_compilerM  ó   € Ø�~‰~Ðr"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  P  s   ø€ ÷ !ñ !¡¡c¥ñ !r"   c                ó   € V P                   # r$   )rÕ  r±   s   &r    Úget_definitionsÚ BuildOptionsBase.get_definitionsP  s   € Ø× Ñ Ð r"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  S  s   ø€ ÷ "ñ "¡$¡s¥)ñ "r"   c                ó   € V P                   # r$   )rÖ  r±   s   &r    Úget_include_dirsÚ!BuildOptionsBase.get_include_dirsS  ó   € Ø×!Ñ!Ð!r"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  V  s   ø€ ÷ ñ ™D¡�Iñ r"   c                ó   € V P                   # r$   )r×  r±   s   &r    Ú
get_cflagsÚBuildOptionsBase.get_cflagsV  s   € Ø�|‰|Ðr"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  Y  s   ø€ ÷ ñ ™T¡#�Yñ r"   c                ó   € V P                   # r$   )rØ  r±   s   &r    Úget_ldflagsÚBuildOptionsBase.get_ldflagsY  s   € Ø�}‰}Ðr"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  \  s   ø€ ÷ $ñ $¡D©¥Iñ $r"   c                ó   € V P                   # r$   )rÙ  r±   s   &r    Úget_libraries_dirsÚ#BuildOptionsBase.get_libraries_dirs\  s   € Ø×#Ñ#Ð#r"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  _  s   ø€ ÷ ñ ™t¡C�yñ r"   c                ó   € V P                   # r$   )rÚ  r±   s   &r    Úget_librariesÚBuildOptionsBase.get_libraries_  s   € Ø�‰Ðr"   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r-   r‰  )r   r•   s   "€r    r!   rÒ  b  s   ø€ ÷ &ñ &¡d©3¥iñ &r"   c                ó   € V P                   # r$   )rÛ  r±   s   &r    Úget_passthrough_argsÚ%BuildOptionsBase.get_passthrough_argsb  s   € Ø×%Ñ%Ð%r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   r.   )r   r•   s   "€r    r!   rÒ  e  s   ø€ ÷ ñ ™dñ r"   c                ó   € V P                   # r$   ©rÝ  r±   s   &r    Úget_aot_modeÚBuildOptionsBase.get_aot_modee  rô  r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   r.   )r   r•   s   "€r    r!   rÒ  h  s   ø€ ÷ 'ñ '¡tñ 'r"   c                ó   € V P                   # r$   )rÞ  r±   s   &r    Úget_use_relative_pathÚ&BuildOptionsBase.get_use_relative_pathh  s   € Ø×&Ñ&Ð&r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   r.   )r   r•   s   "€r    r!   rÒ  k  ó   ø€ ÷ "ñ "¡$ñ "r"   c                ó   € V P                   # r$   )rß  r±   s   &r    Úget_compile_onlyÚ!BuildOptionsBase.get_compile_onlyk  rý  r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   r.   )r   r•   s   "€r    r!   rÒ  n  r  r"   c                ó   € V P                   # r$   )rà  r±   s   &r    Úget_precompilingÚ!BuildOptionsBase.get_precompilingn  rý  r"   c                ó    <€ V ^8„  d   QhRS[ /# r-   r.   )r   r•   s   "€r    r!   rÒ  q  s   ø€ ÷ #ñ #¡4ñ #r"   c                ó   € V P                   # r$   )rá  r±   s   &r    Úget_preprocessingÚ"BuildOptionsBase.get_preprocessingq  s   € Ø×"Ñ"Ð"r"   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úfiler   NrJ   )r   r•   s   "€r    r!   rÒ  t  s   ø€ ÷  ñ  ¡sð  ¨tñ  r"   c                óø  € R V P                  4       RV P                  4       RV P                  4       RV P                  4       RV P	                  4       RV P                  4       RV P                  4       RV P                  4       RV P                  4       R	V P                  4       R
V P                  4       /p\        VR4      ;_uu_ 4       p\        P                  ! W#4       RRR4       R#   + '       g   i     R# ; i)r9   rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÎ  r  rÏ  r9  N)rò  r÷  rû  r   r  r  r  r  r  r  r  r>  ÚjsonÚdump)r�   r)  ÚattrsrC  s   &&  r    Úsave_flags_to_jsonÚ#BuildOptionsBase.save_flags_to_jsont  sÈ   € à˜×)Ñ)Ó+Ø˜4×/Ñ/Ó1Ø˜D×1Ñ1Ó3Ø�d—o‘oÓ'Ø�t×'Ñ'Ó)Ø˜d×5Ñ5Ó7Ø˜×+Ñ+Ó-Ø × 9Ñ 9Ó ;Ø˜×)Ñ)Ó+Ø ×!;Ñ!;Ó!=Ø˜D×1Ñ1Ó3ð
ˆô �$˜�_Œ_ Ü�IŠI�eÔ÷ �_�_Š_ús   ÃC(Ã(C9	)rÝ  r×  rß  rÔ  rÕ  rÖ  rØ  rÚ  rÙ  rÛ  rà  rá  rÞ  rÜ  )rO   NNNNNNNFFFFF)rÓ   rÔ   rÕ   rÖ   Ú__doc__rž   rå  ré  rí  rò  r÷  rû  r   r  r  r  r  r  r  r  r"  r&  r.  r×   rØ   rÙ   s   @r    rÅ  rÅ    sÁ   ø‡ € ñ÷"2ò "2÷Hð ÷Uð U÷)ð )÷ð ÷!ð !÷"ð "÷ð ÷ð ÷$ð $÷ð ÷&ð &÷ð ÷'ð '÷"ð "÷"ð "÷#ð #÷ ö  r"   rÅ  c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   Úwarning_allr   ©r/   r<   r;   )r   s   "r    r!   r!   ‡  s   € ÷ ñ ¬ð ¼¼S½	ñ r"   c                 ó8   € \         '       g   V '       d   R .# . # . # )ÚWall©r>   )r2  s   &r    Ú_get_warning_all_cflagr7  ‡  s   € ß‹;ß&�ˆxÐ.¨BÐ.àˆ	r"   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# )r   Ústd_numr   r:   )r   s   "r    r!   r!   Ž  s   € ÷ "ñ "¤ð "´$´sµ)ñ "r"   c                 ó8   € \         '       d
    R p RV  2.# RV  2.# )úc++20zstd:zstd=r6  )r9  s   &r    Ú_get_cpp_std_cflagr<  Ž  s3   € ßƒ{ð	ð ˆØ�w�iÐ Ð!Ð!à�w�iÐ Ð!Ð!r"   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# rH   r:   )r   s   "r    r!   r!   �  s   € ÷ !ñ !¬Sð !´T¼#µYñ !r"   c                 ó  € \         '       d   . ROpV# RR.p\        V 4      '       d6   \        P                  P                  '       d   RMRpVP                  V4       \        V 4      '       d   VP                  R4       V# )Úwd4819zWno-unused-variablezWno-unknown-pragmasz$Werror=ignored-optimization-argumentz!Wno-ignored-optimization-argumentÚpedantic)r?  Úwd4251Úwd4244Úwd4267Úwd4275Úwd4018Úwd4190Úwd4624Úwd4067Úwd4068ÚEHsczZc:__cpluspluszpermissive-)r>   rP  r   r  Ú#raise_error_on_ignored_optimizationrÇ   rT  )rI   rÉ  Úignored_optimization_arguments   &  r    Ú_get_os_related_cpp_cflagsrM  �  s{   € ßƒ{ò
ˆð> €Mð (Ð)>Ð?ˆÜ�\×"Ò"ô ×&Ñ&×J×JÐJñ 7à8ð *ð
 �M‰MÐ7Ô8Ü�<× Ò ð �M‰M˜*Ô%Ø€Mr"   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# rH   r:   )r   s   "r    r!   r!   Á  s   € ÷ ñ ´#ð ¼$¼s½)ñ r"   c                 óD   € . p\         '       d   VP                  R 4       V# )ÚNOMINMAX©r>   rÇ   )rI   Úos_definitionss   & r    Ú_get_os_related_cpp_definitionsrS  Á  s"   € Ø "€Nßƒ{ð 	×Ñ˜jÔ)ØÐr"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!   Ê  s   € ÷ ñ œt¤C�yñ r"   c                  ón  € \         '       d   . p V # . ROp V P                  R4       \        P                  P                  '       g   V P                  R4       V P                  R4       V P                  R\        P                  P
                   24       \        4       '       d   V P                  R4       V # )úfno-trapping-mathzfno-finite-math-onlyzfno-unsafe-math-optimizationszfmath-errnozffp-contract=zfexcess-precision=fast)rV  zfunsafe-math-optimizationszffinite-math-onlyzfno-signed-zeros)r>   rÇ   r   r  Úenable_unsafe_math_opt_flagÚ#enable_floating_point_contract_flagrq  )Úflagss    r    Ú_get_ffast_math_flagsrZ  Ê  s‹   € ßƒ{Øˆð6 €Lò'
ˆð 	�‰Ð+Ô,Ü�z‰z×5×5Ð5Ø�L‰LÐ8Ô9ð 	�‰�]Ô#Ø�‰�}¤V§Z¡Z×%SÑ%SÐ$TÐUÔVä�8Š8Ø�L‰LÐ1Ô2à€Lr"   c                ór   € V ^8„  d   QhR\         \        \        ,          \        \        ,          3,          /# r-   ©rÞ   r<   r;   )r   s   "r    r!   r!   ê  s%   € ÷ ñ ¬5´´cµ¼DÄ½IÐ1EÕ+Fñ r"   c                 ó`   € . p . p\         '       d   RR.p . ROpW3# V P                  R4       W3# )z¸
When we turn on generate debug symbol.
On Windows, it should create a [module_name].pdb file. It helps debug by WinDBG.
On Linux, it should create some debug sections in binary file.
ÚZIÚ_DEBUGÚg)ÚDEBUGzASSEMBLYDEBUG zOPT:REFzOPT:ICFrQ  )rÉ  rÊ  s     r    Ú!_get_inductor_debug_symbol_cflagsrb  ê  sB   € ð €FØ€Gçƒ{Ø˜Ð!ˆÚCˆð ˆ?Ðð 	�‰�cÔàˆ?Ðr"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   )r   r;   )r   s   "r    r!   r!   ý  s   € ÷ ñ ¤j´¥oñ r"   c                  ó  a€ \        4       p \        P                  ! 4       R9  d   V # \        P                  P	                  R4      '       g   V # \
        P                  P                  4       oV P                  V3R lR 4       4       V # )Úaarch64r3   c              3   ó\   <"  € T F!  pSP                  VR 4      '       g   K  Vx € K#  	  R# 5i)FN)rƒ   )rŽ  Ú
capabilityÚcapabilitiess   & €r    r�  Ú/_get_linux_aarch64_cpu_flags.<locals>.<genexpr>  s*   øé € ð á1ˆJØ×Ñ˜J¨×.÷ 	Š
Û1ùs   ƒ,¢
,©re  Úarm64©Úbf16ÚsveÚsve2)	r   rh   Úmachinerg   Ú
startswithÚtorchÚcpuÚget_capabilitiesÚupdate)rY  rh  s    @r    Ú_get_linux_aarch64_cpu_flagsrv  ü  sm   ø€ ä'›\€Eä×ÒÓÐ!5Ô5Øˆä�<‰<×"Ñ" 7×+Ò+Øˆä—9‘9×-Ñ-Ó/€LØ	‡L�Lô á1óô ð €Lr"   c                ó0   € V ^8„  d   QhR\         R\         /# rH   rJ   )r   s   "r    r!   r!     s   € ÷ 
ñ 
¬sð 
´sñ 
r"   c                 óð   € \        4       p\        V 4      '       d[   \        V ^4      '       dI   \        . RO4      P	                  V4      '       d   R# \        RR.4      P	                  V4      '       d   R# R# )é   rm  rn  zmarch=armv8.6-a+sve+sve2+bf16zmarch=armv8.6-a+sve+bf16úmarch=nativerl  )rv  rT  r[  r   Úissubset)rI   rY  s   & r    Ú_get_linux_aarch64_arch_flagr|    s\   € ä(Ó*€Eäˆ|×ÒÔ!:¸<È×!LÒ!LÜÒ-Ó.×7Ñ7¸×>Ò>Ù2ä�v˜u�oÓ&×/Ñ/°×6Ò6Ù-ár"   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# rH   r:   )r   s   "r    r!   r!     s   € ÷ ñ ¤sð ¬t´C­yñ r"   c                 óx  € \         P                  ! 4       '       d   . # \         P                  P                  pVR 8X  d   . # \        P
                  R8X  d   Vf   . # \
        P                  ! 4       pVf5   VR8X  d   R.# VR8X  d   R.# VR8X  d   R.# VR9   d   \        V 4      .# R.# VR8X  d   R	V 2.# R
V 2.# )rO   r4   Úppc64lezmcpu=nativeÚriscv64zmarch=rv64gcÚriscv32zmarch=rv32gcrz  zmcpu=zmarch=rj  )r   r  r  Úmarchrg   rh   rp  r|  )rI   r‚  rp  s   &  r    Ú_get_cpu_arch_cflagsrƒ    sÔ   € Ü×Ò×ÒØˆ	ä�J‰J×Ñ€EØ�„{Øˆ	ô ‡|�|�xÔ E¢MØˆ	ä×ÒÓ €GØ‚}Ø�iÔØ!�?Ð"Ø�iÔØ"Ð#Ð#Ø�iÔØ"Ð#Ð#ØÐ*Ô*Ü0°Ó>Ð?Ð?ØÐÐà�)ÔØ˜�w�Ð Ð Ø�U�GÐÐÐr"   c          	      óŠ   € V ^8„  d   QhR\         R\        R\        \        \         ,          \        \         ,          3,          /# )r   rI   Úmin_optimizer   ©r;   r/   rÞ   r<   )r   s   "r    r!   r!   <  s6   € ÷ =ñ =Üð=Ü%)ð=ä
Œ4”�9”dœ3•iÐÕ ñ=r"   c                 óÆ  € . p. p\         P                  P                  ;'       g$    \        P                  P                  R R4      R8H  '       * p\         P                  P                  ;'       gq    \         P                  P                  ;'       gO    \        P                  P                  R R4      R8H  ;'       g$    \        P                  P                  RR4      R8H  pV'       dO   \        '       d   Y!'       d   RMR.,          pMPTV'       d   \         P                  P                  MRR.,          pM"\        '       d   V. RO,          pM
VR	.,          pV'       d   \        4       w  rgW&,          pW7,          p\         P                  P                  '       d0   \        '       d   VP                  R4       MVP                  R
4       \         P                  P                  '       dI   V'       gA   \        '       g5   \        V 4      '       d   VP                  R4       MVP                  R4       V\        4       ,          p\        '       d    W#3# \        P                   R8w  d#   \#        V 4      '       d   VP                  R4       V\%        V 4      ,          p\         P                  P&                  '       d#   \        V 4      '       d   VP                  R4       W#3# )ÚTORCHINDUCTOR_DEBUG_COMPILEÚ0Ú1ÚTORCHINDUCTOR_DEBUG_SYMBOLÚO1ÚO2ÚO3ÚDNDEBUGúOy-ÚO0zfno-omit-frame-pointerzgline-tables-onlyÚg1r4   zfno-tree-loop-vectorizeú	flto=thin)ÚOdÚOb0r�  )r   r  Údebug_compileri   r‚   rƒ   Údebug_symbolsr>   Úcompile_wrapper_opt_levelrb  Úenable_frame_pointerrÇ   Úenable_line_tablesrP  rZ  rg   rh   rT  rƒ  Ú
enable_lto)rI   r…  rÉ  rÊ  Úshould_use_optimized_flagsÚshould_add_debug_symbol_flagsÚdebug_cflagsÚdebug_ldflagss   &&      r    Ú_get_optimization_cflagsr   <  s6  € ð €FØ€Gô 	×Ñ×)Ñ)÷ 	Eð 	EÜ�:‰:�>‰>Ð7¸Ó=ÀÑDô"Ðô
 	×Ñ×)Ñ)÷ 	Dð 	DÜ×Ñ×,Ñ,÷	Dð 	Dä�:‰:�>‰>Ð7¸Ó=ÀÑD÷	Dð 	Dô �:‰:�>‰>Ð6¸Ó<ÀÑCð	 "÷ "ß‹;Øž|‘t°Ð6Õ6‰FàßAM”×#Ñ#×=Ò=ÐSWØðõ ‰F÷
 ‹;ØÒ*Õ*‰Fà�t�fÕˆFç$Ü&GÓ&IÑ#ˆØÕˆØÕ ˆä×Ñ×/×/Ð/ß‹;Ø�M‰M˜%Õ à�M‰MÐ2Ô3ä×Ñ×-×-Ð-×6Sß‹{Ü˜×&Ò&Ø—‘Ð1Õ2à—‘˜dÔ#à
Ô#Ó%Õ%€Fçƒ{Øð ˆ?Ðô �<‰<˜8Ô#¬°×(=Ò(=Ø�M‰MÐ3Ô4ØÔ& |Ó4Õ4ˆä×Ñ×)×)Ð)¬i¸×.EÒ.EØ�M‰M˜+Ô&àˆ?Ðr"   c                óR   € V ^8„  d   QhR\         R\        R\        \         ,          /# )r   rI   Údo_linkr   )r;   r/   r<   )r   s   "r    r!   r!   |  s%   € ÷ ñ ¤Sð ´4ð ¼DÄ½Iñ r"   c                 óÞ   € \         '       d    R R.# \        P                  ! 4       R8X  d   \        V 4      '       d   . RO# . pV'       d   VP	                  R4       VP	                  R4       V# )ÚDLLÚMDÚDarwinÚsharedÚfPIC)r§  r¨  zundefined dynamic_lookup)r>   rh   ÚsystemrP  rÇ   )rI   r¢  rY  s   && r    Ú_get_shared_cflagsrª  |  s\   € ßƒ{ð	ð �tˆ}ÐÜ‡‚Ó˜HÔ$¬°<×)@Ò)@â=Ð=Ø€EßØ�‰�XÔà	‡L�L�ÔØ€Lr"   c                ód  € V ^8„  d   QhR\         R\        R\        R\        \         ,          R\        R\        \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          3,          /# )r   rI   r¢  r2  Úextra_flagsr…  r   )r;   r/   r   rÞ   r<   )r   s   "r    r!   r!   Ž  sy   € ÷ 3ñ 3Üð3äð3ô ð3ô œ#•ð	3ô
 ð3ô Œ4”�9”dœ3•i¤¤c¥¬D´­I´t¼CµyÄ$ÄsÅ)ÌTÔRUÍYÐVÕWñ3r"   c                 ó¨  € . p. p. p. p. p	. p
. p\        W4      w  rÍV\        W4      ,           \        V4      ,           \        4       ,           \	        V 4      ,           pV\        V 4      ,          p\        '       gT   \        P                  P                  '       d4   \        V 4      '       d#   VP                  R 4       VP                  R4       VP                  RP                  V4      4       \        P                  P                  R8X  d9   VP                  RR.4       \        \         4      R8X  d   VP                  R4       VVVW�,           V	V
V3# )úfuse-ld=lldr“  r*  r  z-static-libstdc++z-static-libgccr  z<-Wl,-u,clock_gettime -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic)r   rª  r7  r<  rM  rS  r>   r   r  r›  rP  rÇ   rm   r  r“  r  r  )rI   r¢  r2  r¬  r…  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  Ú
opt_cflagsÚopt_ldflagss   &&&&&         r    Úget_cpp_optionsr±  Ž  sC  € ð  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðä6°|ÓRÑ€Jð 	Ü
˜\Ó
3õ	4ä
  Ó
-õ	.ô Ó
õ	ô % \Ó
2õ		3ð ð Ô2°<Ó@Õ@€Kç‹;œ6×.Ñ.×9×9Ð9¼iÈ×>UÒ>UØ�‰�}Ô%Ø�‰�{Ô#à×Ñ˜CŸH™H [Ó1Ô2ä×Ñ×0Ñ0°IÔ=Ø×ÑÐ!4Ð6FÐ GÔHÜ#¤IÓ.°'Ô9ð ×#Ñ#ØNôð
 	ØØØÕØØØðð r"   c                   óF   a a€ ] tR tRt oRtRV3R lV 3R llltRtVtV ;t# )Ú
CppOptionsiÄ  a(  
This class is inherited from BuildOptionsBase, and as cxx build options.
This option need contains basic cxx build option, which contains:
1. OS related args.
2. Toolchains related args.
3. Cxx standard related args.
Note:
1. This Options is good for assist modules build, such as x86_isa_help.
c                ó^   <€ V ^8„  d   QhRS[ RS[ RS[S[,          RS[ RS[RS[ RS[ RS[ R	R
/	# )r   rÏ  r2  r¬  r  r9   r…  rÐ  rÑ  r   N)r/   r   r;   )r   r•   s   "€r    r!   ÚCppOptions.__annotate__Ï  si   ø€ ÷ *!ñ *!áð*!ñ ð*!ñ ™c•]ð	*!ñ
  ð*!ñ ð*!ñ ð*!ñ ð*!ñ ð*!ð 
ñ*!r"   c	                ó*  <€ \         SV `  VVVVR 7       V'       d   TM	\        4       V n        \	        V P                  T;'       g    T;'       g    T'       * VVVR7      w  p	p
ppppp\        V P                  V	4       \        V P                  V
4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       V P                  4        R# ))rÏ  r  rÐ  rÑ  )rI   r¢  r¬  r2  r…  N)Úsuperrž   r  rÔ  r±  r”  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  rí  )r�   rÏ  r2  r¬  r  r9   r…  rÐ  rÑ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  Ú	__class__s   &&&&&&&&&       €r    rž   ÚCppOptions.__init__Ï  s÷   ø€ ô 	‰ÑØ%Ø/Ø%Ø'ð	 	ô 	
÷ &.™Ô3CÓ3EˆŒô ØŸ™Ø%×FÐF¨×FÐF¸ÔGØ#Ø#Ø%ô
ñ	
ØØØØØØØô 	�T×&Ñ&¨Ô4Ü�T×'Ñ'¨Ô6Ü�T—\‘\ 6Ô*Ü�T—]‘] GÔ,Ü�T×)Ñ)¨>Ô:Ü�T—_‘_ iÔ0Ü�T×+Ñ+Ð-=Ô>Ø×ÑÖ r"   rñ  )FTr%   FrO   FFF)	rÓ   rÔ   rÕ   rÖ   r0  rž   r×   rØ   Ú__classcell__©r¸  r•   s   @@r    r³  r³  Ä  s   ù‡ € ñ÷*!÷ *!õ *!r"   r³  c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!   ü  s   € ÷ ñ ¬4´­9ñ r"   c                  ó\   € R R.p \         P                  '       d   V P                  R4       V # )ÚTORCH_INDUCTOR_CPP_WRAPPERÚSTANDALONE_TORCH_HEADERÚ!TORCH_INDUCTOR_PRECOMPILE_HEADERS)r   Úcpp_cache_precompile_headersrÇ   )Údefss    r    Ú!_get_torch_cpp_wrapper_definitionrÃ  ü  s+   € Ø(Ð*CÐD€DÜ×*×*Ð*Ø�‰Ð7Ô8Ø€Kr"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!     s   € ÷ 2ñ 2¤d¬3¥iñ 2r"   c                  ó   € R .# )z" C10_USING_CUSTOM_GENERATED_MACROSr%   r%   r"   r    Ú_use_custom_generated_macrosrÆ    s   € Ø0Ð1Ð1r"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!     s   € ÷ ñ ¤¤c¥ñ r"   c                  ó®   € \         '       gI   \        P                  ! 4       '       d,   . ROp \        P                  ! 4       R8X  d   V RR.,          p V # . # . # )ÚC10_USE_GLOGÚx86_64zATEN_MKL_ENABLED_FBCODE=1zATEN_MKLDNN_ENABLED_FBCODE=1)rÉ  ÚC10_USE_MINIMAL_GLOGÚ$C10_DISABLE_TENSORIMPL_EXTENSIBILITY)r>   r   r  rh   rp  )Úfb_internal_macross    r    Ú_use_fb_internal_macrosrÎ    sY   € ß‹;Ü×Ò×Òò"Ðô
 ×ÒÓ! XÔ-Ø"Ø/Ø2ð'õ Ð"ð &Ð%àˆIàˆ	r"   c                óÖ   € V ^8„  d   QhR\         R\        R\        R\        \        \         ,          \        \         ,          \        \         ,          \        \         ,          3,          /# )r   rI   rÎ  r  r   r†  )r   s   "r    r!   r!     sN   € ÷ (;ñ (;Üð(;äð(;ô ð(;ô Œ4”�9”dœ3•i¤¤c¥¬D´­IÐ5Õ6ñ	(;r"   c                 ó~  € . p. p. p. p\         '       d   W4WV3# \        P                  ! 4       '       Ed   VP                  R 4       VP                  \        P
                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  \        P                  4       VP                  R4       V'       d   V'       g   \        pM#\        P                   P#                  \        4      p\%        V 4      '       dƒ   VP                  R4       VP                  R\        P&                  ,           4       VP                  R4       VP                  RV 24       VP                  R\        P&                  ,           4       W4WV3# )ÚnostdincÚincludez --rtlib=compiler-rtz -Br®  zWl,--script=ÚL)r>   r   r  rÇ   r   Úsleef_includeÚopenmp_includeÚpython_includeÚ
cc_includeÚlibgcc_includeÚlibgcc_arch_includeÚlibgcc_backward_includeÚglibc_includeÚlinux_kernel_includeÚ_LINKER_SCRIPTri   rl   ÚbasenamerP  Ú	glibc_lib)rI   rÎ  r  rÉ  rÈ  rÍ  rÊ  Úlinker_scripts   &&&     r    Ú_setup_standard_sys_libsrá    s�  € ð
 €FØ €LØ"$ÐØ€Gßƒ{ØÐ%5Ð>Ð>ä×Ò×Óà�‰�jÔ!ð 	×ÑœK×5Ñ5Ô6Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×2Ñ2Ô3Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×;Ñ;Ô<Ø×ÑœK×?Ñ?Ô@Ø×ÑœK×5Ñ5Ô6Ø×ÑœK×<Ñ<Ô=Ø×Ñ˜IÔ&ç×-Ü*‰MäŸG™G×,Ñ,¬^Ó<ˆMä�\×"Ò"Ø×#Ñ#Ð$:Ô;Ø×#Ñ# E¬K×,AÑ,AÕ$AÔBØ�N‰N˜=Ô)Ø�N‰N˜\¨-¨Ð9Ô:Ø�N‰N˜3¤×!6Ñ!6Õ6Ô7àÐ!1Ð:Ð:r"   c                ó~   € V ^8„  d   QhR\         R\        \        \        ,          \        \        ,          3,          /# )r   Úvec_isar   )r   rÞ   r<   r;   )r   s   "r    r!   r!   F  s,   € ÷ ñ ¬6ð ´e¼DÄ½IÄtÌCÅyÐ<PÕ6Qñ r"   c                 ó  € . p. pV \         8w  d{   VP                  R  V P                  4        4       4       V P                  4       .p\        P
                  ! 4       '       d)   \        V 4      P                  4       pRV 2RV 2RV R2.pW3# )c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir$   rŒ  )rŽ  Úxs   & r    r�  Ú0_get_build_args_of_chosen_isa.<locals>.<genexpr>K  s   é € ÐFÑ0E¨1”d—m’m A×&Ð&Ó0Eùr’  zCPU_CAPABILITY=ÚCPU_CAPABILITY_ÚHAVE_Ú_CPU_DEFINITION)r   r“  Úbuild_macroÚbuild_arch_flagsr   r  r;   Úupper)rã  ÚmacrosÚbuild_flagsÚcaps   &   r    Ú_get_build_args_of_chosen_isarñ  F  s“   € Ø€FØ€KØ”/Ô!à�‰ÑF°×0CÑ0CÔ0EÓFÔFà×/Ñ/Ó1Ð2ˆä×Ò×ÒÜ�g“,×$Ñ$Ó&ˆCà! # Ð'Ø! # Ð'Ø˜�u˜OÐ,ðˆFð ÐÐr"   c          
      óª   € V ^8„  d   QhR\         R\         R\        \        \        ,          \        \        ,          \        \        ,          3,          /# )r   Úinclude_pytorchrÎ  r   )r/   rÞ   r<   r;   )r   s   "r    r!   r!   Z  s<   € ÷ /3ñ /3Üð/3Ü%)ð/3ä
Œ4”�9”dœ3•i¤¤c¥Ð*Õ+ñ/3r"   c                 óî  € ^ RI HpHp . pV! 4       p\        P                  P
                  '       d~   V.p\        P                  R8w  de   \        P                  ! 4       '       gJ   VP                  RR.4       \        '       d   VP                  R4       V'       g   VP                  R4       M´. p\        P                  P                  R8X  d”   \        P                  P                  pV'       g   \        R4      h\        V\         4      '       d   VP                  V4       M>\        V\"        4      '       g   \        R	\%        V4       24      hVP                  V4       \        P                  P                  R8X  dU   \        P                  P&                  '       g   \        R4      hVP                  \        P                  P&                  4       \        '       d   VP                  R
4       WVV3# )r   )Úinclude_pathsÚTORCH_LIB_PATHr4   rr  Ú	torch_cpuÚc10Útorch_pythonr  z^'config.aot_inductor.aoti_shim_library' must be set when 'cross_target_platform' is 'windows'.z-expected aoti_shim_library to be a list, got Úsleef)z]'config.aot_inductor.aoti_shim_library_path' must be set to the path of the AOTI shim libraryz+ when 'cross_target_platform' is 'windows'.)Útorch.utils.cpp_extensionrõ  rö  r   r  Úlink_libtorchrg   rh   r  r“  r>   rÇ   r  Úaoti_shim_libraryÚAssertionErrorr  r;   r<   ÚtypeÚaoti_shim_library_path)ró  rÎ  rõ  rö  rÌ  rÈ  rË  rý  s   &&      r    Ú_get_torch_related_argsr  Z  sŒ  € ÷ Hà€IÙ “?€Lä×Ñ×(×(Ð(Ø(Ð)ˆÜ�<‰<˜8Ô#¬F×,<Ò,<×,>Ò,>Ø×Ñ˜g {Ð3Ô4ß‹{Ø× Ñ  Ô'ßØ× Ñ  Ô0øàˆÜ×Ñ×4Ñ4¸	ÔAÜ &× 3Ñ 3× EÑ EÐç$Ü$Øtóð ô Ð+¬S×1Ò1Ø× Ñ Ð!2Õ3ä!Ð"3´T×:Ò:Ü(ØGÌÐM^ÓH_ÐG`Ðaóð ð × Ñ Ð!2Ô3ä×Ñ×0Ñ0°IÔ=Ü×"Ñ"×9×9Ð9Ü ðóð ð 	×Ñœf×1Ñ1×HÑHÔIçƒ{Ø×Ñ˜Ô!à¨Ð2Ð2r"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!   Œ  s   € ÷ 
ñ 
¤$¤s¥)ñ 
r"   c                  óÊ  € \        \        P                  ! R 4      4      p V P                  4       '       ge   \        P
                  ! 4       R8X  dK   \        \        P                  ! R4      4      pVP                  P                  R,          P                  4       p V R,          P                  4       '       g#   \        P                  ! R\        V 4       24       \        V 4      .# )rÒ  r¦  ÚstdlibÚHeaderszPython.hzCan't find Python.h in )r   Ú	sysconfigÚget_pathr   rh   r©  ÚparentÚabsoluteÚwarningsÚwarnr;   )Úinclude_dirÚstd_libs     r    Ú_get_python_include_dirsr  Œ  s¤   € Ü”y×)Ò)¨)Ó4Ó5€Kð ×Ñ×Ò¤H§O¢OÓ$5¸Ô$AÜ”y×)Ò)¨(Ó3Ó4ˆØ—~‘~×,Ñ,¨yÕ8×BÑBÓDˆØ˜*Õ$×,Ñ,×.Ò.Ü�ŠÐ/´°KÓ0@Ð/AÐBÔCÜ�ÓÐÐr"   c                ór   € V ^8„  d   QhR\         \        \        ,          \        \        ,          3,          /# r-   r\  )r   s   "r    r!   r!   ™  s%   € ÷ 0ñ 0¤%¬¬S­	´4¼µ9Ð(<Õ"=ñ 0r"   c            	      óâ  € \        4       p \        P                  ! R \        '       d   RMRR7      pVe   V P	                  V4       \        '       dL   \        \        \        P                  ! R RR7      4      P                  R,          P                  4       4      .pM\        P                  ! R4      .p\        P                  ! 4       '       d    V P	                  \        P                  4       W3# )rÒ  ÚntÚposix_prefix)ÚschemeÚlibsÚLIBDIR)r  r  r  r>   rÇ   r;   r   r  r	  Úget_config_varr   r  r   rÖ  )Úpython_include_dirsÚpython_include_pathÚpython_lib_paths      r    Ú_get_python_related_argsr  ™  sº   € Ü2Ó4ÐÜ#×,Ò,Ø§+£+™$°>ôÐð Ò&Ø×"Ñ"Ð#6Ô7çƒ{ääœ×+Ò+¨I¸dÔCÓD×KÑKÈfÕTß‘(“*óð
‰ô %×3Ò3°HÓ=Ð>ˆä×Ò×ÒØ×"Ñ"¤;×#=Ñ#=Ô>àÐ/Ð/r"   c                ó$   € V ^8„  d   QhR\         /# r-   r.   )r   s   "r    r!   r!   ³  s   € ÷ ñ ¬ñ r"   c                  óö   €  R p \         P                  ! V P                  4       4      P                  R4      p\	        \
        P                  ! V4      4      ^ 8„  #   \         P                  \        3 d     R# i ; i)zconda list llvm-openmp --jsonÚutf8F)	rP   rQ   r@   rT   Úlenr+  ÚloadsrW   rV   )rB   r·  s     r    Úis_conda_llvm_openmp_installedr   ²  sd   € ðØ1ˆÜ×(Ò(¨¯©«Ó9×@Ñ@ÀÓHˆÜ”4—:’:˜fÓ%Ó&¨Ñ*Ð*øÜ×&Ñ&Ô(9Ð:ô Úðús   ‚AA ÁA8Á7A8c                óF   € V ^8„  d   QhR\         \        \        3,          /# r-   rÝ   )r   s   "r    r!   r!   ½  s   € ÷ ñ œœt¤S˜yÕ)ñ r"   c                  ó   €  \         P                  ! R 4      f   R# \        P                  ! . RO4      P	                  R4      P                  4       p \        P                  P                  V 4      pW3#   \        P                   d    Ru # i ; i)Úbrewr  rð   )r#  z--prefixrµ  )
r„   r…   rP   rQ   rT   rS   ri   rl   r   rW   )Úlibomp_pathÚomp_availables     r    Úhomebrew_libompr&  ¼  sz   € ðä�<Š<˜ÓÒ'ØÐô
 ×#Ò#Ò$BÓCß‰V�F‹^ß‰U‹Wð 	ô Ÿ™Ÿ™ {Ó3ˆØÐ)Ð)øÜ×%Ñ%ô ØÒðús   ‚A3 œAA3 Á3BÂBc                ó4   € V ^8„  d   QhR\         R\         RR/# )r   rI   Úomp_namer   NrJ   )r   s   "r    r!   r!   Ò  s!   € ÷ 
ñ 
¬3ð 
¼#ð 
À$ñ 
r"   c                 óš  €  \         P                  ! \        V R 4      4      P                  R4      p\        P
                  P                  VP                  4       V4      p\        P
                  P                  V4      '       d,   R\        P                  R&   \        P                  ! V4       R# R#   \         P                   d     R# i ; i)z-print-file-name=binr  ÚTRUEÚKMP_DUPLICATE_LIB_OKN)rP   rQ   rF   rT   ri   rl   rm   ÚrstripÚisfiler‚   r   ÚLoadLibraryrW   )rI   r(  r·  Úomp_paths   &&  r    Úperload_clang_libomp_winr0  Ñ  s™   € ð	Ü×(Ò(Ü˜lÐ,BÓCó
ç
‰&�‹.ð 	ô —7‘7—<‘< §¡£°Ó:ˆÜ�7‰7�>‰>˜(×#Ò#Ø17ŒB�J‰JÐ-Ñ.Ü×Ò˜XÖ&ñ $øô ×%Ñ%ô Úðús   ‚B+B1 Â1C
Ã	C
c                ó(   € V ^8„  d   QhR\         RR/# )r   rI   r   NrJ   )r   s   "r    r!   r!   à  s   € ÷ ?ñ ?¬ð ?°ñ ?r"   c                 ó>   € R  R lp . ROpV F  pV! W4       K  	  R# )c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r   rI   Úlib_namer   rH  )r   s   "r    r!   Ú,perload_icx_libomp_win.<locals>.__annotate__á  s!   € ÷ ñ ´Sð ÄCð ÌDñ r"   c                 óŠ  €  \         P                  ! \        V R V 24      \         P                  R7      P                  ! \         pVP                  4       p\        P                  P                  V4      '       d,   R\        P                  R&   \        P                  ! V4       R#  R#   \         P                   d     R# i ; i)z-print-file-name=rM   r*  r+  TF)rP   rQ   rF   rR   rT   rU   r,  ri   rl   r-  r‚   r   r.  rW   )rI   r4  r·  r/  s   &&  r    Ú_load_icx_built_in_lib_by_nameÚ>perload_icx_libomp_win.<locals>._load_icx_built_in_lib_by_nameá  s¯   € ð	Ü×,Ò,Ü! ,Ð2CÀHÀ:Ð0NÓOÜ!×)Ñ)ô÷ ‰fðô -ð.ˆFð —}‘}“ˆHÜ�w‰w�~‰~˜h×'Ò'Ø5;”—
‘
Ð1Ñ2Ü× Ò  Ô*Ùð (ñ øô ×)Ñ)ô 	ØÙð	ús   ‚B"B) Â)CÃCN)zlibiomp5md.dllzsvml_dispmd.dllz
libmmd.dllr%   )rI   r7  Úpreload_listr4  s   &   r    Úperload_icx_libomp_winr:  ß  s'   € õðò€Ló !ˆÙ& |Ö>ó !r"   c                óþ   € V ^8„  d   QhR\         R\        \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          3,          /# rH   )r;   rÞ   r<   )r   s   "r    r!   r!   þ  sN   € ÷ jUñ jUÜðjUä
Œ4”�9”dœ3•i¤¤c¥¬D´­I´t¼CµyÄ$ÄsÅ)ÐKÕLñjUr"   c                 óz	  € . p. p. p. p. p. p\         P                  P                  R 8X  d   WW4WV3# \        '       Ed·   VP	                  R4       VP	                  R4       \        V 4      '       * p\        P                  ! R4      pVeÊ   \        P                  P                  VRR4      p	\        P                  P                  V	4      p
V
'       d`   VP	                  \        P                  P                  VR4      4       VP	                  \        P                  P                  VR4      4       M\        P                  ! R4       T;'       g    T
pV'       g   VP	                  R4       \        P                  ! R	4      pV'       gï   Veë   \        4       pV'       dÙ   \        P                  P                  VR4      pVP	                  \        P                  P                  VR4      4       VP	                  V4       \        P                  ! 4       P                  R
8X  dU   \        P                  P                  \        P                  P                  VR4      4      '       d   VP	                  R4       V'       gs   \!        4       w  r}V'       d_   VP	                  \        P                  P                  VR4      4       VP	                  \        P                  P                  VR4      4       EMÄ\"        '       d§    \%        V 4      '       d1   VP	                  R4       VP	                  R4       \'        V R4       EMv\)        V 4      '       d0   VP	                  R4       VP	                  R4       \+        V 4       EM6VP	                  R4       VP	                  R4       EM\         P,                  ! 4       '       d   VP	                  \.        P0                  4       VP	                  R4       VP	                  \        P                  P3                  \.        P4                  4      4       VP	                  R4       My\%        V 4      '       d$   VP	                  R4       VP	                  R4       ME\)        V 4      '       d   VP	                  R4       M"VP	                  R4       VP	                  R4       WW4WV3# )r  ÚXclangÚfopenmpÚ
OMP_PREFIXrÒ  zomp.hÚlibz-environment variable `OMP_PREFIX` is invalid.ÚompÚCONDA_PREFIXrÊ  zlibiomp5.dylibÚiomp5Úopenmprµ  z
libomp.dllÚQiopenmpÚ
libiomp5mdzopenmp:experimentalz-Wp,-fopenmpÚgompÚfiopenmp)r   r  r  Ú	_IS_MACOSrÇ   rL  ri   rj   rl   rm   r   r
  r  r   Úunamerp  r&  r>   rP  r0  rn  r:  r  r   rÕ  ÚdirnameÚopenmp_lib_so)rI   rÉ  rÊ  Úinclude_dir_pathsÚlib_dir_pathsr  rÍ  r%  Ú
omp_prefixÚheader_pathÚ	valid_envÚconda_prefixÚconda_lib_pathr$  s   &             r    Ú_get_openmp_argsrT  þ  sN  € ð €FØ€GØ#%ÐØ!€MØ€DØ"$Ðä×Ñ×0Ñ0°IÔ=ØÐ 1À$ÐXÐXß„yà�‰�hÔØ�‰�iÔ ô ,¨LÓ9Ô9ˆô —Y’Y˜|Ó,ˆ
ØÒ!ÜŸ'™'Ÿ,™, z°9¸gÓFˆKÜŸ™Ÿ™ {Ó3ˆIßØ!×(Ñ(¬¯©¯©°jÀ)Ó)LÔMØ×$Ñ$¤R§W¡W§\¡\°*¸eÓ%DÕEä—’ÐMÔNØ)×6Ð6¨YˆMçØ�K‰K˜Ôô —y’y Ó0ˆß Ò!9Ü:Ó<ˆMßÜ!#§¡§¡¨l¸EÓ!B�Ø!×(Ñ(¬¯©¯©°lÀIÓ)NÔOØ×$Ñ$ ^Ô4ä—8’8“:×%Ñ%¨Ô1´b·g±g·n±nÜ—G‘G—L‘L Ð1AÓB÷7ò 7ð —K‘K Ô(÷ Ü)8Ó):Ñ&ˆMßØ!×(Ñ(¬¯©¯©°kÀ9Ó)MÔNØ×$Ñ$¤R§W¡W§\¡\°+¸uÓ%EÔFù÷ 
‹ð	ô �\×"Ò"Ø�M‰M˜(Ô#Ø�K‰K˜Ô!Ü$ \°<Ö@Ü ×-Ò-Ø�M‰M˜*Ô%Ø�K‰K˜Ô%Ü" <Ö0ð
 �M‰M˜(Ô#Ø�M‰MÐ/Ö0ä×Ò×ÒØ×$Ñ$¤[×%?Ñ%?Ô@à×#Ñ# NÔ3Ø× Ñ ¤§¡§¡´×1JÑ1JÓ!KÔLà�K‰K˜Õä˜×&Ò&à—‘˜iÔ(Ø—‘˜FÕ#Ü# L×1Ò1Ø—‘˜jÕ)à—‘˜iÔ(Ø—‘˜FÔ#àÐ-¸dÐTÐTr"   c                ór   € V ^8„  d   QhR\         \        \        ,          \        \        ,          3,          /# r-   r\  )r   s   "r    r!   r!   k  s%   € ÷ 
ñ 
œU¤4¬¥9¬d´3­iÐ#7Õ8ñ 
r"   c                 ó–   € . p . p\         P                  ! 4       '       d)   \        P                  ! R4      .p VP	                  R4       W3# )z
For fbcode cpu case, we should link stdc++ instead assuming the binary where dlopen is executed is built with dynamic stdc++.
r  zstdc++)r   r  r  r  rÇ   )rN  r  s     r    Ú_get_libstdcxx_argsrW  k  sE   € ð  "€MØ€DÜ×Ò×ÒÜ"×1Ò1°(Ó;Ð<ˆØ�‰�HÔàÐÐr"   c                óR   € V ^8„  d   QhR\         R\         R\        \        ,          /# )r   Úuse_mmap_weightsÚuse_mmap_weights_externalr   r3  )r   s   "r    r!   r!   x  s(   € ÷ ñ ÜðÜ7;ðä	Œ#…Yñr"   c                 ó¨   € . pV '       d   V'       d   \        R 4      hV '       d   VP                  R4       V# V'       d   VP                  R4       V# )zIOnly one of use_mmap_weights and use_mmap_weights_external should be truez USE_MMAP_SELFz USE_MMAP_EXTERNAL)r·   rÇ   )rY  rZ  rî  s   && r    Úget_mmap_self_macror\  x  sO   € ð €Fç×5ÜØWó
ð 	
÷ Ø�‰Ð&Ô'ð €M÷ 
#Ø�‰Ð*Ô+Ø€Mr"   c                ó:   € V ^8„  d   QhR\         \        ,          /# r-   r‰  )r   s   "r    r!   r!   ˆ  s   € ÷ ñ ¤T¬#¥Yñ r"   c                  óp   € ^ RI Hp  . pV P                  P                  '       d   VP	                  R4       V# )r   )r   z# AOT_INDUCTOR_USE_CACHING_ALLOCATOR)Útorch._inductorr   r  Úweight_use_caching_allocatorrÇ   )r   rî  s     r    Úget_caching_allocator_macrora  ˆ  s.   € Ý&à€FØ×Ñ×7×7Ð7Ø�‰Ð;Ô<Ø€Mr"   c                óf  € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        R\        \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          3,          /# )	r   rI   rã  ró  rÎ  r  rY  rZ  r   )r;   r   r/   rÞ   r<   )r   s   "r    r!   r!   ‘  s“   € ÷ Zñ ZÜðZäðZô ðZô ð	Zô
 ðZô ðZô  $ðZô Œ4”�9”dœ3•i¤¤c¥¬D´­I´t¼CµyÄ$ÄsÅ)ÌTÔRUÍYÐVÕWñZr"   c                ó   € . p. p. p	. p
. p. p. p\        4       p\        4       p\        WV4      w  pppp\        V4      w  pp\	        W#R7      w  ppp\        4       w  pp\        V 4      w  pppppp \        4       p!\        WV4      p"\        4       p#VV,           V,           V!,           V",           V#,           pVV,           V,           V,           pVV,           p	VV,           p
VV,           V,           pVV,           pVV,           V ,           pVVV	V
VVV3# )a  
This function is used to get the build args of torch related build options.
1. Torch include_directories, libraries, libraries_directories.
2. Python include_directories, libraries, libraries_directories.
3. OpenMP related.
4. Torch MACROs.
5. MISC
6. Return the build args
)ró  rÎ  )
rÃ  rÆ  rá  rñ  r  r  rT  rÎ  r\  ra  )$rI   rã  ró  rÎ  r  rY  rZ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  Útorch_cpp_wrapper_definitionsÚ'use_custom_generated_macros_definitionsÚsys_libs_cflagsÚsys_libs_include_dirsÚsys_libs_passthrough_argsÚsys_libs_ldflagsÚ
isa_macrosÚisa_ps_args_build_flagsÚtorch_include_dirsÚtorch_libraries_dirsÚtorch_librariesr  Úpython_libraries_dirsÚ
omp_cflagsÚomp_ldflagsÚomp_include_dir_pathsÚomp_lib_dir_pathsÚomp_libÚomp_passthrough_argsÚfb_macro_passthrough_argsÚmmap_self_macrosÚcaching_allocator_macross$   &&&&&&&                             r    Úget_cpp_torch_optionsry  ‘  s˜  € ð$  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðä$EÓ$GÐ!Ü.JÓ.LÐ+ô 	! Ð9JÓKñØØØ!Øô +HÈÓ*PÑ'€JÐ'ô 	 °ÔSñ	ØØØô 2JÓ1KÑ.ÐÐ.ô 	˜Ó&ñØØØØØØô !8Ó 9Ðä*Ð+;ÓWÐÜ:Ó<Ðð 	&Ø
1õ	2à
õ	ð $õ	$ð õ		ð
 #õ	#ð ð 	Ø
õ	à
õ	ð  õ	 ð ð ˜zÕ)€FØ Õ,€GØ*Ð-AÕAÐDUÕU€NØ 'Õ)€Ià!Ð$;Õ;Ð>RÕRð ð
 	ØØØØØØðð r"   c                   ób   a a€ ] tR tRt oRt]RRRRRRRRR	RRRR3V3R lV 3R llltRtVtV ;t	# )
ÚCppTorchOptionsiî  aB  
This class is inherited from CppTorchOptions, which automatic contains
base cxx build options. And then it will maintains torch related build
args.
1. Torch include_directories, libraries, libraries_directories.
2. Python include_directories, libraries, libraries_directories.
3. OpenMP related.
4. Torch MACROs.
5. MISC
FTrO   c                ó‚   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[RS[R	S[R
S[S[,          RS[RS[RS[RS[RR/# )r   rã  ró  r2  rÎ  rÏ  r  rY  rZ  r§  r¬  r9   r…  rÐ  rÑ  r   N)r   r/   r   r;   )r   r•   s   "€r    r!   ÚCppTorchOptions.__annotate__ú  s¥   ø€ ÷ 7!ñ 7!áð7!ñ ð7!ñ ð	7!ñ
 ð7!ñ ð7!ñ  ð7!ñ ð7!ñ $(ð7!ñ ð7!ñ ™c•]ð7!ñ ð7!ñ ð7!ñ ð7!ñ ð7!ð  
ñ!7!r"   c                óÞ  <€ \         SV `  VVV
VVVVVR 7       W@n        \        V P                  VVVVVVR7      w  ppppppp\        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       V P                  4        R# ))rÏ  r2  r¬  r  r9   r…  rÐ  rÑ  )rI   rã  ró  rÎ  r  rY  rZ  N)r·  rž   rÝ  ry  rÔ  r”  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  rí  )r�   rã  ró  r2  rÎ  rÏ  r  rY  rZ  r§  r¬  r9   r…  rÐ  rÑ  Útorch_definitionsrl  Útorch_cflagsÚtorch_ldflagsrm  rn  Útorch_passthrough_argsr¸  s   &&&&&&&&&&&&&&&       €r    rž   ÚCppTorchOptions.__init__ú  sï   ø€ ô" 	‰ÑØ%Ø#Ø#Ø/ØØ%Ø%Ø'ð 	ô 		
ð "Œô "ØŸ™ØØ+ØØ/Ø-Ø&?ô
ñ	
ØØØØØ ØØ"ô 	�T×&Ñ&Ð(9Ô:Ü�T×'Ñ'Ð);Ô<Ü�T—\‘\ <Ô0Ü�T—]‘] MÔ2Ü�T×)Ñ)Ð+?Ô@Ü�T—_‘_ oÔ6Ü�T×+Ñ+Ð-CÔDØ×ÑÖ r"   r  r%   )
rÓ   rÔ   rÕ   rÖ   r0  r   rž   r×   rØ   rº  r»  s   @@r    r{  r{  î  sE   ù‡ € ñ	ð *Ø %Ø ØØ"Ø"'Ø!&Ø*/ØØ%'ØØ"Ø"Ø#÷7!÷ 7!õ 7!r"   r{  c                ó   € V ^8„  d   QhRR/# r¡   r%   )r   s   "r    r!   r!   4  s   € ÷ 7ñ 7˜dñ 7r"   c                  ó  € \         P                  ! 4       '       dp   \        P                  P                  fR   R\
        P                  9  d;   R\
        P                  9  d$   \        P                  \
        P                  R&   R # R # R # R # R # )NÚ	CUDA_HOMEÚ	CUDA_PATH)	r   r  rr  ÚversionÚhipri   r‚   r   Úsdk_homer%   r"   r    Ú_set_gpu_runtime_envr‹  4  sa   € ä×Ò×ÒÜ�M‰M×ÑÒ%ØœrŸz™zÔ)ØœrŸz™zÔ)ä"-×"6Ñ"6Œ�
‰
�;Óñ *ñ *ñ &ñ 	r"   c                ó>   € V ^8„  d   QhR\         R\        R,          /# )r   rl   r   N)r;   r   )r   s   "r    r!   r!   ?  s   € ÷ ñ ¤ð ¬°­ñ r"   c                 óÒ   € \        \        V 4      P                  R 4      4      pV'       d"   V^ ,          P                  4       P                  # RV  2p\
        P                  V4       R# )zlibcudart_static.az%"libcudart_static.a" not found under N)r<   r   ÚrglobÚresolver  r€   r�   )rl   Úlib_dirsÚlog_msgs   &  r    Ú_find_libcudart_staticr’  >  sS   € ä”D˜“J×$Ñ$Ð%9Ó:Ó;€HßØ˜�{×"Ñ"Ó$×+Ñ+Ð+Ø5°d°VÐ<€GÜ‡H�HˆWÔÙr"   c                ó@   € V ^8„  d   QhR\         R\         R\         RR/# )r   Údll_pathÚdef_pathÚimport_lib_pathr   NrJ   )r   s   "r    r!   r!   H  s/   € ÷ Uñ U¤Cð U´3ð UÌð UÐQUñ Ur"   c           	     ó‚  € \         P                  P                  V 4      p\        VR4      ;_uu_ 4       p\        P
                  ! RRV .V\        P                  RR7       RRR4       \        P
                  ! RRVR	VR
V.\        P                  RR7       \        P                  RW#4       R#   + '       g   i     LV; i)zIGenerate a MinGW import library (.a) from a DLL using gendef and dlltool.r9  ÚgendefÚ-Tr^  Nzx86_64-w64-mingw32-dlltoolz-dú-lz-D©rN   r-  z)Generated MinGW import library %s from %s)	ri   rl   rÞ  r>  rP   r/  r‡   r€   r�   )r”  r•  r–  Údll_nameÚdef_files   &&&  r    Ú_gen_mingw_import_librž  H  s›   € ä�w‰w×Ñ Ó)€HÜ	ˆh˜×	Ô	 Ü�ŠØ�s˜HÐ%ØÜ—?‘?Øõ		
÷ 
ô ‡N‚Nà(ØØØØØØð	
ô �‰Øõô ‡H�HÐ8¸/ÖT÷+ 
×	ús   ´,B.Â.B>	aÞ  #include <stdint.h>
uint64_t __security_cookie = 0x00002B992DDFA232ULL;
void __security_check_cookie(uint64_t cookie) { (void)cookie; }
void __GSHandlerCheck(void) {}
void __guard_check_icall_nop(void *target) { (void)target; }
void (*__guard_check_icall_fptr)(void *target) = __guard_check_icall_nop;
__attribute__((naked)) void __guard_dispatch_icall_nop(void) {
    __asm__ __volatile__("jmp *%rax");
}
void (*__guard_dispatch_icall_fptr)(void) = __guard_dispatch_icall_nop;
c                ó>   € V ^8„  d   QhR\         R\         R,          /# )r   r7  r   NrJ   )r   s   "r    r!   r!   {  s   € ÷ ,ñ ,¬#ð ,´#¸µ*ñ ,r"   c                ó²  € \         P                  P                  V R4      p\         P                  P                  V4      '       d   R# RpRp \         P                  P                  V R4      p\         P                  P                  V R4      p\	        VR4      ;_uu_ 4       pVP                  \        4       RRR4       \        P                  RR	4      p\        P                  ! VR
VRV.\        P                  RR7       \        P                  RR4      p\        P                  ! VRW.\        P                  RR7       \        P                  RV4        W#3 FJ  pV'       g   K  \         P                  P                  V4      '       g   K4  \         P                  ! V4       KL  	  R#   + '       g   i     Lü; i  \        \        P                   3 d¨    \        P#                  RRR7       \         P                  P                  T4      '       d   \         P                  ! T4        Y#3 FJ  pT'       g   K  \         P                  P                  T4      '       g   K4  \         P                  ! T4       KL  	  R# i ; i  Y#3 FJ  pT'       g   K  \         P                  P                  T4      '       g   K4  \         P                  ! T4       KL  	  i ; i)z¥
Create a static library with MSVC GS security symbol stubs for MinGW.

Returns the library name (without lib prefix / .a suffix) if successful,
or None on failure.
zlibmsvc_gs_stubs.aÚmsvc_gs_stubsrO   z_msvc_gs_stubs.cz_msvc_gs_stubs.or9  Nry   rw   r<  r=  Tr›  ÚarÚrcsz!Created MSVC GS stubs library: %sz'Failed to create MSVC GS stubs library.©Úexc_info)ri   rl   rm   r   r>  r?  Ú_MSVC_GS_STUBS_SOURCEr  r6   rP   r/  r‡   r€   r�   r¨  rV   rô   Úwarning)r7  Ú	stubs_libÚsrc_pathrB  rC  Ú	mingw_gccÚmingw_ars   &      r    Ú_create_msvc_gs_stubs_libr¬  {  sú  € ô —‘—‘˜ZÐ)=Ó>€IÜ	‡w�w‡~�~�i× Ò Ùà€HØ€HðÜ—7‘7—<‘< 
Ð,>Ó?ˆÜ—7‘7—<‘< 
Ð,>Ó?ˆÜ�(˜C× Ô  AØ�G‰GÔ)Ô*÷ !ô ×%Ñ% e¨UÓ3ˆ	Ü�ŠØ˜˜h¨¨hÐ7Ü—?‘?Øõ	
ô
 ×$Ñ$ U¨DÓ1ˆÜ�ŠØ�u˜iÐ2Ü—?‘?Øõ	
ô
 	�‰Ð4°iÔ@Øð Ó%ˆAß‰q”R—W‘W—^‘^ A×&Ô&Ü—	’	˜!–ó &÷5 !× ûô" œz×<Ñ<Ð=ô Ü�‰Ø5Øð 	ô 	
ô �7‰7�>‰>˜)×$Ò$Ü�IŠI�iÔ ØàÓ%ˆAß‰q”R—W‘W—^‘^ A×&Ô&Ü—	’	˜!–ó &ðûð Ó%ˆAß‰q”R—W‘W—^‘^ A×&Ô&Ü—	’	˜!–ò &úsQ   ÁAF> Â!F+Â7B F> Æ+F;	Æ6F> Æ>AJ ÈJ È+J É?J Ê J ÊKÊ"KÊ;Kc                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# )r   rË  r   r‰  )r   s   "r    r!   r!   ª  s&   € ÷ Uñ U´D¼µIð UÄ$ÄsÅ)ñ Ur"   c                ó²  € ^ RI p\        P                  P                  R4      pV'       g   \        P                  R4       . # V  F`  p\        P                  P                  \        P                  P                  VR4      4      '       g   KH  \        P                  RV4       . u # 	  \        P                  P                  VRR4      p\        P                  P                  V4      '       g!   \        P                  P                  VR4      pVP                  \        P                  P                  VR4      4      pRpV  Fž  p\        P                  P                  V4      '       g   K*  \        P                  ! V\        P                  4      '       g   KW  \        P                  P                  \        P                  P                  VR	4      4      '       g   Kœ  Tp M	  V'       g3   \        P                  R
V4       Ve   \        V4      pV'       d   V.# . # Vf   \        P                  RV 4       . # V^ ,          p\        P                  P                  V4      p	\        P                  P                  WiP                  RR4      4      p
\        P                  P                  VR4      p \!        WŠV4       . #   \"        \$        P&                  3 d|    \        P                  RRR7       Y«3 F@  p\        P                  P                  T4      '       g   K*  \        P(                  ! T4       KB  	  \        T4      pT'       d   T.u # . u # i ; i)aÉ  
Auto-generate a MinGW-compatible import library (libcudart.a)
from the CUDA runtime DLL. This avoids linking against the hybrid cudart.lib
which contains MSVC-compiled static objects with /GS security symbols that
MinGW cannot resolve.

Falls back to creating MSVC GS security stubs if the DLL is unavailable,
and falls back gracefully to the original cudart.lib if that also fails.

Returns a list of extra library names to link (e.g. ["msvc_gs_stubs"]).
NÚWINDOWS_CUDA_HOMEzFWINDOWS_CUDA_HOME not set, skipping MinGW cudart import lib generationzlibcudart.az5libcudart.a already exists in %s, skipping generationrx   rí   zcudart64_*.dllz
cudart.libztNo cudart64_*.dll found in %s. Cannot generate MinGW import library. Will create MSVC GS security stubs as fallback.zÄNo writable directory containing cudart.lib found. Cannot generate MinGW import library. If linking fails with undefined references to __security_cookie, ensure cudart.lib is present in one of: %sz.dllz.defzNFailed to generate MinGW cudart import library. Falling back to MSVC GS stubs.Tr¤  )Úglobri   r‚   rƒ   r€   Údebugrl   r   rm   rò   ÚaccessÚW_OKr§  r¬  rÞ  r6   rž  rV   rP   rô   r¨  )rË  r°  Úwindows_cuda_homeÚlib_dirÚbin_dirÚdll_candidatesr7  Ústub_libr”  rœ  r•  r–  rC  s   &            r    Ú_ensure_mingw_cudart_import_libr¹  ª  st  € ó äŸ
™
Ÿ™Ð':Ó;ÐßÜ�	‰	ØTô	
ð ˆ	ã!ˆÜ�7‰7�>‰>œ"Ÿ'™'Ÿ,™, w°Ó>×?Ô?Ü�I‰IÐMÈwÔWØŠIñ "ô �g‰g�l‰lÐ,¨e°UÓ;€GÜ�7‰7�=‰=˜×!Ò!Ü—'‘'—,‘,Ð0°%Ó8ˆØ—Y‘YœrŸw™wŸ|™|¨GÐ5EÓFÓG€Nð €JÛ!ˆÜ�7‰7�=‰=˜×!Ô!¤b§i¢i°¼¿¹×&AÔ&AÜ�w‰w�~‰~œbŸg™gŸl™l¨7°LÓA×BÔBØ$�
Ùñ	 "÷ Ü�‰ð>àô	
ð Ò!Ü0°Ó<ˆHßØ �zÐ!Øˆ	àÒÜ�‰ð9ð ô	
ð ˆ	à˜aÕ €HÜ�w‰w×Ñ Ó)€Hä�w‰w�|‰|˜J×(8Ñ(8¸ÀÓ(HÓI€HÜ—g‘g—l‘l :¨}Ó=€OðÜ˜h°/ÔBØˆ	øÜœz×<Ñ<Ð=ô Ü�‰ð-àð 	ô 	
ð
 Ó,ˆAÜ�w‰w�~‰~˜a× Ô Ü—	’	˜!–ñ -ô -¨ZÓ8ˆßØ�:ÒØŠ	ðús   Ê2K  Ë AMÌ0MÍMÍMc                ó>   € V ^8„  d   QhR\         \        ,          RR/# ©r   Úlpathsr   Nr‰  )r   s   "r    r!   r!     s   € ÷ ,ñ ,¤$¤s¥)ð ,°ñ ,r"   c                 ó`  € \        V 4       F£  w  rR \        P                  9   g   K  VP                  \        P                  R ,          4      '       g   KJ  \	        V4      pVf   K[  \        V4      W&   VR,          pVP                  4       '       g   K‰  V P                  \        V4      4       K¥  	  \        P                  ! 4       '       da   \        P                  \        P                  P                  \        P                  R4      3 F  pWP9  g   K  V P                  V4       K  	  R# R# )r†  NÚstubs)Ú	enumerateri   r‚   rq  r’  r;   r   rÇ   r   r  r   Úsdk_librl   rm   )r¼  rÍ   rl   rµ  Ústub_dirÚcuda_lib_dirs   &     r    Ú_transform_cuda_pathsrÃ    sÕ   € ô ˜VÖ$‰ˆØœ"Ÿ*™*Ö$¨¯©¼¿¹ÀKÕ9P×)QÔ)QÜ#9¸$Ó#?ˆGØŠÙÜ˜G›ˆF‰IØ Õ(ˆHØ�‰× Ô Ø—‘œc (›mÖ,ñ %ô ×Ò×Òô
 ×ÑÜ�G‰G�L‰Lœ×,Ñ,¨gÓ6ó
ˆLð Ö)Ø—‘˜lÖ+ó
ñ	 r"   c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r»  r‰  )r   s   "r    r!   r!     s   € ÷ #ñ #¤$¤s¥)ð #°ñ #r"   c                 óà   € \         P                  ! 4       '       dS   \        P                  p\        P
                  P                  V4      '       d   W9  d   V P                  V4       R # R # R # R # r$   )r   r  r   rÀ  ri   rl   rò   rÇ   )r¼  rÀ  s   & r    Ú_transform_rocm_pathsrÆ    sM   € ä×Ò×ÒÜ×%Ñ%ˆÜ�7‰7�=‰=˜×!Ò! gÔ&;Ø�M‰M˜'Ö"ñ '<Ñ!ñ r"   c                ó6  € V ^8„  d   QhR\         R\        R\        R\        \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          \        \         ,          3,          /# )r   Údevice_typerÎ  rÏ  r   r†  )r   s   "r    r!   r!   %  sg   € ÷ vñ vÜðväðvô ðvô Œ4”�9”dœ3•i¤¤c¥¬D´­I´t¼CµyÄ$ÄsÅ)ÌTÔRUÍYÐVÕWñ	vr"   c                óŽ  € . p. p. p. p. p. p. p	\         P                  ! 4       '       dL   R\        P                  9  d7   R\        P                  9  d"   \        P
                  \        P                  R&   \        4        ^ RIHp
 V
P                  fB   \        P                  P                  R4      '       d   \        P                  R,          V
n	        V
P                  V \         P                  P                  RJ 4      p\         P                  P                  pV
P                  V V\         P                  P                  R7      pV R8X  Ed$   TP!                  \"        P$                  P&                  '       d   RMR4       \"        P$                  P&                  eV   \         P                  ! 4       '       g	   V'       g   VR	.,          pM
VR
.,          pVP!                  R4       \)        V4       M\         P                  ! 4       '       g	   V'       g   VR.,          pMVRR.,          p\         P                  P                  R8X  d   \+        V4      pVR.V,           ,          p\-        V4       V R8X  dÙ   VP!                  R4       Rp\.        '       dw   \        P0                  ! R4      pVf   \3        V4      hV\        P4                  P7                  VR4      .,          pV\        P4                  P7                  VR4      .,          pM&VR.,          p\9        R4      '       g   \3        V4      hVRR.,          pV'       d   VR.,          pV R8X  d   VP!                  R4       \         P                  ! 4       '       d{   VP!                  \        P:                  4       V'       d/   V R8X  d(   \"        P$                  P&                  f   V'       g   R.p	V R8X  d   \=        4       w  ppW,          pVV,          p\         P                  P>                  '       d"   V\         P                  P>                  ,          pVVVVVVV	3# )zÂ
This function is used to get the build args of device related build options.
1. Device include_directories, libraries, libraries_directories.
2. Device MACROs.
3. MISC
4. Return the build args
r†  r‡  )Úcpp_extensionN)rl  r  Úcudaz	 USE_ROCMz	 USE_CUDAÚamdhip64Ú	torch_hipz __HIP_PLATFORM_AMD__Ú
torch_cudar  ÚcudartÚxpuz USE_XPUz•Intel GPU driver is not properly installed, please follow the instruction in https://github.com/pytorch/pytorch?tab=readme-ov-file#intel-gpu-support.ÚLEVEL_ZERO_V1_SDK_PATHrÒ  r@  zWno-commentÚ	ze_loaderÚsyclÚ	torch_xpuÚmpsz USE_MPSz*-Wl,-Bstatic -lcudart_static -Wl,-Bdynamicrs  ) r   r  ri   r‚   r   rŠ  r‹  Útorch.utilsrÊ  r†  rƒ   rõ  r  rü  Úlibrary_pathsr  rÇ   rr  rˆ  r‰  rÆ  r¹  rÃ  r>   rj   r_  rl   rm   r   Úsdk_includerW  Úcustom_op_libs)rÈ  rÎ  rÏ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÊ  rü  Ú
extra_libsÚxpu_error_stringÚze_rootÚstdcxx_lib_dir_pathsÚstdcxx_libss   &&&              r    Úget_cpp_torch_device_optionsrß  %  st  € ð  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðä×Ò×ÒØœrŸz™zÔ)ØœrŸz™zÔ)ä"-×"6Ñ"6Œ�
‰
�;ÑäÔÝ)ð ×ÑÒ&¬2¯:©:¯>©>¸+×+FÒ+FÜ"$§*¡*¨[Õ"9ˆÔà ×.Ñ.Ø”V×(Ñ(×6Ñ6¸$Ð>ó€Lô ×'Ñ'×5Ñ5€MØ"×0Ñ0ØØ(Ü$×1Ñ1×GÑGð 1ó €Nð
 �fÕØ×Ñ¬%¯-©-×*;×*;Ð*;™;ÀÔMä�=‰=×ÑÒ(Ü×Ò×!Ò!¯Ø˜j˜\Õ)‘	à˜k˜]Õ*�	Ø×ÑÐ6Ô7Ü! .Õ1ä×Ò×!Ò!¯Ø˜f˜XÕ%‘	à˜f lÐ3Õ3�	Ü×"Ñ"×8Ñ8¸IÔEÜ<¸^ÓL�
Ø˜h˜Z¨*Õ4Õ4�	Ü! .Ô1à�eÔØ×Ñ˜:Ô&ðZð 	÷ ‹;Ü—i’iÐ 8Ó9ˆGØŠÜÐ.Ó/Ð/ØœRŸW™WŸ\™\¨'°9Ó=Ð>Õ>ˆLØœrŸw™wŸ|™|¨G°UÓ;Ð<Õ<‰Nð �}�oÕ%ˆFÜ ×,Ò,ÜÐ.Ó/Ð/à�k 6Ð*Õ*ˆ	ßØ˜+˜Õ&ˆIà�eÔØ×Ñ˜:Ô&ä×Ò×ÒØ×ÑœK×3Ñ3Ô4ç˜ vÔ-Ü�}‰}× Ñ Ò(ß#à(TÐ'UÐ$à˜%Ôô $Ó%ñØ$ØàÕ2ˆNØ˜Õ$ˆIä×Ñ×)×)Ð)Ø”V×(Ñ(×7Ñ7Õ7ˆ	ð 	ØØØØØØðð r"   c                   óz   a a€ ] tR tRt oRt]RRRRRRRRRRRRR3V3R lV 3R llltV3R	 lV 3R
 lltRtVt	V ;t
# )ÚCppTorchDeviceOptionsiž  z¾
This class is inherited from CppTorchOptions, which automatic contains
base cxx build options and torch common build options. And then it will
maintains cuda/xpu device related build args.
FrË  TrO   c                ó‚   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[RS[R	S[R
S[S[,          RS[RS[RS[RS[RR/# )r   rã  ró  rÈ  rÎ  rÏ  r  rY  rZ  r§  r¬  r…  rÐ  rÑ  r9   r   N)r   r/   r;   r   )r   r•   s   "€r    r!   Ú"CppTorchDeviceOptions.__annotate__¥  s¥   ø€ ÷ <!ñ <!áð<!ñ ð<!ñ ð	<!ñ
 ð<!ñ ð<!ñ  ð<!ñ ð<!ñ $(ð<!ñ ð<!ñ ™c•]ð<!ñ ð<!ñ ð<!ñ ð<!ñ ð<!ð  
ñ!<!r"   c                óÚ  <€ \         SV `  VVVVVVVV
VVVVR 7       . p. p. p. p. p. p. p\        VVVR7      w  ppppppp\        V P                  V4       \        V P
                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       \        V P                  V4       V P                  4        R# ))rã  ró  rÎ  rÏ  r  rY  rZ  r¬  r…  rÐ  rÑ  r9   )rÈ  rÎ  rÏ  N)r·  rž   rß  r”  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  rí  )r�   rã  ró  rÈ  rÎ  rÏ  r  rY  rZ  r§  r¬  r…  rÐ  rÑ  r9   Údevice_definitionsÚdevice_include_dirsÚdevice_cflagsÚdevice_ldflagsÚdevice_libraries_dirsÚdevice_librariesÚdevice_passthrough_argsr¸  s   &&&&&&&&&&&&&&&       €r    rž   ÚCppTorchDeviceOptions.__init__¥  s  ø€ ô" 	‰ÑØØ+ØØ%Ø/Ø-Ø&?Ø#Ø%Ø%Ø'Øð 	ô 	
ð )+ÐØ)+ÐØ#%ˆØ$&ˆØ+-ÐØ&(ÐØ-/Ðô )Ø#ØØ%ô
ñ	
ØØØØØ!ØØ#ô 	�T×&Ñ&Ð(:Ô;Ü�T×'Ñ'Ð)<Ô=Ü�T—\‘\ =Ô1Ü�T—]‘] NÔ3Ü�T×)Ñ)Ð+@ÔAÜ�T—_‘_Ð&6Ô7Ü�T×+Ñ+Ð-DÔEØ×ÑÖ r"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rã  ã  s   ø€ ÷ 
@ñ 
@ 4ñ 
@r"   c                ón  <€ \         SV `  4        \        P                  ! 4       '       d‹   \	        4       w  r\        V4      ^8w  d   \        RV 24      hV^ ,          V P                  9   dG   V P                  P                  V^ ,          4       V P                  P                  V^ ,          4       R# R# R# )é   zPython lib dirs: N)
r·  rí  r   r  r  r  rþ  rÙ  r¨  rÇ   )r�   r.  Úpython_lib_dirsr¸  s   &  €r    rí  Ú'CppTorchDeviceOptions._finalize_optionsã  sš   ø€ Ü‰Ñ!Ô#Ü×Ò×Òô ":Ó!;ÑˆAÜ�?Ó# qÔ(Ü$Ð'8¸Ð8IÐ%JÓKÐKØ˜qÕ! T×%9Ñ%9Ô9Ø×$Ñ$×+Ñ+¨O¸AÕ,>Ô?Ø×$Ñ$×+Ñ+¨O¸AÕ,>Ö?ñ :ñ r"   r%   )rÓ   rÔ   rÕ   rÖ   r0  r   rž   rí  r×   rØ   rº  r»  s   @@r    rá  rá  ž  sS   ù‡ € ñð *Ø %Ø!ØØ"Ø"'Ø!&Ø*/ØØ%'Ø"Ø"Ø#Ø÷<!õ <!÷|
@÷ 
@ó 
@r"   rá  c                óR   € V ^8„  d   QhR\         R\        \         \         3,          /# )r   r”   r   )r;   rÞ   )r   s   "r    r!   r!   ð  s$   € ÷ ñ Üðä
Œ3”ˆ8…_ñr"   c                óÆ   € \         P                  P                  V 4      p\         P                  P                  V4      w  r#\         P                  P	                  V 4      pW$3# )a�  
This function help prepare parameters to new cpp_builder.
Example:
    input_code: /tmp/tmpof1n5g7t/5c/c5crkkcdvhdxpktrmjxbqkqyq5hmxpqsfza4pxcf3mwk42lphygc.cpp
    name, dir = get_name_and_dir_from_output_file_path(input_code)
Run result:
    name = c5crkkcdvhdxpktrmjxbqkqyq5hmxpqsfza4pxcf3mwk42lphygc
    dir = /tmp/tmpof1n5g7t/5c/

put 'name' and 'dir' to CppBuilder's 'name' and 'output_dir'.
CppBuilder --> get_target_file_path will format output path according OS:
Linux: /tmp/tmppu87g3mm/zh/czhwiz4z7ca7ep3qkxenxerfjxy42kehw6h5cjk6ven4qu4hql4i.so
Windows: [Windows temp path]/tmppu87g3mm/zh/czhwiz4z7ca7ep3qkxenxerfjxy42kehw6h5cjk6ven4qu4hql4i.dll
)ri   rl   rÞ  ÚsplitextrK  )r”   Úname_and_extr­  Ú_extÚdirs   &    r    Ú&get_name_and_dir_from_output_file_pathrø  ð  sH   € ô" —7‘7×#Ñ# IÓ.€LÜ—‘×!Ñ! ,Ó/�J€DÜ
�'‰'�/‰/˜)Ó
$€Càˆ9Ðr"   c                   óL  a € ] tR tRt o Rt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R	 lR
 l4       t	R!V 3R lR llt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR # )"Ú
CppBuilderi	  ag  
CppBuilder is a cpp jit builder, and it supports both Windows, Linux and MacOS.
Args:
    name:
        1. Build target name, the final target file will append extension type automatically.
        2. Due to the CppBuilder is supports multiple OS, it will maintains ext for OS difference.
    sources:
        Source code file list to be built.
    BuildOption:
        Build options to the builder.
    output_dir:
        1. The output_dir the target file will output to.
        2. The default value is empty string, and then the use current dir as output dir.
        3. Final target file: output_dir/name.ext
c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r-   ©rÞ   r;   )r   r•   s   "€r    r!   ÚCppBuilder.__annotate__	  s   ø€ ÷ 'ñ '¡u©S±#¨X¥ñ 'r"   c                 óH   € \         '       d   R MRp \         '       d   RMRpW3# )z.pydú.soz/Fer=  r6  ©Ú	extensionÚoutput_flagss     r    Ú__get_python_module_flagsÚ$CppBuilder.__get_python_module_flags	  s!   € ç)›k‘F¨uˆ	ß +£‘u°ˆØÐ&Ð&r"   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r-   rü  )r   r•   s   "€r    r!   rý   	  s   ø€ ÷ 'ñ '¡¡c©3 h¥ñ 'r"   c                 óH   € \         '       d   R MRp \         '       d   RMRpW3# )z.objr)  z/c /Foz-c -or6  r   s     r    Ú__get_object_flagsÚCppBuilder.__get_object_flags	  s!   € ç)›k‘F¨tˆ	ß#.£;‘x°GˆØÐ&Ð&r"   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r-   rü  )r   r•   s   "€r    r!   rý  &	  s   ø€ ÷ 'ñ '©E±#±s°(­Oñ 'r"   c                 óh   € \         '       g   \        4       '       g   R MRp \         '       d   RMRpW3# )ú.pchú.gchz/Fpr=  )r>   rq  r   s     r    Ú__get_precompiled_header_flagsÚ)CppBuilder.__get_precompiled_header_flags%	  s'   € ç)›k´·²‘F¸vˆ	ß +£‘u°ˆØÐ&Ð&r"   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r-   rü  )r   r•   s   "€r    r!   rý  ,	  s   ø€ ÷ 'ñ '©U±3¹°8­_ñ 'r"   c                 ó,   € R p \         '       d   RMRpW3# )z.iz/EP /Pz-E -P -or6  r   s     r    Ú__get_preprocessor_output_flagsÚ*CppBuilder.__get_preprocessor_output_flags+	  s   € àˆ	ß#.£;‘x°JˆØÐ&Ð&r"   c          
      óV   <€ V ^8„  d   QhRS[ RS[ S[S[ ,          ,          RS[RS[ RR/# )r   r­  ÚsourcesÚBuildOptionr7  r   N)r;   r<   rÅ  )r   r•   s   "€r    r!   rý  1	  sS   ø€ ÷ _Gñ _Gáð_Gñ ‘t™C•y•ð_Gñ &ð	_Gñ
 ð_Gð 
ñ_Gr"   c                óÀ  € R V n         R V n        R V n        R V n        R V n        R V n        R V n        R V n        . V n        R V n	        R V n
        RV n        RV n        Wn        \        P                  P                   ;'       g    RV n        W0n        VP'                  4       V n         VP)                  4       V n        VP+                  4       V n        W@n	        VP-                  4       V n        VP1                  4       V n        VP5                  4       V n        \9        V P.                  V P2                  V P6                  34      ^8”  d   \;        R4      hV P.                  ;'       g!    V P2                  ;'       g    V P6                  '       * V n        \>        '       d   V P2                  '       d   \;        R4      hV P.                  '       d   V PA                  4       w  rVM\V P2                  '       d   V PC                  4       w  rVM7V P6                  '       d   V PE                  4       w  rVMV PG                  4       w  rV\H        PJ                  PM                  V P                  V P                   V 24      V n
        V P                  '       d*   \H        PJ                  PO                  V P                  4      MV P                  p\>        '       d&   V P6                  '       d   W`n(        MV V 2V n(        MV RV 2V n(        \S        V\T        4      '       d   V.p\        PV                  ! 4       '       dQ   V P                  '       d?   \Y        V4      V n        V Uu. uF"  p\H        PJ                  PO                  V4      NK$  	  ppV P2                  '       d„   \[        V4      ^8w  d   \;        R\[        V4       24      hRV^ ,           2V n.        V P                  '       d9   \_        VP'                  4       4      '       d   V ;P                  R,          un        MRPM                  V4      V n.        VPa                  4        FK  p	\>        '       d    V ;P                  R	V	 R2,          un        K.  V ;P                  R
V	 R2,          un        KM  	  VPc                  4        FK  p
\>        '       d    V ;P                  RV
 R2,          un        K.  V ;P                  RV
 R2,          un        KM  	  VPd                  ;p'       dy   \>        '       d   \f        Pi                  RV4       MURV R2V n        V P                  '       d9   \_        VP'                  4       4      '       d   V ;P                  R,          un        VPk                  4        F_  p\>        '       d    V ;P                  RV R2,          un        K.  V ;P                  R\l        Pn                  ! V4       R2,          un        Ka  	  VPq                  4        FK  p\>        '       d    V ;P                  R	V R2,          un        K.  V ;P                  R
V R2,          un        KM  	  VPs                  4        F_  p\>        '       d    V ;P
                  RV R2,          un        K.  V ;P
                  R\l        Pn                  ! V4       R2,          un        Ka  	  VPu                  4        FK  p\>        '       d    V ;P                  RV R2,          un        K.  V ;P                  RV R2,          un        KM  	  V Pw                  VPy                  4       4       F  pV ;P                  V R2,          un        K!  	  R# u upi )rO   FÚ
aoti_modelzCat most one of compile_only, precompiling, preprocessing may be setz/Cannot currently precompile headers on Windows!r*  z3expected exactly one source when precompiling, got z-x c++-header z- -relocatable-pch -Xclang -fno-pch-timestamp rÂ  r™  z/D z-D zIPrecompiled header support for MSVC is currently unavailable; ignoring %sz	-include z -Xclang -fno-validate-pch z/I "z" z-Iz
/LIBPATH:"z-Lr;  z.lib" rš  N)=rÔ  Ú_cflags_argsÚ_definitions_argsÚ_include_dirs_argsÚ_ldflags_argsÚ_libraries_dirs_argsÚ_libraries_argsÚ_passthrough_parameters_argsÚ_orig_source_pathsÚ_output_dirÚ_target_filerÞ  rÝ  Ú_namer   r  Úmodel_name_for_generated_filesÚ_target_nameÚ_build_optionrò  r  r  r  rß  r"  rà  r&  rá  Úsumrþ  Ú_do_linkr>   Ú_CppBuilder__get_object_flagsÚ)_CppBuilder__get_precompiled_header_flagsÚ*_CppBuilder__get_preprocessor_output_flagsÚ$_CppBuilder__get_python_module_flagsri   rl   rm   rÞ  Ú_outputr  r;   r  r<   r  Ú_sources_argsrP  r   r÷  rÜ  r€   r§  rû  r?   Úquoter  r  r  Ú_stage_passthrough_pathsr  )r�   r­  r  r  r7  Úfile_extr  Úrelative_target_filerÍ   ÚcflagÚ
definitionrÜ  Úinc_dirÚldflagrµ  r@  Úpassthrough_args   &&&&&            r    rž   ÚCppBuilder.__init__1	  s  € ð ˆŒØˆÔØ!#ˆÔØ"$ˆÔØˆÔØ$&ˆÔ!Ø!ˆÔØ,.ˆÔ)ð #%ˆÔØˆÔØˆÔà(-ˆÔØ$ˆŒàŒ
ä×Ñ×>Ñ>×NÐNÀ,ð 	Ôð
 )ÔØ$×1Ñ1Ó3ˆŒØ"-×"CÑ"CÓ"EˆÔØ$×1Ñ1Ó3ˆŒà%Ôà(×9Ñ9Ó;ˆÔØ(×9Ñ9Ó;ˆÔØ)×;Ñ;Ó=ˆÔä�×"Ñ" D×$6Ñ$6¸×8KÑ8KÐLÓMÐPQÔQÜ ØUóð ð ×Ñ×KÐK $×"4Ñ"4×KÐK¸×8KÑ8Kô
ˆŒ÷ ‹;˜4×-×-Ð-Ü Ð!RÓSÐSà××ÐØ%)×%<Ñ%<Ó%>Ñ"ˆH�lØ××ÐØ%)×%HÑ%HÓ%JÑ"ˆH�lØ× × Ð Ø%)×%IÑ%IÓ%KÑ"ˆH�là%)×%CÑ%CÓ%EÑ"ˆHÜŸG™GŸL™L¨×)9Ñ)9¸d¿j¹j¸\È(ÈÐ;TÓUˆÔð ×&×&Ð&ô �G‰G×Ñ˜T×.Ñ.Ô/à×"Ñ"ð 	÷
 ‹;Ø×"×"Ð"à+•à". Ð0DÐ/EÐF�•à*˜^¨1Ð-AÐ,BÐCˆDŒLä�gœs×#Ò#Ø�iˆGô ×Ò×Ò $×"9×"9Ð"9ô '+¨7£mˆDÔ#Ù4;Ó<±G¨q”r—w‘w×'Ñ'¨Ö*±GˆGÐ<à××ÐÜ�7‹|˜qÔ Ü$ØIÌ#ÈgË,ÈÐXóð ð $2°'¸!µ*°Ð!>ˆDÔØ×&×&Ð&¬9°[×5MÑ5MÓ5O×+PÒ+Pð ×!Ò!Ð%TÕTÕ!øà!$§¡¨'Ó!2ˆDÔà ×+Ñ+Ö-ˆEß‹{Ø×!Ò! q¨¨¨q \Õ1×!à×!Ò! q¨¨¨q \Õ1×!ñ	 .ð &×5Ñ5Ö7ˆJß‹{Ø×&Ò&¨C°
¨|¸1Ð*=Õ=×&à×&Ò&¨C°
¨|¸1Ð*=Õ=×&ñ	 8ð "-×!?Ñ!?Ð?ÐÖ?ß‹{Ü—‘Ø_Ø&õð
 -6Ð6HÐ5IÈÐ*K�Ô'Ø×*×*Ð*¬y¸×9QÑ9QÓ9S×/TÒ/Tð ×%Ò%Ð)FÕFÕ%à"×3Ñ3Ö5ˆGß‹{Ø×'Ò'¨T°'°¸"Ð+=Õ=×'à×'Ò'¨R´·²¸GÓ0DÐ/EÀQÐ+GÕG×'ñ	 6ð "×-Ñ-Ö/ˆFß‹{Ø×"Ò"¨¨&¨° mÕ3×"à×"Ò"¨¨&¨° mÕ3×"ñ	 0ð #×5Ñ5Ö7ˆGß‹{Ø×)Ò)¨z¸'¸À"Ð-EÕE×)à×)Ò)¨r´%·+²+¸gÓ2FÐ1GÀqÐ-IÕI×)ñ	 8ð ×,Ñ,Ö.ˆCß‹{Ø×$Ò$¨!¨C¨5°¨Õ7×$à×$Ò$¨"¨S¨E°¨Õ3×$ñ	 /ð  $×<Ñ<Ø×,Ñ,Ó.ö 
ˆOð ×-Ò-°OÐ3DÀAÐ1FÕF×-ó 
ùòK =s   Í(]c                ó    <€ V ^8„  d   QhRS[ /# r-   rJ   )r   r•   s   "€r    r!   rý  Ò	  s   ø€ ÷ ,ñ ,¡#ñ ,r"   c                ó  a € R  V 3R llpV! S P                   S P                  S P                  S P                  S P                  S P
                  S P                  S P                  S P                  S P                  R7
      pV# )c                óœ   € V ^8„  d   QhR\         R\         R\         R\         R\         R\         R\         R\         R	\         R
\         R\         /# )r   r9   r  Úinclude_dirs_argsÚdefinitions_argsÚcflags_argsÚldflags_argsÚlibraries_argsÚlibraries_dirs_argsrÍ  r·  r   rJ   )r   s   "r    r!   Ú1CppBuilder.get_command_line.<locals>.__annotate__Ó	  sv   € ÷ 	ñ 	Üð	äð	ô  #ð	ô "ð		ô
 ð	ô ð	ô  ð	ô "%ð	ô "ð	ô ð	ô ñ	r"   c
                 ó"  <€ \         '       dH   V  R V R V R V R V R V R V	 2p
SP                  '       d   V
RV R V R V 2,          p
\        V
4      p
V
# V  R V R V R V R V R V R V	 2p
SP                  '       d   V
R V R V R V 2,          p
V
# )r*  z /LD /link )r>   r'  r  )r9   r  r;  r<  r=  r>  r?  r@  rÍ  r·  rö   r�   s   &&&&&&&&&& €r    Úformat_build_commandÚ9CppBuilder.get_command_line.<locals>.format_build_commandÓ	  sð   ø€ ÷ ‹{ð  �j Ð"3Ð!4°AÐ6FÐ5GÀqÈÈÐUVØ�i˜qÐ!1Ð 2°!°F°8ð=ð ð —=—=�=Ø˜[Ð)<Ð(=¸Q¸~Ð>NÈaÐP\È~Ð^Õ^�CÜ.¨sÓ3�ð ˆJð  �j  ' ¨!Ð,<Ð+=¸Q¸{¸mÈ1Ø(Ð)¨Ð+;Ð*<¸A¸f¸XðGð ð —=—=�=Ø˜Q˜|˜n¨A¨nÐ-=¸QÐ?RÐ>SÐTÕT�CØˆJr"   )
r9   r  r;  r<  r=  r>  r?  r@  rÍ  r·  )
rÔ  r-  r  r  r  r  r  r  r  r,  )r�   rC  Úcommand_lines   f  r    Úget_command_lineÚCppBuilder.get_command_lineÒ	  sw   ø€ ÷	ð 	ñ> ,Ø—^‘^Ø×&Ñ&Ø"×5Ñ5Ø!×3Ñ3Ø×)Ñ)Ø×+Ñ+Ø×/Ñ/Ø $× 9Ñ 9Ø!×>Ñ>Ø—<‘<ô
ˆð Ðr"   c                ó    <€ V ^8„  d   QhRS[ /# r-   rJ   )r   r•   s   "€r    r!   rý   
  s   ø€ ÷ ;ñ ;¡cñ ;r"   c                ó,   € \        V P                  4      # r$   )r  r!  r±   s   &r    Úget_target_file_pathÚCppBuilder.get_target_file_path 
  s   € Ü'¨×(9Ñ(9Ó:Ð:r"   c                óF   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          /# )r   r   r   r‰  )r   r•   s   "€r    r!   rý  
  s#   ø€ ÷ #ñ #©T±#­Yð #¹4Á½9ñ #r"   c                óê  € \         P                  ! 4       '       d   V P                  '       g   V# . p\        4       pV EFK  p\        P
                  ! V4      p. pV EF  p\        P                  P                  V4      '       dÈ   \        P                  P                  V4      '       d£   V P                  P                  V4       V P                  '       dF   VP                  R4      '       d/   VP                  \        P                  P                  V4      4       VP                  \        P                  P!                  V4      4       Kð  VP                  V4       EK  	  VP                  RP#                  R V 4       4      4       EKN  	  V'       d^   VP                  R\        P$                  ! R4      ,           4       V F+  pVP                  R\        P$                  ! V4       24       K-  	  V# )a�  For fbcode remote builds, treat any absolute file path that appears
as a passthrough arg (e.g. precompiled .so kernels passed in via
``extra_flags``) the same way as a source: stage the file into the
remote build sandbox and rewrite the command to reference it by
basename. Without this the linker is handed a path that only exists on
the submitting host and the remote build fails to find the file.rÿ  r*  c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir$   )r?   r.  )rŽ  Úts   & r    r�  Ú6CppBuilder._stage_passthrough_paths.<locals>.<genexpr>!
  s   é € Ð%I¹j¸¤e§k¢k°!§n n»jùr’  z-Wl,-rpath,z$ORIGIN)r   r  rÞ  r   r?   r@   ri   rl   Úisabsr-  r  rÇ   r'  ÚendswithÚaddrK  rÞ  rm   r.  )	r�   r   Ú	rewrittenÚ
rpath_dirsÚargÚtokensÚ
new_tokensÚtokÚ	rpath_dirs	   &&       r    r/  Ú#CppBuilder._stage_passthrough_paths
  s[  € ô × Ò ×"Ò" t×'>×'>Ð'>ØˆKØˆ	Ü&0£lˆ
ÜˆCÜ—[’[ Ó%ˆFØˆJÜ�Ü—7‘7—=‘= ×%Ò%¬"¯'©'¯.©.¸×*=Ò*=Ø×+Ñ+×2Ñ2°3Ô7ð —}—}�}¨¯©°e×)<Ò)<Ø"Ÿ™¤r§w¡w§¡°sÓ';Ô<Ø×%Ñ%¤b§g¡g×&6Ñ&6°sÓ&;Ö<à×%Ñ% c×*ñ ð  ×Ñ˜SŸX™XÑ%I¹jÓ%IÓI×Jñ' ÷( Ø×Ñ˜]¬U¯[ª[¸Ó-CÕCÔDÛ'�	Ø× Ñ  ;¬u¯{ª{¸9Ó/EÐ.FÐ!GÖHñ (àÐr"   c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rý  (
  s   ø€ ÷ ATñ ATà	ñATr"   c                ó†  € \        R 4      ;_uu_ 4        \        P                  ! V P                  4       4      p V P                  p\
        P                  P                  \        R4      p\        P                  ! 4       ;_uu_ 4       p\        P                  ! \        \
        P                  P                  VR4      4       V P                   FU  p\        P                  ! V\
        P                  P                  V\
        P                  P                  V4      4      4       KW  	  \
        P                  P                  VR4      p\        P                   ! W64       V P"                  P$                  pV'       Ed   \
        P                  P'                  V4      '       dõ   \(        '       g   \+        4       '       g   RMRpWx,           p	\
        P                  P                  V4      p
\        P                  ! V\
        P                  P                  WJ4      4       \
        P                  P'                  V	4      '       d<   \        P                  ! V	\
        P                  P                  WJV,           4      4       V Uu. uF  pW·8X  d   T
MTNK  	  ppV P,                  '       g.   V'       d-   \
        P                  P'                  V4      '       d   RR.VR&   \/        VV\
        P                  P                  V4      \0        R7      p\
        P                  P3                  V4      '       d   \
        P4                  ! V4       \        P                  ! WÂ4       VP7                  R	4      '       d   \
        P8                  ! VR
4       M.VP7                  R4      '       d   \
        P8                  ! VR4       RRR4       RRR4       R# u upi   + '       g   i     L; i  \:        P<                   d6   p\>        P@                  ! YPB                  PE                  R4      4      ThRp?ii ; i  + '       g   i     R# ; i)r½  rÒ  z	script.ldr  r  z	-isysrootrµ   :rï  rï  N)Úexception_classr)  i¤  rÿ  ií  Nrå   )#r
   r?   r@   rF  r!  ri   rl   rm   Ú_TORCH_PATHÚtempfileÚTemporaryDirectoryr„   r„  rÝ  r  rÞ  Úcopytreer%  rÜ  r-  r>   rq  rà  r   r·   r   r¨  rR  ÚchmodrP   rô   r   r¶  r·  rT   )r�   rB   Úoutput_pathÚtorch_includes_pathÚtmp_dirÚsrcÚdest_include_pathÚ
pch_headerÚpch_extÚpch_compiledÚpch_basenamerV  Útmp_output_pathr�   s   &             r    Úbuild_fbcode_reÚCppBuilder.build_fbcode_re(
  s×  € ô ˜.×)Õ)Ü—k’k $×"7Ñ"7Ó"9Ó:ˆGð<TØ"×/Ñ/�ô ')§g¡g§l¡l´;À	Ó&JÐ#Ü×0Ò0×2Ô2°gä—K’K¤´·±·±¸WÀkÓ0RÔSØ#×6Ô6˜ÜŸš C¬¯©¯©°g¼r¿w¹w×?OÑ?OÐPSÓ?TÓ)UÖVñ  7ä(*¯©¯©°W¸iÓ(HÐ%Ü—O’OÐ$7ÔKð
 "&×!3Ñ!3×!FÑ!F�Jß!�z¤b§g¡g§n¡n°Z×&@Ò&@ß,7«K¼v¿xºx¡&ÈV˜Ø'1Õ';˜Ü')§w¡w×'7Ñ'7¸
Ó'C˜ÜŸš J´·±·±¸WÓ0SÔTÜŸ7™7Ÿ>™>¨,×7Ò7Ü"ŸKšKØ ,Ü "§¡§¡¨WÀWÕ6LÓ Môñ (/ó#á'. ð -0Ô,=™LÀ3ÒFÙ'.ð  ð #ð ×)×)Ð)ß"¤r§w¡w§~¡~°j×'AÒ'Aà(3°SÐ'9˜ ™ô
 '9ØØÜŸ™×(Ñ(¨Ó5Ü(4ô	'�Oô —w‘w—~‘~ k×2Ò2ÜŸ	š	 +Ô.Ü—K’K Ô=Ø"×+Ñ+¨D×1Ò1ÜŸš ¨eÕ4Ø$×-Ñ-¨e×4Ò4ÜŸš ¨eÔ4÷i 3÷ *Ñ)ùò<#÷- 3×2ûôj ×0Ñ0ô TÜ×)Ò)¨'·8±8·?±?À7Ó3KÓLÐRSÐSûðTú÷{ *×)Ð)ús†   ”%P/ºAO"ÂDO	Æ O	Æ,CO	É?O
ÊO	Ê&O	Ê.$O	ËCO	Î!O	Î8O"Ï
O	ÏOÏO"ÏP/ÏO"Ï"P,Ï70P'Ð'P,Ð,P/Ð/Q 	c                ó   <€ V ^8„  d   QhRR/# r¡   r%   )r   r•   s   "€r    r!   rý  k
  s   ø€ ÷ $ñ $�tñ $r"   c                óR  € V P                   '       d   V P                  4       # \        V P                  4       \        P
                  P                  V P                  V P                   R\         24      p\        V4       V P                  4       p\        W!R7       \        V4       R# )z“
It is must need a temporary directory to store object files in Windows.
After build completed, delete the temporary directory to save disk space.
r.  ©r³  N)rÞ  rn  r£  r   ri   rl   rm   r"  Ú_BUILD_TEMP_DIRrF  r¾  r¯  )r�   Ú_build_tmp_dirÚ	build_cmds   &  r    ÚbuildÚCppBuilder.buildk
  s‚   € ð
 ×"×"Ð"à×'Ñ'Ó)Ð)Ü  ×!1Ñ!1Ô2ÜŸ™Ÿ™Ø×Ñ §¡ ¨A¬oÐ->Ð?ó
ˆô 	! Ô0à×)Ñ)Ó+ˆ	Ü˜	Õ6Ü�NÖ#r"   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   Ú
cmake_pathrÈ  r   NrJ   )r   r•   s   "€r    r!   rý  }
  s.   ø€ ÷ xñ xáðxñ ðxð 
ñ	xr"   c                ó  € RP                  V P                  P                  4       4      p\        P                  P
                  '       g   RMRp\        P                  ! RV P                   RV P                   RV R24      p\        P                  P                  '       g!   \        P                  P                  '       d�   V\        P                  ! R4      ,          pV\        P                  ! RV P                   R	V R
V P                   R	V P                   RV P                   R	V P                   R24      ,          pM8V\        P                  ! RV P                   RV P                   R24      ,          pVR8X  d£   \        P                  P                   f‡   ^ RIHp VP'                  4       pRP                  R VP)                  V4       4       4      pV\        P                  ! RV P                   RV P                   RV P                   RV R2	4      ,          pM$VR8X  d   V\        P                  ! R4      ,          p\+        VR4      ;_uu_ 4       p	V	P-                  V4       RRR4       R#   + '       g   i     R# ; i)z
Save global cmake settings here, e.g. compiler options.
If targeting CUDA, also emit a custom function to embed CUDA kernels.
r*  ÚSTATICÚSHAREDzR
            cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
            project(zs LANGUAGES CXX)
            set(CMAKE_CXX_STANDARD 20)

            # Set a library target
            add_library(z)

            z‘
                # May need to point CMAKE_PREFIX_PATH to the right torch location
                find_package(Torch REQUIRED)

                zT
                # Add macro definitions
                target_compile_definitions(ú	 PRIVATE zN)

                # Add compile flags
                target_compile_options(zS)

                # Backend-specific flags
                target_compile_options(z -c)

                zµ
                find_package(TorchStandalone REQUIRED)
                # Set up include directories to find headers at the correct paths
                target_include_directories(zU PRIVATE ${TorchStandalone_INCLUDE_DIRS})
                target_include_directories(zF PRIVATE ${TorchStandalone_INCLUDE_DIRS}/standalone)

                rË  N)Úcompile_utilsz!
                                c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)z	-gencode Nr%   )rŽ  Úoptions   & r    r�  Ú7CppBuilder.save_compile_cmd_to_cmake.<locals>.<genexpr>Ã
  s   é € ð KáW�Fð ˜F˜8Õ$ÛWùs   ‚z±
                enable_language(CUDA)
                set(CMAKE_CUDA_STANDARD 17)
                find_package(CUDAToolkit REQUIRED)
                target_include_directories(zQ PRIVATE ${CUDAToolkit_INCLUDE_DIRS})
                target_compile_definitions(z9 PRIVATE USE_CUDA)
                target_link_libraries(aL   PRIVATE cuda CUDA::cudart_static)

                find_program(OBJCOPY_EXECUTABLE objcopy)
                if(NOT OBJCOPY_EXECUTABLE)
                    message(FATAL_ERROR "objcopy not found. Cannot embed fatbin as object file")
                endif()

                set(KERNEL_TARGETS "")
                set(KERNEL_OBJECT_FILES "")
                # Function to embed a single kernel
                function(embed_gpu_kernel KERNEL_NAME PTX_FILE)
                    set(FATBIN_BASENAME ${KERNEL_NAME}.fatbin)
                    set(FATBIN_FILE ${CMAKE_CURRENT_BINARY_DIR}/${FATBIN_BASENAME})
                    set(OBJECT_BASENAME ${KERNEL_NAME}.fatbin.o)
                    set(OBJECT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OBJECT_BASENAME})

                    # --- Define UNIQUE C symbol names ---
                    set(SYMBOL_START __${KERNEL_NAME}_start)
                    set(SYMBOL_END __${KERNEL_NAME}_end)
                    set(SYMBOL_SIZE __${KERNEL_NAME}_size)
                    string(REGEX REPLACE "[^a-zA-Z0-9]" "_" MANGLED_BASENAME ${FATBIN_FILE})
                    set(OBJCOPY_START_SYM _binary_${MANGLED_BASENAME}_start)
                    set(OBJCOPY_END_SYM _binary_${MANGLED_BASENAME}_end)
                    set(OBJCOPY_SIZE_SYM _binary_${MANGLED_BASENAME}_size)

                    # --- PTX to FATBIN Command & Target ---
                    add_custom_command(
                        OUTPUT ${FATBIN_FILE}
                        COMMAND ${CUDAToolkit_NVCC_EXECUTABLE} --fatbin ${PTX_FILE} -o ${FATBIN_FILE} ${NVCC_GENCODE_FLAGS}
                                a'  
                        DEPENDS ${PTX_FILE}
                    )

                    # --- FATBIN to Object File (.o) Command ---
                    add_custom_command(
                        OUTPUT ${OBJECT_FILE}
                        COMMAND ${CMAKE_LINKER} -r -b binary -z noexecstack -o ${OBJECT_FILE} ${FATBIN_FILE}
                        COMMAND ${OBJCOPY_EXECUTABLE} --rename-section .data=.rodata,alloc,load,readonly,data,contents
                                ${OBJECT_FILE}
                        COMMAND ${OBJCOPY_EXECUTABLE}
                                --redefine-sym ${OBJCOPY_START_SYM}=${SYMBOL_START}
                                --redefine-sym ${OBJCOPY_END_SYM}=${SYMBOL_END}
                                --redefine-sym ${OBJCOPY_SIZE_SYM}=${SYMBOL_SIZE}
                                ${OBJECT_FILE}
                        DEPENDS ${FATBIN_FILE}
                    )
                    add_custom_target(build_kernel_object_${KERNEL_NAME} DEPENDS ${OBJECT_FILE})

                    # --- Add to a list for linking later ---
                    set(KERNEL_TARGETS ${KERNEL_TARGETS} build_kernel_object_${KERNEL_NAME} PARENT_SCOPE)
                    set(KERNEL_OBJECT_FILES ${KERNEL_OBJECT_FILES} ${OBJECT_FILE} PARENT_SCOPE)
                endfunction()

                rÐ  a=	  
                find_program(OBJCOPY_EXECUTABLE objcopy)
                if(NOT OBJCOPY_EXECUTABLE)
                    message(FATAL_ERROR "objcopy not found. Cannot embed spv as object file")
                endif()

                set(KERNEL_TARGETS "")
                set(KERNEL_OBJECT_FILES "")
                # Function to embed a single kernel
                function(embed_gpu_kernel KERNEL_NAME SPV_FILE)
                    set(OBJECT_BASENAME ${KERNEL_NAME}.spv.o)
                    set(OBJECT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OBJECT_BASENAME})

                    # --- Define UNIQUE C symbol names ---
                    set(SYMBOL_START __${KERNEL_NAME}_start)
                    set(SYMBOL_END __${KERNEL_NAME}_end)
                    set(SYMBOL_SIZE __${KERNEL_NAME}_size)
                    string(REGEX REPLACE "[^a-zA-Z0-9]" "_" MANGLED_BASENAME ${SPV_FILE})
                    set(OBJCOPY_START_SYM _binary_${MANGLED_BASENAME}_start)
                    set(OBJCOPY_END_SYM _binary_${MANGLED_BASENAME}_end)
                    set(OBJCOPY_SIZE_SYM _binary_${MANGLED_BASENAME}_size)

                    # --- SPV_FILE to Object File (.o) Command ---
                    add_custom_command(
                        OUTPUT ${OBJECT_FILE}
                        COMMAND ${CMAKE_LINKER} -r -b binary -z noexecstack -o ${OBJECT_FILE} ${SPV_FILE}
                        COMMAND ${OBJCOPY_EXECUTABLE} --rename-section .data=.rodata,alloc,load,readonly,data,contents
                                ${OBJECT_FILE}
                        COMMAND ${OBJCOPY_EXECUTABLE}
                                --redefine-sym ${OBJCOPY_START_SYM}=${SYMBOL_START}
                                --redefine-sym ${OBJCOPY_END_SYM}=${SYMBOL_END}
                                --redefine-sym ${OBJCOPY_SIZE_SYM}=${SYMBOL_SIZE}
                                ${OBJECT_FILE}
                        DEPENDS ${SPV_FILE}
                    )
                    add_custom_target(build_kernel_object_${KERNEL_NAME} DEPENDS ${OBJECT_FILE})

                    # --- Add to a list for linking later ---
                    set(KERNEL_TARGETS ${KERNEL_TARGETS} build_kernel_object_${KERNEL_NAME} PARENT_SCOPE)
                    set(KERNEL_OBJECT_FILES ${KERNEL_OBJECT_FILES} ${OBJECT_FILE} PARENT_SCOPE)
                endfunction()

                r9  )rm   r%  r÷  r   r  Údynamic_linkageÚtextwrapÚdedentr$  rü  Útest_configsÚuse_libtorchr  r  rr  rˆ  r‰  Útorch._inductor.codegen.cudar~  Ú_aoti_cuda_target_archÚ _cuda_multi_arch_gencode_optionsr>  r?  )
r�   ry  rÈ  rÇ  Útarget_library_typeÚcontentsr~  Ú	cuda_archÚcuda_gencode_flagsrC  s
   &&&       r    Úsave_compile_cmd_to_cmakeÚ$CppBuilder.save_compile_cmd_to_cmake}
  s�  € ð —h‘h˜t×1Ñ1×AÑAÓCÓDˆä"×/Ñ/×?×?Ð?‰HÀXð 	ô —?’?ðà×&Ñ&Ð'ð (ð ×*Ñ*Ð+¨1Ð-@Ð,Að Bðó

ˆô ×Ñ×,×,Ð,´×0CÑ0C×0P×0PÐ0Pð œŸšðóõ ˆHð œŸšð,à,0×,=Ñ,=Ð+>¸iÈÀ}ð U(ð )-×(9Ñ(9Ð':¸)ÀD×DUÑDUÐCVð W(ð )-×(9Ñ(9Ð':¸)ÀD×DeÑDeÐCfð gð
óõ ‰Hð œŸšð,ð -1×,=Ñ,=Ð+>ð ?,Ø,0×,=Ñ,=Ð+>ð ?ð	óõ ˆHð ˜&Ô ¤U§]¡]×%6Ñ%6Ò%>ÝBà%×<Ñ<Ó>ˆIØ!E×!JÑ!Jñ Kà+×LÑLÈYÔWóKó "Ðð œŸšð,ð -1×,=Ñ,=Ð+>ð ?,Ø,0×,=Ñ,=Ð+>ð ?'Ø'+×'8Ñ'8Ð&9ð :!ð: "4Ð 4ð 5ðG;ó=õ =‰Hð| ˜EÔ!ØœŸšð*ó,õ ,ˆHô\ �*˜c×"Ô" aØ�G‰G�HÔ÷ #×"×"Ò"ús   ÉI7É7J	c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   ry  r©  r   NrJ   )r   r•   s   "€r    r!   rý  7  s'   ø€ ÷ Qñ Q©Cð Q¹3ð QÀ4ñ Qr"   c           	     óä   € R \        V4      P                  ,           p\        VR4      ;_uu_ 4       pVP                  RV P                   RV R24       RRR4       R#   + '       g   i     R# ; i)ú${CMAKE_CURRENT_SOURCE_DIR}/Úaztarget_sources(r}  z)
N)r   r­  r>  r?  r$  )r�   ry  r©  rC  s   &&& r    Úsave_src_to_cmakeÚCppBuilder.save_src_to_cmake7  sV   € à1´D¸³N×4GÑ4GÕGˆÜ�*˜c×"Ô" aØ�G‰G�o d×&7Ñ&7Ð%8¸	À(ÀÈ3ÐOÔP÷ #×"×"Ò"ús   ±#AÁA/	c                ó:   <€ V ^8„  d   QhRS[ RS[S[ ,          RR/# )r   ry  Ú	asm_filesr   Nr:   )r   r•   s   "€r    r!   rý  =  s'   ø€ ÷ ñ ±3ð Á4ÉÅ9ð ÐQUñ r"   c           
     óè  € \        VR 4      ;_uu_ 4       pV Ft  p\        V4      P                  P                  R4      ^ ,          pR\        V4      P                   2p\        P
                  ! RV RV R24      pVP                  V4       Kv  	  V'       d?   VP                  RV P                   R24       VP                  RV P                   R	24       R
R
R
4       R
#   + '       g   i     R
# ; i)r“  rµ   r’  z&
                    embed_gpu_kernel(r*  z)
                    zadd_dependencies(z ${KERNEL_TARGETS})
ztarget_link_libraries(z! PRIVATE ${KERNEL_OBJECT_FILES})
N)r>  r   r­  r@   rƒ  r„  r?  r$  )r�   ry  r—  rC  Úasm_filer'  r‹  s   &&&    r    Úsave_kernel_asm_to_cmakeÚ#CppBuilder.save_kernel_asm_to_cmake=  sÙ   € ä�*˜c×"Ô" aÛ%�Ü" 8›n×1Ñ1×7Ñ7¸Ó<¸QÕ?�Ø;¼DÀ»N×<OÑ<OÐ;PÐQ�Ü#Ÿ?š?ð&Ø&1 ]°!°H°:ð >ðó�ð
 —‘˜Ö!ñ &÷ Ø—‘Ð+¨D×,=Ñ,=Ð+>Ð>UÐVÔWØ—‘Ø,¨T×->Ñ->Ð,?Ð?cÐdô÷ #×"×"Ò"ús   •BC Â>C Ã C1	c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   ry  r   NrJ   )r   r•   s   "€r    r!   rý  O  s   ø€ ÷ ñ ±ð ¸ñ r"   c                ó  € R P                  V P                  P                  4       4      pR P                  V P                  P                  4       4      p\        P
                  ! RV P                   RV RV P                   RV R2	4      p\        P                  P                  V4      '       g   \        RV R24      h\        VR4      ;_uu_ 4       pVP                  V4       RRR4       R#   + '       g   i     R# ; i)	r*  z@
            # Add linker flags
            target_link_options(r}  zA)

            # Add libraries
            target_link_libraries(z)
         z#save_link_cmd_to_cmakefile expects z to already existr“  N)rm   r%  r  r  rƒ  r„  r$  ri   rl   r   rþ  r>  r?  )r�   ry  Úlflagsr  r‹  rC  s   &&    r    Úsave_link_cmd_to_cmakeÚ!CppBuilder.save_link_cmd_to_cmakeO  sá   € Ø—‘˜$×,Ñ,×8Ñ8Ó:Ó;ˆØ�x‰x˜×*Ñ*×8Ñ8Ó:Ó;ˆÜ—?’?ð!à!%×!2Ñ!2Ð 3°9¸V¸Hð E#ð $(×#4Ñ#4Ð"5°Y¸t¸fð E
ðó
ˆô �w‰w�~‰~˜j×)Ò)Ü Ø5°j°\ÐARÐSóð ô �*˜c×"Ô" aØ�G‰G�HÔ÷ #×"×"Ò"ús   ÃC.Ã.C?	)rÝ  r%  r  rß  rÔ  r  r'  r  r  r  r  r"  r  r,  r   r  rà  rá  r-  r!  r$  rÞ  N)rO   )rÓ   rÔ   rÕ   rÖ   r0  Ústaticmethodr+  r(  r)  r*  rž   rF  rJ  r/  rn  rv  rŽ  r”  rš  rŸ  r×   rØ   rÙ   s   @r    rú  rú  	  sÏ   ø‡ € ñð  ÷'ó ð'ð
 ÷'ó ð'ð
 ÷'ó ð'ð
 ÷'ó ð'÷
_Gò _G÷B,ð ,÷\;ð ;÷#ð #÷JATð AT÷F$ð $÷$xð x÷tQð Q÷ð ÷$ö r"   rú  c                ó@   € V ^8„  d   QhR\         R\         R\         RR/# )r   rg  Útargetr³  r   NrJ   )r   s   "r    r!   r!   d  s(   € ÷ <ñ <œcð <¬3ð <´Sð <¸Tñ <r"   c                 ó’   € R  R lpR R lpV! 4       pV! V\        V 4      \        V4      R7      p\        V\        V4      R7       R# )c                ó$   € V ^8„  d   QhR\         /# r-   rJ   )r   s   "r    r!   Ú*run_asm_build_object.<locals>.__annotate__e  s   € ÷ ñ œcñ r"   c                  ó`   € \         '       d   R p V # \        4       p \        V 4      '       d   Rp V # )Úml64rw   )r>   r  rn  )ÚASM_CCs    r    Úget_asm_compilerÚ.run_asm_build_object.<locals>.get_asm_compilere  s2   € ß‹;ØˆFð ˆô	 &Ó'ˆFä! &×)Ò)Ø�Øˆr"   c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r   Úasm_ccrg  r£  r   rJ   )r   s   "r    r!   r¦  o  s(   € ÷ ñ ¤ð ¬3ð ¼ð Äñ r"   c                 óJ   € \         '       d   V  R V RV 2pV# V  RV RV 2pV# )r*  z /c /Fo z -c z -o r6  )r­  rg  r£  rö   s   &&& r    rF  Ú.run_asm_build_object.<locals>.get_command_lineo  sC   € ß‹;ð �H˜A˜c˜U (¨6¨(Ð3ˆCð ˆ
ð �H˜D   T¨&¨Ð2ˆCàˆ
r"   )r­  rg  r£  rr  N)r  r¾  )rg  r£  r³  rª  rF  r­  rö   s   &&&    r    Úrun_asm_build_objectr°  d  sE   € õõñ Ó€FÙ
ØÜ$ SÓ)Ü'¨Ó/ô€Cô
 �CÔ5°cÓ:×;r"   r%   )rw   )T)r;  r1   )Tr%   F)FF)—r„  r˜   r¡  Ú	functoolsr+  ÚlocaleÚloggingri   rh   r0  r?   r„   rP   rg   r  r`  rƒ  r
  Úcollections.abcr   r   r   Úctypes.utilr   Úpathlibr   Útypingr	   rr  Útorch._dynamo.utilsr
   r_  r   r   Útorch._inductor.cpu_vec_isar   r   Ú%torch._inductor.runtime.runtime_utilsr   Útorch.torch_versionr   Útorch.utils._ordered_setr   r  Útriton.fb.buildr   r   Útorch._inductor.fb.utilsr   r   r   r   rs  rl   r@  Ú__file__Ú_HERErK  r_  rm   rÝ  rq  Ú	_IS_LINUXrI  r>   r  ÚgetpreferredencodingrU   Ú	getLoggerrÓ   r€   rC   rF   ÚcacherX   r]   Ú	lru_cachert   rn   r�   r’   r  r  r  r$  r4  rF  rL  rP  rT  r[  rÿ   rn  rq  rt  rk  ry  r|  r…  r”  r™  r£  r¯  rº  r¾  r  rÅ  r7  r<  rM  rS  rZ  rb  rv  r|  rƒ  r   rª  r±  r³  rÃ  rÆ  rÎ  rá  rñ  r  r  r  r   r&  r0  r:  rT  rW  r\  ra  ry  r{  r‹  r’  rž  r¦  r¬  r¹  rÃ  rÆ  rß  rá  rø  rú  r°  r%   r"   r    Ú<module>rÆ     s  ðó Û Û Û Û Û Û Û 	Û Û 	Û Û Û Û 
Û Û Û Û Ý $ß !Ý $Ý Ý ã Ý ,ß 'ß ?Ý ;Ý ,Ý /ð 
×Ò×Òß?÷ô õõõõð
 €Ø
�‰�‰˜Ó!€Ø�g‰g�o‰o˜bŸg™gŸo™o¨eÓ4Ó5€Ø—‘—‘˜kÐ+@ÓA€ð �L‰L×#Ñ# GÓ,€	Ø�L‰L×#Ñ# HÓ-€	Ø�l‰l˜gÑ%€à$€	÷ 3>€V× Ò Ó" IÑ.À2ð ð ×Ò˜Ó!€õõ7ð ‡�ôó ðõDð
 ×Ò�QÓô!ó ð!õBð4 ‡�ôó ð÷Jñ JðZ ‡�ôl
ó ðl
ð^ ‡�ôó ðõBõ6õ"÷6/ðd ‡�ô@ó ð@ð
 ‡�ôTó ðTð* ‡�ôXó ðXð  ‡�ôLó ðLð. ‡�ôó ðð( ‡�ô$ó ð$ðN ‡�ô'ó ð'ð ‡�ô)ó ð)ð ‡�ô2ó ð2ð ‡�ô/ó ð/ð ‡�ô+ó ð+ð ‡�ôó ðõ2?õõOõ	õ6õ.(õ
÷u ñ u ÷p÷"õ!õHõõ@ð$ ‡�ôó ðð& ‡�ô
ó ð
õ÷<=õ@÷$3ôl5!Ð!ô 5!õpõ2õõ((;õVõ(/3õd
õ0ð2 ‡�ôó ðð ‡�ôó ðð( ‡�ô
ó ð
ð ‡�ô?ó ð?õ<jUõZ
õõ õZôzC!�jô C!õL7ð ×Ò�QÓôó ðõUðJÐ õ,õ^Uõp,õ6#÷vôrO@˜Oô O@õd÷0Y	ñ Y	÷x<r"   