+
    UBi.U                      a  0 t $ ^ RIH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HtHt ^RIHt ^RIHt ^RIHtHtHtHt ]	P2                  '       d%   ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIH t  ^RI!H"t" R. R. RRR.RRR.RRR.RRR.RRR./t#R]$R&   R R lt%R R  lt& ! R! R"]4      t' ! R# R$]'4      t( ! R% R&]'4      t)R# )'    )annotationsN)options)EnvironmentExceptionMesonExceptionPopen_safe_loggedversion_compare)VisualStudioLikeLinkerMixin)	OptionKey)CompilerCompileCheckModeclike_debug_args
is_library)MutableKeyedOptionDictType)Environment)DynamicLinker)MachineChoice)
Dependency)BuildTargetplain0g-Czopt-level=01zopt-level=12zopt-level=23zopt-level=3szopt-level=sT.Dict[str, T.List[str]]rust_optimization_argsc                    V ^8  d   QhRRRR/# )   exelistT.List[str]returnz-T.Optional[T.Tuple[T.List[str], T.List[str]]] )formats   ">/usr/lib/python3.14/site-packages/mesonbuild/compilers/rust.py__annotate__r'   &   s      [ 5b     c                n   \        V 4      p \        P                  P                  \	        V4      4      R8w  d   R# ^p\	        V4      pVP                  R4      '       d   V^,          p\	        V4      pK-  VR8w  d   R# \	        V4       \	        V4       V RV \        V4      3#   \         d     R# i ; i)aT  Given the command for a rustc executable, check if it is invoked via
"rustup run" and if so separate the "rustup [OPTIONS] run TOOLCHAIN"
part from the arguments to rustc.  If the returned value is not None,
other tools (for example clippy-driver or rustdoc) can be run by placing
the name of the tool between the two elements of the tuple.rustupN-run)iterospathbasenamenext
startswithlistStopIteration)r!   enopts   &   r&   get_rustup_run_and_argsr8   &   s     	WA77DG$01g nnS!!FAq'C %<QQr{DG## s"   -B% #B%  B% ?%B% %B43B4c                    V ^8  d   QhRRRR/# )r    argsr"   r#   r$   )r%   s   "r&   r'   r'   C   s      + + r(   c                z    V '       g   V # . pV  F(  pVP                  R 4       VP                  RV 24       K*  	  V# )r   z	link-arg=)append)r:   
rustc_argsargs   &  r&   rustc_link_argsr?   C   sD     J$IcU+,  r(   c                    a  ] tR t^Lt$ RtRtRRR.R. R. RR	R
.RR	R
./tR]R&   R]R&   R. RRR.R. RORRR.R. RO/tR]R&   RR V 3R ll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R*7      R+ R, l4       t]P"                  ! RR*7      R- R. l4       t]P"                  ! RR*7      R/ R0 l4       t]P"                  ! RR*7      R1 R2 l4       tR3 R4 ltR5 V 3R6 llt]P"                  ! RR*7      R7 R8 l4       tR9 R: ltR; R< ltR= R> ltRR? V 3R@ llltRA RB lt]RC RD l4       tRE V 3RF llt RG RH lt!RRI RJ llt"RK RL lt#RM RN lt$RO RP lt%]P"                  ! RR*7      RQ V 3RR ll4       t&RS RT lt'RURRV^ RWRX/RY RZ llt(RURRV^ RWRXR[R/R\ R] llt)R^ V 3R_ llt*R` Ra lt+Rb V 3Rc llt,Rd V 3Re llt-Rf Rg lt.Rh Ri lt/]P"                  ! RR*7      Rj V 3Rk ll4       t0Rl Rm lt1]P"                  ! RR*7      Rn V 3Ro ll4       t2]P"                  ! RR*7      Rp V 3Rq ll4       t3Rr Rs lt4Rt Ru lt5Rv Rw lt6Rx Ry lt7Rz R{ lt8R| R} lt9R~ R lt:R R lt;]P"                  ! RR*7      R R l4       t<R R lt=Rt>V ;t?# )RustCompilerrustrustcr   z--cap-lintsallowr   r   r   z-Wwarnings
everythingr   _WARNING_LEVELSboolallow_nightlynonemd-Clink-arg=/nodefaultlib:libcmtz-Clink-arg=/defaultlib:msvcrtmdd-Clink-arg=/nodefaultlib:msvcrtmtz-Clink-arg=/defaultlib:libcmtmtdzT.Mapping[str, T.List[str]]MSVCRT_ARGSNc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r    r!   r"   versionstrfor_machiner   envr   full_versionT.Optional[str]linkerT.Optional['DynamicLinker']r$   )r%   s   "r&   r'   RustCompiler.__annotate__f   sA     B B Bc B B!B1@B4Br(   c           
     	  < \         SV `  . WW4WVR 7       \        V4      V n        V P                  P                  R Uu0 uF  p\        V4      kK  	  up4       \        V P                  \        4      '       d%   V P                  P                  \        R4      4       . V n        RV9   V n        RV9   V n        \        VR4      V n        R# u upi ))rW   rY   b_vscrtz-betaz-nightlyz>=1.80.0N)
b_colorout
b_coverageb_ndebugb_pgo)super__init__r8   rustup_run_and_argsbase_optionsupdater
   
isinstancerY   r	   addnative_static_libsis_beta
is_nightlyr   has_check_cfg)	selfr!   rS   rU   rV   rW   rY   o	__class__s	   &&&&&&& r&   rc   RustCompiler.__init__f   s     	W{&2 	 	CRijqRr   8i!j8i1)A,8i!jkdkk#>??!!)I"67/1,.$4,WjA "ks   Cc                   V ^8  d   QhRR/# )r    r#   Noner$   )r%   s   "r&   r'   r[   t   s     K K4 Kr(   c                	    V P                  R R4      pVR8X  d0   V P                  '       g   \        RV P                  4        R24      hVR8g  ;'       d    V P                  V n        R# )nightlyNenabledRust compiler ? is not a nightly compiler as required by the "nightly" option.disabled)get_compileropt_valuerk   r   name_stringrI   )rm   nightly_opts   & r&   init_from_optionsRustCompiler.init_from_optionst   si    00DA)#DOOO&8H8H8J7K  LK  (L  M  M(J6JJ4??r(   c                   V ^8  d   QhRR/# r    r#   rH   r$   )r%   s   "r&   r'   r[   z   s      T r(   c                	    R # )Fr$   rm   s   &r&   needs_static_linker RustCompiler.needs_static_linkerz   s    r(   c                    V ^8  d   QhRRRR/# )r    work_dirrT   r#   rr   r$   )r%   s   "r&   r'   r[   }   s     "7 "7S "7T "7r(   c                	.   \         P                  P                  VR 4      p\         P                  P                  VR4      pV P                  P	                  4       p\        VRRR7      ;_uu_ 4       pV P                  P                  R8w  d'   VP                  \        P                  ! R4      4       MSRV P                  P                  9   d   VP                  RR	.4       VP                  \        P                  ! R
4      4       RRR4       VP                  RW2.4       \        WAR7      w  rgpVP                  ^ 8w  d   \!        RV P#                  4        R24      hV P%                  W4       V P'                  V.V4       R#   + '       g   i     L; i)z	sanity.rszrusttest.exewzutf-8)encodingrJ   z6fn main() {
                    }
                    ld.r   zlink-arg=-nostartfilesa;  #![no_std]
                    #![no_main]
                    #[no_mangle]
                    pub fn _start() {
                    }
                    #[panic_handler]
                    fn panic(_info: &core::panic::PanicInfo) -> ! {
                        loop {}
                    }
                    Nz-ocwdrv   z cannot compile programs.)r.   r/   joinr!   copyopeninfokernelwritetextwrapdedentrY   idextendr   
returncoder   rz   _native_static_libsrun_sanity_check)	rm   r   source_nameoutput_namecmdlistofilepcstdostdes	   &&       r&   sanity_checkRustCompiler.sanity_check}   s7   ggll8[9ggll8^<,,##%+sW55 yy6)HOO  DKKNN*NND*B#CDHOO	
 
 60 	k78*7A$==A&8H8H8J7KKd'eff  7{mX6; 65s   1BFF	c               $    V ^8  d   QhRRRRRR/# )r    r   rT   r   r#   rr   r$   )r%   s   "r&   r'   r[      s&     Z ZC Zc Zd Zr(   c                	   V P                   R RRRV.,           p\        W1R7      w  rEpVP                  ^ 8w  d   \        R4      h\        P
                  ! RV\        P                  4      pV'       gF   V P                  P                  R8X  d   R# V P                  P                  R	8X  d   R# \        R
4      h0 RmpVP                  ^4      P                  4        U	u. uF  qV9  g   K  V	NK  	  up	V n        R# u up	i )z--crate-type	staticlib--printznative-static-libsr   z'Rust compiler cannot compile staticlib.znative-static-libs: (.*)$rJ   N
emscriptenz:Failed to find native-static-libs in Rust compiler output.>   -lc-lgcc_s
-ladvapi32
-lkernel32/defaultlib:msvcrt)r!   r   r   r   research	MULTILINEr   r   systemgroupsplitri   )
rm   r   r   r   pr   r   matchexcludeis
   &&&       r&   r    RustCompiler._native_static_libs   s    ,,.+yJ^`k!ll)'@<<1&'PQQ		5tR\\Jyy6) yy</&'cdd
 W.3kk!n.B.B.D"Y.DQXHX11.D"Y"Ys   C9)C9c               $    V ^8  d   QhRRRRRR/# r    	outtargetrT   outfiler#   r"   r$   )r%   s   "r&   r'   r[      s!     1 1 1s 1{ 1r(   c                	    R RV 2.# )--emitz	dep-info=r$   rm   r   r   s   &&&r&   get_dependency_gen_args$RustCompiler.get_dependency_gen_args   s    IgY/00r(   c                    V ^8  d   QhRRRR/# r    
outputnamerT   r#   r"   r$   )r%   s   "r&   r'   r[      s     0 0# 0+ 0r(   c                	    R RV 2.# )r   zlink=r$   rm   r   s   &&r&   get_output_argsRustCompiler.get_output_args   s    E*.//r(   maxsizec                   V ^8  d   QhRR/# r    r#   rT   r$   )r%   s   "r&   r'   r[      s     / /S /r(   c                	    V P                  R R7      RR.,           p\        V4      w  r#pVP                  R^R7      ^ ,          # )Fccacher   sysroot
maxsplitget_exelistr   r   rm   cmdr   r   r   s   &    r&   get_sysrootRustCompiler.get_sysroot   sE    e,	9/EE)#.zz$z+A..r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[      s     / /3 /r(   c                	    V P                  R R7      RR.,           p\        V4      w  r#pVP                  R^R7      ^ ,          # )Fr   r   ztarget-libdirr   r   r   r   s   &    r&   get_target_libdirRustCompiler.get_target_libdir   sE    e,	?/KK)#.zz$z+A..r(   c                   V ^8  d   QhRR/# r    r#   r"   r$   )r%   s   "r&   r'   r[      s     ! !+ !r(   c                	t    V P                  R R7      RR.,           p\        V4      w  r#pVP                  4       # )Fr   r   cfg)r   r   
splitlinesr   s   &    r&   get_cfgsRustCompiler.get_cfgs   s:    e,	5/AA)#.  r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[      s     @ @ @r(   c                	(    R V P                  4       9   # )ztarget_feature="crt-static")r   r   s   &r&   get_crt_staticRustCompiler.get_crt_static   s    ,??r(   c                    V ^8  d   QhRRRR/# )r    targetT.Optional[BuildTarget]r#   rH   r$   )r%   s   "r&   r'   r[      s     = ="9 =d =r(   c                	4   V'       g   V P                   # V P                  R 4      pV P                  P                  P	                  W4      pVR8X  d0   V P
                  '       g   \        RV P                  4        R24      hVR8g  ;'       d    V P
                  # )rt   ru   rv   rw   rx   )rI   form_compileropt_keyenvironmentcoredataget_option_for_targetrk   r   rz   )rm   r   keyr{   s   &&  r&   get_nightlyRustCompiler.get_nightly   s    %%%''	2&&//EEfR)#DOOO&8H8H8J7K  LK  (L  M  Mj(<<T__<r(   c               $    V ^8  d   QhRRRRRR/# )r    r   r   valuer"   r#   r$   )r%   s   "r&   r'   r[      s(     K K*A K+ KZe Kr(   c                	4   < \        \        SV `	  W4      4      # N)r?   rb   sanitizer_link_args)rm   r   r   ro   s   &&&r&   r    RustCompiler.sanitizer_link_args   s    
 uw:6IJJr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[      s      d r(   c                	    \        V P                  R 4      '       d   R# RV P                  P                  9   d   V P                  P                  R8w  d   R# R# )z< 1.67.0Fr   zld.wasmT)r   rS   rY   r   r   s   &r&   has_verbatimRustCompiler.has_verbatim   s=    4<<44DKKNN"t{{~~'B r(   c                    V ^8  d   QhRRRR/# )r    libnamerT   r#   rX   r$   )r%   s   "r&   r'   r[      s        r(   c                *   \        V4      '       g   R# \        P                  P                  V4      w  rV P                  P                  4       '       d   VR8X  d   V# VR8w  d   R# M	VR8X  d   R# VP                  R4      '       g   R# VR,          pV# )zUndo the effects of -l on the filename, returning the
argument that can be passed to -l, or None if the
library name is not supported.Nz.libz.alib:   NN)r   r.   r/   splitextr   
is_windowsr2   )rm   r   exts   && r&   lib_file_to_l_argRustCompiler.lib_file_to_l_arg   s     '""ww''0
 99!!f}d{  f}!!%(("+r(   c                    V ^8  d   QhRRRR/# r    is_debugrH   r#   r"   r$   )r%   s   "r&   r'   r[     s     * *t * *r(   c                	    \         V,          # r   )r   rm   r  s   &&r&   get_debug_argsRustCompiler.get_debug_args  s    ))r(   c                    V ^8  d   QhRRRR/# )r    optimization_levelrT   r#   r"   r$   )r%   s   "r&   r'   r[     s     : : : :r(   c                	    \         V,          # r   )r   )rm   r  s   &&r&   get_optimization_args"RustCompiler.get_optimization_args  s    %&899r(   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r    	build_dirrT   from_dirr   r   extra_pathsT.Optional[T.List[str]]r#   z"T.Tuple[T.List[str], T.Set[bytes]]r$   )r%   s   "r&   r'   r[     s1     0 0# 0 0k 0&=0@0r(   c                	`   < \         SV `  WW0P                  4       .4      w  rV\        V4      V3# r   )rb   build_rpath_argsr   r?   )rm   r  r  r   r  r:   	to_removero   s   &&&&&  r&   r  RustCompiler.build_rpath_args  s8      '2*@*@*B)CEt$i//r(   c               $    V ^8  d   QhRRRRRR/# )r    parameter_listr"   r  rT   r#   r$   )r%   s   "r&   r'   r[     s#     
 
[ 
:=
BM
r(   c                	<   \        V4       F  w  r4VR ,          R8X  g   K  R Fq  p\        V4      ^,           pVRV RV R28X  g   K%  VRV \        P                  P	                  \        P                  P                  W$VR 4      4      ,           W&    K  	  K  	  V# ):Nr    Nz-LN=)
dependencycratenative	frameworkall)	enumeratelenr.   r/   normpathr   )rm   r  r  idxr   jcombined_lens   &&&    r&   &compute_parameters_with_absolute_paths3RustCompiler.compute_parameters_with_absolute_paths  s    /FCu}NA#&q6A:L,'Rs!94./.>AQAQRTRYRYR^R^_hlxlyjzR{A|.|+	 O 0 r(   c               $    V ^8  d   QhRRRRRR/# )r    rY   rT   rS   r#   r"   r$   )r%   s   "r&   r'   r[   &  s!     * *S *3 *; *r(   c                	    R RV 2.# )r   zlinker=r$   )clsrY   rS   s   &&&r&   use_linker_argsRustCompiler.use_linker_args%  s    x())r(   c                   V ^8  d   QhRR/# )r    r#   r   r$   )r%   s   "r&   r'   r[   -  s      7 r(   c                	  < \         SV `  4       pV P                  R 4      p\        P                  ! V P                  V4      RR. R
OR7      W&   V P                  R4      p\        P                  ! V P                  V4      RR4      W&   V P                  R4      p\        P                  ! V P                  V4      RR	4      W&   V# )stdzRust edition to userJ   )choicesdynamic_stdz6Whether to link Rust build targets to a dynamic libstdFrt   zsNightly Rust compiler (enabled=required, disabled=don't use nightly feature, auto=use nightly feature if available)auto)rJ   2015201820212024)rb   get_optionsr   r   UserComboOptionmake_option_nameUserBooleanOptionUserFeatureOption)rm   optsr   ro   s   &  r&   r;  RustCompiler.get_options-  s    w"$''.++!!#&!<	>	 ''6--!!#&D	
 ''	2--!!#& B	
 r(   c                    V ^8  d   QhRRRR/# )r    depz'Dependency'r#   r"   r$   )r%   s   "r&   r'   r[   E  s      |  r(   c                	    . # r   r$   )rm   rC  s   &&r&   get_dependency_compile_args(RustCompiler.get_dependency_compile_argsE  	     	r(   c               $    V ^8  d   QhRRRRRR/# )r    r   r   
subprojectrX   r#   r"   r$   )r%   s   "r&   r'   r[   K  s"      + ? ^i r(   c                	    . pV P                  R W4      p\        V\        4      '       g   Q hVR8w  d   VP                  RV,           4       V# )r3  rJ   z
--edition=)ry   rg   rT   r<   )rm   r   rI  r:   r3  s   &&&  r&   get_option_std_args RustCompiler.get_option_std_argsK  sI    ((C#s####&=KKs*+r(   c               $    V ^8  d   QhRRRRRR/# r    crt_valrT   	buildtyper#   r"   r$   )r%   s   "r&   r'   r[   S  s!      C C K r(   c                	    . # r   r$   rm   rO  rP  s   &&&r&   get_crt_compile_args!RustCompiler.get_crt_compile_argsS      	r(   c               $    V ^8  d   QhRRRRRR/# rN  r$   )r%   s   "r&   r'   r[   W  s&     F F F F Fr(   c                	    \        V P                  \        4      '       g   . # V P                  V P	                  W4      ,          # r   )rg   rY   r	   rQ   get_crt_valrR  s   &&&r&   get_crt_link_argsRustCompiler.get_crt_link_argsW  s7    $++'BCCI  0 0 DEEr(   c                    V ^8  d   QhRRRR/# )r    	colortyperT   r#   r"   r$   )r%   s   "r&   r'   r[   _  s     I I3 I; Ir(   c                	8    VR9   d   RV 2.# \        RV 24      h)alwaysz--color=zInvalid color type for rust >   r6  neverr^  )r   )rm   r\  s   &&r&   get_colorout_argsRustCompiler.get_colorout_args_  s.    33yk*++;I;GHHr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[   e  s     b b br(   c                	B   < \        \        SV `	  4       4      R .,           # )z-Cdefault-linker-libraries)r?   rb   get_linker_always_argsrm   ro   s   &r&   rd  #RustCompiler.get_linker_always_argsd  s    uw=?@D`Caaar(   c               $    V ^8  d   QhRRRRRR/# )r    bitcoderH   ltor#   r"   r$   )r%   s   "r&   r'   r[   h  s!     . .d . .+ .r(   c                	6    V'       d   R R.# V'       d   . # R R.# )r   embed-bitcode=yeszembed-bitcode=nor$   )rm   rh  ri  s   &&&r&   get_embed_bitcode_args#RustCompiler.get_embed_bitcode_argsh  s%    -..I,--r(   r   threadsmodedefaultc               (    V ^8  d   QhRRRRRRRR/# )	r    r   r   rn  intro  rT   r#   r"   r$   )r%   s   "r&   r'   r[   p  s,     ! !.E !WZ !#&!7B!r(   c               	F    VP                   R9   d   . # VR8X  d   RMRpRV.# )dylibthinzlto=thinri  r   >   rt  
proc-macro)rust_crate_type)rm   r   rn  ro  	rustc_ltos   &$$$ r&   get_lto_compile_args!RustCompiler.get_lto_compile_argsp  s0    !!%<<I #'&.Je	i  r(   thinlto_cache_dirc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r    r   r   rn  rr  ro  rT   r{  rX   r#   r"   r$   )r%   s   "r&   r'   r[   y  s4      +B TW  #DS_jr(   c               	    . # r   r$   )rm   r   rn  ro  r{  s   &$$$$r&   get_lto_link_argsRustCompiler.get_lto_link_argsy  rG  r(   c                    V ^8  d   QhRRRR/# )r    r/   rT   r#   r"   r$   )r%   s   "r&   r'   r[     s     E E3 E; Er(   c                	4   < \        \        SV `	  V4      4      # r   )r?   rb   get_lto_obj_cache_path)rm   r/   ro   s   &&r&   r  #RustCompiler.get_lto_obj_cache_path  s    uw=dCDDr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     - -; -r(   c                	
    R R.# )r   zinstrument-coverager$   r   s   &r&   get_coverage_argsRustCompiler.get_coverage_args  s    +,,r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     A A Ar(   c                	2   < \        \        SV `	  4       4      # r   )r?   rb   get_coverage_link_argsre  s   &r&   r  #RustCompiler.get_coverage_link_args  s    uw=?@@r(   c                    V ^8  d   QhRRRR/# )r    defsfilerT   r#   r"   r$   )r%   s   "r&   r'   r[     s     J J J Jr(   c                	4   < \        \        SV `	  V4      4      # r   )r?   rb   gen_vs_module_defs_args)rm   r  ro   s   &&r&   r  $RustCompiler.gen_vs_module_defs_args  s    uw>xHIIr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     * *; *r(   c                	
    R R.# )r   zprofile-generater$   r   s   &r&   get_profile_generate_args&RustCompiler.get_profile_generate_args  s    ())r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     % %k %r(   c                	
    R R.# )r   zprofile-user$   r   s   &r&   get_profile_use_args!RustCompiler.get_profile_use_args  s    m$$r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     < <; <r(   c                	2   < \        \        SV `	  4       4      # r   )r?   rb   get_asneeded_argsre  s   &r&   r  RustCompiler.get_asneeded_args  s    uw8:;;r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     + +k +r(   c                	
    R R.# )r   rk  r$   r   s   &r&   bitcode_argsRustCompiler.bitcode_args  s    )**r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     9 9 9r(   c                	2   < \        \        SV `	  4       4      # r   )r?   rb   headerpad_argsre  s   &r&   r  RustCompiler.headerpad_args  s    uw5788r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     H H{ Hr(   c                	2   < \        \        SV `	  4       4      # r   )r?   rb   get_allow_undefined_link_argsre  s   &r&   r  *RustCompiler.get_allow_undefined_link_args  s    uwDFGGr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s     " " "r(   c                	
    R R.# )z-DrE   r$   r   s   &r&   get_werror_argsRustCompiler.get_werror_args  s     j!!r(   c                    V ^8  d   QhRRRR/# )r    levelrT   r#   r"   r$   )r%   s   "r&   r'   r[     s     + +3 +; +r(   c                	(    V P                   V,          # r   )rG   )rm   r  s   &&r&   get_warn_argsRustCompiler.get_warn_args  s    ##E**r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s      k r(   c                	    . # r   r$   r   s   &r&   get_pic_argsRustCompiler.get_pic_args  rU  r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r[     s      k r(   c                	    . # r   r$   r   s   &r&   get_pie_argsRustCompiler.get_pie_args  s	     	r(   c                    V ^8  d   QhRRRR/# )r    disablerH   r#   r"   r$   )r%   s   "r&   r'   r[     s     P Pt P Pr(   c                	,    V'       d   R MRpRRV 2RR.# )noyesr   zdebug-assertions=zoverflow-checks=nor$   )rm   r  actions   && r&   get_assert_argsRustCompiler.get_assert_args  s#     e)&2D:NOOr(   c                    V ^8  d   QhRRRR/# )r    namerT   r#   r"   r$   )r%   s   "r&   r'   r[     s      # + r(   c           	     	6   V P                   '       d   V P                   w  r#W!.,           pMV.pV P                  4       p^RIHp V! V P                  V P
                  V^ ,          V^ ,          V^ ,          .RR7       F  pVP                  V^ &    WC,           # 	  . # )r    )find_external_programF)allow_default_for_cross)rd   get_exe_argsprogramsr  r   rU   r/   )rm   r  rustup_exelistr:   r!   r  progs   &&     r&   get_rust_toolRustCompiler.get_rust_tool  s    ####'#;#; N$v-GfG$$&D4)$*:*:D<L<LgVWjZabcZd+21:,PUWDGAJ ~W
 Ir(   c                    V ^8  d   QhRRRR/# r    r:   r"   r#   zT.Tuple[bool, bool]r$   )r%   s   "r&   r'   r[     s     v v v8K vr(   c                	F    V P                  R V\        P                  R7      # z$fn main() { std::process::exit(0) }
)
extra_argsro  )compilesr   COMPILErm   r:   s   &&r&   has_multi_arguments RustCompiler.has_multi_arguments  s     }}DQU\l\t\t}uur(   c                    V ^8  d   QhRRRR/# r  r$   )r%   s   "r&   r'   r[     s     s s[ s=P sr(   c                	    \        V P                  P                  4       4      V,           pV P                  R V\        P
                  R7      # r  )r?   rY   fatal_warningsr  r   LINKr  s   &&r&   has_multi_link_arguments%RustCompiler.has_multi_link_arguments  s<    t{{99;<tC}}DQU\l\q\q}rrr(   c                   V ^8  d   QhRR/# )r    r#   zT.Optional[RustdocTestCompiler]r$   )r%   s   "r&   r'   r[     s     C C< Cr(   c           
     	    V P                  R 4      pV'       g   R# \        WP                  V P                  V P                  V P
                  V P                  V R7      # )rustdocN)rW   rY   rC   )r  RustdocTestCompilerrS   rU   r   rW   rY   )rm   r!   s   & r&   get_rustdocRustCompiler.get_rustdoc  sP    $$Y/"7LL$:J:J#'#3#3040A0A*.++TC 	Cr(   c                   V ^8  d   QhRR/# )r    r#   r  r$   )r%   s   "r&   r'   r[     s      %< r(   c                j    \        V P                  R4      '       d   V P                  '       d   RR.# R# )zUExtra arguments to enable --env-set support in rustc.
Returns None if not supported.
z>= 1.76z-Zzunstable-optionsN)r   rS   rI   r   s   &r&   enable_env_set_args RustCompiler.enable_env_set_args  s/     4<<338J8J8J,--r(   )rI   rl   rj   rk   ri   rd   )rL   rN   z-Clink-arg=/defaultlib:msvcrtd)rL   rN   z-Clink-arg=/defaultlib:libcmtd)NNr   )@__name__
__module____qualname____firstlineno__languager   rG   __annotations__rQ   rc   r|   r   r   r   r   r   	functools	lru_cacher   r   r   r   r   r   r   r  r  r  r  r*  classmethodr/  r;  rE  rK  rS  rY  r`  rd  rl  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes____classcell__ro   s   @r&   rA   rA   L   s    H	B 	mW%RRdJtZ(1O-  
 	02QRw.0QRw0K, B BK"7HZ.10 &/ '/
 &/ '/
 &! '!
 &@ '@=K K & '2*:0 0
 * * 0FI
 &b 'b.! !]^ !)2!T Z[ &/VZE E-A AJ J*% &< '<+ &9 '9 &H 'H"
+
P&vs &C 'C r(   rA   c                      ] tR tRtRtRtRtR# )ClippyRustCompileri  zKClippy is a linter that wraps Rustc.

This just provides us a different id
zclippy-driver rustcr$   N)r  r  r  r  __doc__r   r  r$   r(   r&   r  r    s    
 
Br(   r  c                    a  ] tR tRtRtRtR V 3R llt]P                  ! RR7      R R	 l4       t	]P                  ! RR7      R
 R l4       t
]P                  ! RR7      R R l4       tR R ltR R ltR R ltRtV ;t# )r  i  zwWe invoke Rustdoc to run doctests.  Some of the flags
are different from rustc and some (e.g. --emit link) are
ignored.zrustdoc --testc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r    r!   r"   rS   rT   rU   r   rV   r   rW   rX   rY   rZ   rC   rA   r$   )r%   s   "r&   r'    RustdocTestCompiler.__annotate__  sA       c  !1@4=Ir(   c                	8   < \         SV `  WVWEV4       Wpn        R # r   )rb   rc   rC   )	rm   r!   rS   rU   rV   rW   rY   rC   ro   s	   &&&&&&&&r&   rc   RustdocTestCompiler.__init__  s      	;F	4
r(   Nr   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s     ( (S (r(   c                	6    V P                   P                  4       # r   )rC   r   r   s   &r&   r   RustdocTestCompiler.get_sysroot  s    zz%%''r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s     . .3 .r(   c                	6    V P                   P                  4       # r   )rC   r   r   s   &r&   r   %RustdocTestCompiler.get_target_libdir  s    zz++--r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s     % %+ %r(   c                	6    V P                   P                  4       # r   )rC   r   r   s   &r&   r   RustdocTestCompiler.get_cfgs  s    zz""$$r(   c                    V ^8  d   QhRRRR/# r  r$   )r%   s   "r&   r'   r  	  s      t  r(   c                	    . # r   r$   r
  s   &&r&   r  "RustdocTestCompiler.get_debug_args	      	r(   c               $    V ^8  d   QhRRRRRR/# r   r$   )r%   s   "r&   r'   r    s!       s { r(   c                	    . # r   r$   r   s   &&&r&   r   +RustdocTestCompiler.get_dependency_gen_args  r  r(   c                    V ^8  d   QhRRRR/# r   r$   )r%   s   "r&   r'   r    s      # + r(   c                	    . # r   r$   r   s   &&r&   r   #RustdocTestCompiler.get_output_args  r  r(   )rC   )r  r  r  r  r  r   rc   r  r  r   r   r   r  r   r   r  r  r  s   @r&   r  r    s     
B  &( '( &. '. &% '% r(   r  )*__conditional_annotations__
__future__r   r  os.pathr.   r   r   typingT r   mesonlibr   r   r   r   linkers.linkersr	   r
   	compilersr   r   r   r   TYPE_CHECKINGr   r   r   r   r   dependenciesr   buildr   r   r  r8   r?   rA   r  r  )r  s   @r&   <module>r     s   
 # "    	   _ _ 9  O O???4)/()# R$	$	$	$	$	4 0 :U8 Up ", "r(   