+
    UBi<                    b   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^RI	H
t
 ^RI	Ht ^RIHtHt ^RIHt ^RI
Ht ]P$                  '       dQ   ^R	IHt ^R
IHt ^RIHt ^RIHt ]P4                  ]P6                  ],          ]P6                  ],          ]3,          t ! R R]4      t]]R&   R# )    )annotationsN)Path)mesonlib)mlog)DependencyExceptionSystemDependency)packages)LibType)Environment)Compiler)MachineInfo)DependencyObjectKWsc                    a  ] tR t^t. R3OtRtR V 3R llt]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 ltR R lt]P"                  ! R4      t]P"                  ! R4      t]P"                  ! R4      t]P"                  ! R4      tR R ltR R ltR R lt]R R l4       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R4R* R+ lltR, R- lt R. R/ lt!R5R0 R1 llt"R2t#V ;t$# )6CudaDependencytargetsc               $    V ^8  d   QhRRRRRR/# )   environmentz'Environment'kwargsr   returnNone )formats   "A/usr/lib/python3.14/site-packages/mesonbuild/dependencies/cuda.py__annotate__CudaDependency.__annotate__   s#     .9 .9M .9;N .9SW .9    c                	&  <a  VP                  R \        P                  P                  4      pVP                  P
                  V,          pVP                  V,          pS P                  V4      pVS P                  9  d   \        RV RS P                   R24      h\        S	S `-  RWVR7       / S n        VP                  R. 4      S n        \        ;QJ d    V 3R lR 4       F  '       g   K   R
M	  RM! V 3R lR 4       4      '       g4   R.pVP                  R4      RJd   R	.pVS P                  ,           S n        S P                  4       w  S n        S n        S n        S P$                  '       g   R# \&        P(                  P+                  S P                   4      '       g   \        RS P                    R24      hS P-                  V4      S n        S P0                  R8w  g   \3        V4      ^8  db   \&        P(                  P5                  S P                   S P.                  R4      S n        S ;P8                  RS P6                   2.,          un        S P;                  4       p\&        P(                  P5                  S P                   S P.                  V4      S n        \>        P@                  ! R\>        PB                  ! S P<                  4      4       VP                  R4      f   \D        PF                  S n$        S PK                  4       S n        R# )nativez
Language 'z@' is not supported by the CUDA Toolkit. Supported languages are .cuda)languagemodulesc              3  @   <"   T F  qSP                   9   x  K  	  R # 5iN)requested_modules).0runtimeselfs   & r   	<genexpr>*CudaDependency.__init__.<locals>.<genexpr>+   s     `D_d444D_s   cudartcudart_staticTFstaticNz)CUDA Toolkit path must be absolute, got 'z'.includez-IzCUDA library directory is)r,   r-   )&getr   MachineChoiceHOSTcoredata	compilersmachines_detect_languagesupported_languagesr   super__init__lib_modulesr&   any_detect_cuda_path_and_version	cuda_pathversionis_foundospathisabs_detect_target_pathtarget_pathr"   lenjoinincdircompile_args_detect_arch_libdirlibdirr   debugboldr
   PREFER_STATIClibtype_find_requested_libraries)
r)   r   r   for_machiner4   machiner"   req_modulesarch_libdir	__class__s
   f&&      r   r9   CudaDependency.__init__   sp   jj8+A+A+F+FG((22;?	&&{3((34333%H:=~  @D  @X  @X  Y  YZ  '[  \  \xH57!'Ir!:s`D_`sss`D_``` $*Kzz(#50./%043I3I%ID"8<8Z8Z8\5t}}}}ww}}T^^,,%(RSWSaSaRbbe&fgg  33G< ==F"c)nq&8'',,t~~t7G7GSDKBt{{m"4!55..0ggll4>>43C3C[Q

.		$++0FG
 ::h'"00DL668r   c                    V ^8  d   QhRRRR/# )r   r4   zT.Dict[str, 'Compiler']r   strr   )r   s   "r   r   r   P   s     ) ))@ )S )r   c                	|    V P                    F  pW!9   g   K  Vu # 	  \        VP                  4       4      ^ ,          # )r   )r7   listkeys)clsr4   langs   && r   r6   CudaDependency._detect_languageO   s6    ++D  , INN$%a((r   c                   V ^8  d   QhRR/# )r   r   TV_ResultTupler   )r   s   "r   r   r   V   s     G G~ Gr   c                	   V P                  4       V n        \        P                  ! R \        P                  ! V P                  4      4       V P
                  pV P                  R8X  d   V P                  V P                  4       P                  4      p\        P                  ! R\        P                  ! V4      4       V'       d=   \        P                  ! W!4      w  r4pV'       d   RV RV R2pV P                  VR4      # RV 2.pMRpV P                  4        UUu. uF  w  rxWpP                  V4      V3NK  	  p	ppV'       d   V P                  WV4      # V	 UU
Uu. uF  w  rzq'       g   K  Wz3NK  	  pp
ppV'       d"   V^ ,          ^ ,          V^ ,          ^,          R3# V P!                  4       '       d   R	MR
pRV R2pV P                  VR4      # u uppi u upp
pi )zDefault path env var:r!   znvcc version:zThe current nvcc version zB does not satisfy the specified CUDA Toolkit version requirements r    N=Tz&set the CUDA_PATH environment variablezQset the CUDA_PATH environment variable/create the '/usr/local/cuda' symbolic linkzaPlease specify the desired CUDA Toolkit version (e.g. dependency('cuda', version : '>=10.1')) or z2 to point to the location of your desired version.NNF)_default_path_env_varenv_varr   rK   rL   version_reqsr"   _strip_patch_versionget_compilerr>   r   version_compare_many_report_dependency_error_cuda_paths_cuda_toolkit_version_find_matching_toolkit_is_windows)r)   re   nvcc_version
found_some	not_foundfoundmsgrA   defaultpathsr>   defaultsplatform_msgs   &            r   r<   ,CudaDependency._detect_cuda_path_and_versionV   s   113

*DIIdll,CD((==F"44T5F5F5H5P5PQLJJ		,(?@191N1N|1j.5l^  DF  GS  FT  TU  VC88>QRR  ~./LLZ^ZjZjZlmZl$2248'BZlm..uLQQDIUE(@WOTOEUQKNHQKND99CGCSCSCUCU?f 	u  wC  vD  Dv  w,,S2EFF n Vs   GG.Gc               (    V ^8  d   QhRRRRRRRR/# )	r   rt   zT.List[TV_ResultTuple]re   T.List[str]rn   T.Optional[str]r   r_   r   )r   s   "r   r   r   w   s0     # #,B #R] #m| #  BP #r   c                	   R  p\         P                  ! WA4      w  rV\        V4      pV\        VR RR7      ,           p\        P
                  ! RV 24       V'       dl   V'       dd   V P                  '       d   RV P                   R2MRpRP                  V\        P                  P                  V^ ,          ^ ,          4      V4      p	MR	p	V FS  w  rp\         P                  ! W4      w  rpV'       d   K)  V'       g   V	'       d   \        P                  ! V	4       WR3u # 	  V	'       d   \        P                  ! V	4       R
# )c                    V ^,          '       * # )r   r   ts   &r   <lambda>7CudaDependency._find_matching_toolkit.<locals>.<lambda>z   s
    ad(r   c                <    \         P                  ! V ^,          4      # )   )r   Versionr}   s   &r   r   r   }   s    9I9I!A$9Or   T)keyreversezSearch paths: zthe z environment variablez#the '/usr/local/cuda' symbolic linkzpThe default CUDA Toolkit as designated by {} ({}) doesn't match the current nvcc version {} and will be ignored.Nrb   )r   	partitionrY   sortedr   rK   rd   r   r@   rA   realpathrh   warning)r)   rt   re   rn   	part_funcdefaults_itrest_itru   default_srcnvcc_warningrA   r>   rs   ro   rp   rq   s   &&&&            r   rl   %CudaDependency._find_matching_toolkitw   sL    9K	'11)C$6'/OY]^^

^E7+,HHLD.CD  [BK O  V  V  Wb  df  dk  dk  dt  dt  u}  ~  u@  AB  uC  dD  FR  SLL(-$TG-5-J-J7-a*ZE9<LL.t,, ). LL&""r   c                    V ^8  d   QhRRRR/# )r   rQ   r   r   rW   r   )r   s   "r   r   r      s      ; 3 r   c           	     	H   VP                  4       '       g   R # VP                   RVP                   2p\        P                  P                  V P                  V4      p\        P                  P                  V P                  V4      pVP                  R8X  d   \        P                  P                  V4      '       g   \        P                  P                  V P                  RVP                   24      p\        P                  P                  V P                  V4      p\        P                  ! RV P                   RV RV R24       \        P                  ! RV R24       \        P                  P                  V4      '       g   \        P                  ! R	V R
24       V# )r    -aarch64zsbsa-zCanonical CUDA target "/z" missing; falling back to "z".zCUDA target resolved to "zCUDA target "z" does not exist.)is_linux
cpu_familysystemr@   rA   rF   targets_dirr=   existsr   rK   error)r)   rQ   canonical_targetrel_pathabs_paths   &&   r   rC   "CudaDependency._detect_target_path   s@   !! &0017>>2BC77<< 0 02BC77<<9 *277>>(3K3Kww||D$4$4gnn=M6NOHww||DNNH=HJJ)$*:*:);1=M<N O$$,:R1
 	

.xj;<ww~~h''JJxj0ABCr   c                   V ^8  d   QhRR/# )r   r   rz   r   )r   s   "r   r   r      s     1 1 1r   c                	   V P                  4       '       d   R .M. ROpV Uu. uF  q"\        P                  9   g   K  VNK  	  ppV Uu0 uF  p\        P                  V,          kK  	  pp\        V4      ^8  dE   \        P
                  ! RP                  RP                  V4      RP                  V4      4      4       V'       d
   V^ ,          # R# u upi u upi )	CUDA_PATHzyEnvironment variables {} point to conflicting toolkit locations ({}). Toolkit selection might produce unexpected results., N)r   	CUDA_HOME	CUDA_ROOT)rm   r@   environrE   r   r   r   rF   )r)   env_varsvaruser_defaultss   &   r   rc   $CudaDependency._default_path_env_var   s    $($4$4$6$6K=<c#+A8Cbjj/@CC8A4<=HSCH=}!LL  U  \  \  ]a  ]f  ]f  go  ]p  rv  r{  r{  |I  rJ  K  L&x{0D0	 B=s   CC	 Cc                   V ^8  d   QhRR/# r   r   zT.List[T.Tuple[str, bool]]r   )r   s   "r   r   r      s     Y Y7 Yr   c                	    V P                   '       d%   \        P                  V P                   ,          R 3.M. V P                  4       '       d   V P	                  4       ,           # V P                  4       ,           # )T)rd   r@   r   rm   _cuda_paths_win_cuda_paths_nixr)   s   &r   rj   CudaDependency._cuda_paths   sb    6:lll"**T\\*D12)-)9)9););t##%Y 	YAEAUAUAWY 	Yr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     ^ ^!; ^r   c                	    \         P                  P                  4       pV Uu. uF4  q"P                  R 4      '       g   K  \         P                  V,          R3NK6  	  up# u upi )
CUDA_PATH_F)r@   r   rZ   
startswith)r)   r   r   s   &  r   r   CudaDependency._cuda_paths_win   sC    ::??$4<]HS|@\(C%(H]]]s   A  A c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     Z Z!; Zr   c                	    V P                   '       d   R MRp\        P                  ! V4       Uu. uF&  q"\        P                  P                  V4      R8H  3NK(  	  up# u upi )z/usr/local/cuda-*z/usr/local/cuda*r!   )rd   globiglobr@   rA   basename)r)   patternrA   s   &  r   r   CudaDependency._cuda_paths_nix   sN    )-%;MEIZZPWEXYEXTrww''-78EXYYYs   ,Az^CUDA Version\s+(.*)$z^v(.*)$z^cuda-(.*)$z##define\s+CUDART_VERSION\s+([0-9]+)c                    V ^8  d   QhRRRR/# )r   rA   rW   r   r   )r   s   "r   r   r      s      # # r   c                	*   V P                  V4      pV'       d   V# V P                  V4      pV'       d   V# \        P                  ! R 4       V P	                  4       '       d   V P
                  MV P                  p VP                  \        P                  P                  V4      4      pV'       d   VP                  ^4      # \        P                  ! RV 24        R#   \         d)   p\        P                  ! RT RT: 24        Rp?R# Rp?ii ; i)z,Falling back to extracting version from pathz*Could not detect CUDA Toolkit version for : Nz0.0)_read_toolkit_version_txt_read_cuda_runtime_api_versionr   rK   rm   path_version_win_regexpath_version_nix_regexmatchr@   rA   r   groupr   	Exception)r)   rA   r>   path_version_regexmes   &&    r   rk   $CudaDependency._cuda_toolkit_version   s    006N55d;N

AB<@<L<L<N<NT88TXToTo	U"(()9)9$)?@Awwqz!I$PQ   	ULLEdV2aUSTT	Us$   <5C 2C C D*DDc                    V ^8  d   QhRRRR/# )r   path_strrW   r   rz   r   )r   s   "r   r   r      s      s  r   c                	`   \        V4      pVP                  R 4       F{  pVP                  RR7      pV P                  P	                  V4      pV'       g   K:   \        VP                  ^4      4      pTR,          pYgR,          ,
          ^
,          pT RT 2u # 	  R#   \         d     K  i ; i)zcuda_runtime_api.hutf-8encodingi  r    N)r   rglob	read_textcudart_version_regexsearchintr   
ValueError)	r)   r   rA   irawr   vers_intmajorminors	   &&       r   r   -CudaDependency._read_cuda_runtime_api_version   s    H~01A++w+/C))005Aqwwqz? $E,3EWAeW%% 2   s   BB-,B-c                    V ^8  d   QhRRRR/# )r   rA   rW   r   rz   r   )r   s   "r   r   r      s      c o r   c                	   \         P                  P                  VR 4      p \        VRR7      ;_uu_ 4       pVP	                  4       pV P
                  P                  V4      pV'       d+   V P                  VP                  ^4      4      uuRRR4       #  RRR4       R#   + '       g   i     R# ; i  \         d)   p\        P                  ! RT RT: 24        Rp?R# Rp?ii ; i)zversion.txtr   r   Nz+Could not read CUDA Toolkit's version file r   )r@   rA   rF   openreadlinetoolkit_version_regexr   rf   r   r   r   rK   )r)   rA   version_file_pathversion_fileversion_strr   r   s   &&     r   r   (CudaDependency._read_toolkit_version_txt   s    GGLL}=	b''::l*335..44[A44QWWQZ@	 ;:  ;  ;:   	bJJEFWEXXZ[\Z_`aa	bs;   B4 AB 

B4 B4  B1	+B4 1B4 4C'?C""C'c                    V ^8  d   QhRRRR/# )r   r>   rW   r   r   )r   s   "r   r   r      s     0 03 03 0r   c                	P    R P                  VP                  R 4      R,          4      # )r    :Nr   N)rF   split)r[   r>   s   &&r   rf   #CudaDependency._strip_patch_version   s    xxc*2.//r   c                   V ^8  d   QhRR/# r   r   rW   r   )r   s   "r   r   r      s     M MS Mr   c                	   V P                   P                  V P                  ,          pVP                  pR pVP	                  4       '       dN   RRRR/pW$9  d   \        VP                  VR4      4      h\        P                  P                  RWB,          4      # VP                  4       '       d   R# VP                  4       '       d.   RR/pW$9  d   \        VP                  VR4      4      hWB,          # \        R	4      h)
zC{} architecture is not supported in {} version of the CUDA Toolkit.x86Win32x86_64x64Windowsliblib64macOSz#CUDA Toolkit: unsupported platform.)envr5   rP   r   
is_windowsr   r   r@   rA   rF   r   	is_darwin)r)   rQ   archrr   libdirss   &    r   rI   "CudaDependency._detect_arch_libdir   s    ((##D$4$45!!Sgx7G")#**T9*EFF77<<w}55  )G")#**T7*CDD= %&KLLr   c                   V ^8  d   QhRR/# r   r   boolr   )r   s   "r   r   r     s      4 r   c           	     	v   R pV P                    F  pV P                  P                  W P                  \        P
                  P                  V P                  R4      .V P                  R R7      pVf   V P                  RV R24       RpK|  \        P                  ! RV RV 24       W0P                  V&   K  	  V# )Tstubs)ignore_system_dirsz%Couldn't find requested CUDA module ''FzLink args for CUDA module 'z' are )r&   clib_compilerfind_libraryrJ   r@   rA   rF   rN   ri   r   rK   r:   )r)   	all_foundmoduleargss   &   r   rO   (CudaDependency._find_requested_libraries  s    	,,F %%226KKVZVaVacjIk;lnrnznz  PT2  UD|--0WX^W__a.bc!	

9&OP+/  ( -" r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   &  s     @ @T @r   c                	l    V P                   P                  V P                  ,          P                  4       # r%   )r   r5   rP   r   r   s   &r   rm   CudaDependency._is_windows&  s&    xx  !1!12==??r   c                    V ^8  d   QhRRRR/# )r   rr   rW   r   r   r   )r   s   "r   r   r   *  s    ==C=D=r   c                	    R # r%   r   )r)   rr   s   &&r   ri   'CudaDependency._report_dependency_error)  s    :=r   c               $    V ^8  d   QhRRRRRR/# )r   rr   rW   ret_valr_   r   r   )r   s   "r   r   r   -  s    ``C`.`^`r   c                	    R # r%   r   r)   rr   r  s   &&&r   ri   r  ,  s    ]`r   c               $    V ^8  d   QhRRRRRR/# )r   rr   rW   r  zT.Optional[TV_ResultTuple]r   r   )r   s   "r   r   r   /  s#      C :T `z r   c                	l    V P                   '       d   \        V4      h\        P                  ! V4       V# r%   )requiredr   r   rK   r  s   &&&r   ri   r  /  s&    ===%c**

3r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   6  s     ( (S (r   c                	J    R P                  V P                  4      pRV,           # )r   z	modules: )rF   r&   )r)   
module_strs   & r   log_detailsCudaDependency.log_details6  s!    YYt556
Z''r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   :  s     8 8# 8r   c                	B    V P                   '       d   V P                   # R # ) )r=   r   s   &r   log_infoCudaDependency.log_info:  s    !%t~~7R7r   c               $    V ^8  d   QhRRRRRR/# )r   r"   rz   r   r   r   ry   r   )r   s   "r   r   r   =  s"      o 4 T_ r   c                	   R RR.RRR.RR./p. pV P                    F  pV P                  V,          pVR8X  d-   WS9   d'   W5,          p\        P                  ! RV R	V R
24       MOVR8X  dI   V P                  P
                  V P                  ,          pVP                  4       '       d   V. RO,          pWF,          pK  	  V# )r,   z-cudartsharedr-   r.   	cudadevrtz
-cudadevrtr!   zRewriting module 'z' to 'r  )z-lrtz	-lpthreadz-ldl)r&   r:   r   rK   r   r5   rP   r   )r)   r"   r   REWRITE_MODULESr  r   	link_argsrQ   s   &&&     r   get_link_argsCudaDependency.get_link_args=  s     y(+i2,
 ))C((-I6!c&<+0	

0Xi[KL'((++D,<,<=##%% !>>ID * r   )
r=   rd   rG   r?   r:   rJ   rN   r&   rD   r>   )cppcr!   r%   )NF)%__name__
__module____qualname____firstlineno__r7   r   r9   classmethodr6   r<   rl   rC   rc   rj   r   r   recompiler   r   r   r   rk   r   r   rf   rI   rO   rm   Toverloadri   r  r  r%  __static_attributes____classcell__)rT   s   @r   r   r      s   .K.9 .9` ) )GB#441Y^Z
 JJ'?@ZZ
3ZZ7::&LM*" 0 0M&,@ ZZ= =ZZ` `(8 r   r   r!   ) 
__future__r   r   r.  r@   typingr0  pathlibr   r  r   r   baser   r   detectr	   r
   TYPE_CHECKINGr   r   r4   r   	envconfigr   r   TupleOptionalrW   r   r_   r   r   r   r   <module>r=     s~    #  	 	     7  ???)$')WWQZZ_ajjotCDNz% zx	 " r   