+
    UBi)W                    <  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 ^RIHtHt ^RIHtHtHtHtHtHtHtHtHtHtHtHt ^RIHtH t  ^RI!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t, ^R	I-H.t.H/t/H0t0H1t1H2t2H3t3H4t4 ^R
I5H6t6 ^RIH7t7H8t8H9t9H:t: ^RI;H<t<H=t= ]P|                  '       d   ^RIH?t? ^RIH@t@HAtAHBtBHCtC ^RIDHEtE ^RIFHGtGHHtH ^RIIHJtJ ^RIIHKtL ^RIMHNtNHOtO ^RI5HPtP ^RI;HQtQ ^RI!HRtR ^ RISHTtTHUtU ]P                  ! R4      tW ! R R]LP                  ]P                  ]W,          4      tZ]Z]LP                  ,          t\]Z]],          t^ ! R R]T4      t_]0! R].! ]`]]4      R. RR 7      ]0! R!]aR"R#7      .tbR$]cR%&   R& R' ltd ! R( R)]4      teR* R+ ltfR# ),    )annotationsN)
FeatureNew)ExtensionModuleModuleReturnValue
ModuleInfo)mesonlibmlog)BothLibrariesBuildTargetCustomTargetIndex
ExecutableExtractedObjectsGeneratedListCustomTargetInvalidArgumentsJarStructuredSourcesSharedLibraryStaticLibrary)#are_asserts_disabled_for_subprojectlang_suffixes)DEPENDENCIES_KWLINK_WITH_KWLINK_WHOLE_KWSHARED_LIB_KWSTEST_KWSTEST_KWS_NO_ARGS	OUTPUT_KWINCLUDE_DIRECTORIESSOURCES_VARARGSNoneTypein_set_validator)ContainerTypeInfoInterpreterException	KwargInfotyped_kwargstyped_pos_args	noPosargspermittedKwargs)Doctest)FileMachineChoiceMesonException
PerMachine)ExternalProgramNonExistingExternalProgram)ModuleState)BuildTargetTypesExecutableKeywordArgumentsIncludeDirsLibTypes)RustCompiler)
DependencyExternalLibrary)Interpreter)kwargs)SourceInputsSourceOutputs)Test)OverrideProgram)SourcesVarargsType)	TypedDictLiteralArgsTypec                  T    ] tR t^+t$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )FuncRustTestzT.List[ArgsType]args,T.List[T.Union[Dependency, ExternalLibrary]]dependenciesboolis_parallelzT.List[LibTypes]	link_withz?T.List[T.Union[StaticLibrary, CustomTarget, CustomTargetIndex]]
link_wholeT.List[str]	rust_args N__name__
__module____qualname____firstlineno____annotations____static_attributes__rN       </usr/lib/python3.14/site-packages/mesonbuild/modules/rust.pyrD   rD   +   s&    BB##SSrV   rD   c                  r    ] tR t^6t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R]R&   R]R&   RtR# )FuncBindgenrL   rE   c_argszT.List[IncludeDirs]include_directorieszT.List[SourceInputs]inputstroutputoutput_inline_wrapperrF   rG   zT.Optional[Literal['c', 'cpp']]languagebindgen_versionrN   NrO   rN   rV   rW   rY   rY   6   s7    00##""BB11$$rV   rY   rM   T1.2.0)listifydefaultsincerI   F)rd   zT.List[KwargInfo]RUST_TEST_KWSc                    V ^8  d   QhRRRR/# )   argz T.Optional[T.Union[str, T.List]]returnT.Optional[str]rN   )formats   "rW   __annotate__rm   N   s      = / rV   c                ~    \         ;QJ d    R  V  4       F  '       g   K   RM	  RM! R  V  4       4      '       d   R# R# )c              3  b   "   T F%  p\        \        P                  ! R V4      4      x  K'  	  R# 5i)z\sN)rH   research).0xs   & rW   	<genexpr>&no_spaces_validator.<locals>.<genexpr>O   s#     
2c4		%#$$cs   -/TFz5must not contain spaces due to limitations of rustdocN)any)ri   s   &rW   no_spaces_validatorrw   N   s)    
s
2c
2sss
2c
222FrV   c                    a  ] tR t^Tt$ Rt]! RRRR7      tR]R&   ]! RR4      t	R	]R
&   R V 3R llt
R R lt]! R]]4      ]! R.]O]N]P&                  ! RR7      N]P&                  ! RR7      N]O5!  R R l4       4       t]! RR4      ]! R]]4      ]! R.]O]N]N]N]O]! R]! ]]4      R. ]R7      N5!  R R l4       4       4       t]]! R]! R]! ]]4      . RR7      ]! R]! ]]4      . RR7      ]! R]! ]]] ]]!]"]#]$]3RR 7      . RRR!7      ]! R"]]%3R#]&! R$R%04      R&7      ]! R']! ]]4      . RR#R(7      ]'P&                  ! ]! ]]4      R/R)7      ](]! R*]R+R#R,7      ]P&                  ! RR7      4
      R- R. l4       4       t)]! R/R04      ]*! 0 R6m4      ]! R/]]+R17      ]! R/.],O5R2R/ R3 R4 l4       4       4       4       t-R5t.V ;t/# )7
RustModulez.A module that holds helper functions for rust.rustz0.57.0z1.0.0)
stabilizedrk   _bindgen_rust_targetNz'PerMachine[T.Optional[ExternalProgram]]rustdocc                    V ^8  d   QhRRRR/# )rh   interpreterr9   rj   NonerN   )rl   s   "rW   rm   RustModule.__annotate__\   s      K D rV   c           
     	  < \         SV `  V4       R V n        RVP                  P                  9   dY   \
        P                  ! RVP                  P                  R,          4      pVP                  '       d   RMVP                  V n	        MR V n	        RV n
        V P                  P                  RV P                  RV P                  RV P                  RV P                   /4       R # )	Nrz   r6   nightlyFtestdoctestbindgen
proc_macro)super__init___bindgen_bin	compilershostTcast
is_nightlyversionr|   _bindgen_set_stdmethodsupdater   r   r   r   )selfr   rustc	__class__s   && rW   r   RustModule.__init__\   s    %_c[**///FF>;+@+@+E+Ef+MNE5:5E5E5E	5==D%(,D% %DIIt||t||$//	
 	rV   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rh   funcnamer]   stater1   rE   T.Tuple[str, BuildTarget]r:   rD   rj   z%T.Tuple[Executable, _kwargs.FuncTest]rN   )rl   s   "rW   rm   r   l   s=     a# a#C a# a#C\ a#fr a#  x] a#rV   c                `   \         ;QJ d,    R VP                  R. 4       4       F  '       g   K   RM!	  RM! R VP                  R. 4       4       4      '       d   \        R4      h\         ;QJ d,    R VP                  R. 4       4       F  '       g   K   RM!	  RM! R VP                  R. 4       4       4      '       d   \        R4      hV^ ,          pV^,          pVP                  4       '       g   \	        RV R	24      hVR
,          pRV9   d,   \
        P                  ! RV R24       VP                  R4       RV9   d7   \
        P                  ! RV R24       VP                  R4      pWx^,            Wx \        V4       F8  w  r\        V	\        4      '       g   K  V	P                  R4      '       g   K6  Wx  M	  \        P                  ! RVP                  4       4      p
V. RO,           V
R
&   RV
R&   \        P                  ! RVP                   P                  4       4      pVR R F  pW9   g   K  W K  	  RVR&   VP                  R. 4      VR,          ,           VR&   VP                  R. 4      \        P                  ! RVR,          4      ,           VR&   VP                  R. 4      VR,          ,           VR&   VP"                  P                  4       pVP"                  R,          VR,          ,           R.,           VR&   WR&   \        P                  ! RVP$                  P                  4       4      pVP'                  VP(                  4       \+        WVP,                  VP.                  VP0                  WP2                  VP4                  VP6                  VP8                  V4
      pW3# )a  Generate a rust test target from a given rust target.

Rust puts its unitests inside its main source files, unlike most
languages that put them in external files. This means that normally
you have to define two separate targets with basically the same
arguments to get tests:

```meson
rust_lib_sources = [...]
rust_lib = static_library(
    'rust_lib',
    rust_lib_sources,
)

rust_lib_test = executable(
    'rust_lib_test',
    rust_lib_sources,
    rust_args : ['--test'],
)

test(
    'rust_lib_test',
    rust_lib_test,
    protocol : 'rust',
)
```

This is all fine, but not very DRY. This method makes it much easier
to define rust tests:

```meson
rust = import('unstable-rust')

rust_lib = static_library(
    'rust_lib',
    [sources],
)

rust.test('rust_lib_test', rust_lib)
```
c              3  B   "   T F  p\        V\        4      x  K  	  R # 5iN
isinstancer   rr   ts   & rW   rt   )RustModule.test_common.<locals>.<genexpr>   s     G+Faz!S!!+F   rJ   TFz'Rust tests cannot link with Jar targetsc              3  B   "   T F  p\        V\        4      x  K  	  R # 5ir   r   r   s   & rW   rt   r      s     H+Gaz!S!!+Gr   rK   z&Second positional argument to rustmod.z() must be a rust based targetrE   --testzDo not add --test to rustmod.z() arguments--formatzDo not add --format to rustmod.z	--format=z_kwargs.FuncTestrz   protocolr3   rust_crate_typeinstallrG   zT.List[BuildTargetTypes]rM   language_argszT.List[SourceOutputs])r   r   pretty)picprelinkrust_abir   	soversiondarwin_versions	shortname)rv   getr   	uses_rustr$   r	   warningremoveindex	enumerater   r]   
startswithr   r   copyoriginal_kwargs
extra_argssourcesextend	generatedr   subdir
subprojectfor_machinestructured_sourcesobjectsenvironmentr   )r   r   r   rE   r:   namebase_targetr   iatkwargsnew_target_kwargskw	lang_argsr   
new_targets   &&&&&           rW   test_commonRustModule.test_commonl   s?   T 3G6::k2+FG333G6::k2+FGGG"#LMM3H6::lB+GH333H6::lB+GHHH"#LMMAw#'7$$&&&)OPXzYw'xyyF^
 z!LL8
,OPh'#LL:8*LQR  ,Aq5!j)DA!S!!all;&?&?M * &&+V[[];$'GG$
FF#?A\A\AaAaAcd/0hB&%) i (-)$,=,A,A.RT,UX^_mXn,n.)):)>)>{B)ORSRXRXYsu{  }H  vI  SJ  *J+&*;*?*?b*QTZ[gTh*h,'**//1	'226:VK=PPT\S]]	&-6/*&&0+2E2E2J2J2LM{,,-$$e&6&68O8O33!8!8+:O:O	

 ""rV   z	rust.testrb   )re   z1.8.0c               (    V ^8  d   QhRRRRRRRR/# )	rh   r   r1   rE   r   r:   FuncTestrj   r   rN   )rl   s   "rW   rm   r      s+     ; ;+ ;-F ;PX ;]n ;rV   c                	    Vw  rEV P                  R WV4      w  rgV P                  P                  V P                  P                  WF3V4      p\	        RWh.4      # )r   N)r   r   	make_testcurrent_noder   )	r   r   rE   r:   r   _r   r   r   s	   &&&&     rW   r   RustModule.test   sa     "..vuFK
%%//))D+=wH !
'9::rV   zrust.doctestrE   T)rc   rd   	validatorc               (    V ^8  d   QhRRRRRRRR/# )	rh   r   r1   rE   z3T.Tuple[str, T.Union[SharedLibrary, StaticLibrary]]r:   FuncDoctestrj   r   rN   )rl   s   "rW   rm   r      s/     33 33[ 330c 33mx 33  ~O 33rV   c                	   Vw  rEVP                  4       '       g   \        R 4      hVP                  4       '       g   \        R4      hVP                  P	                  4       '       dP   VP                  P                  VP                  4      '       d%   \        P                  ! RRR7       \        R. 4      # VR,          P                  V4       VR,          P                  V4       VR,          pRVR&   V P                  R	WV4      w  rxVR
,          P                  R4       VR
,          '       d9   RRP                  \        P                  ! RVR
,          4      4      ,           .VR
&   V'       d    VR
,          P                  RV,           4       V P                   VP                  ,          f   \        P                  ! RVP"                  R,          4      p	V	P%                  4       p
V
'       d2   \'        V
P)                  4       4      V P                   VP                  &   M!\+        4       V P                   VP                  &   V P                   VP                  ,          pVP-                  4       '       g   \        RVP                   R24      hV P.                  P1                  V P.                  P2                  WK3V\4        4      pW|n        Wn        \        RV.4      # )z-doc tests are only supported for Rust targetsz-doc tests are not supported for rust_abi: 'c'z/skipping Rust doctests due to cross compilationT)onceNrJ   dependsworkdirr   rE   r   z--test-args= zT.Sequence[str]z--test-run-directory=r6   rz   zcould not find rustdoc for z machine)r   r-   uses_rust_abir   is_cross_buildneed_exe_wrapperr   r	   noticer   appendr   r   joinr   r   r}   r   get_rustdocr/   get_exer0   foundr   r   r   r*   targetdoctests)r   r   rE   r:   r   r   r   r   r   r   r}   rustdoc_progr   s   &&&&         rW   r   RustModule.doctest   sN   $ !$$&& !PQQ((** !PQQ++--%2C2C2T2TU`UlUl2m2mKKIPTU$T2.. 	{"";/y  -# y"..y%vN
 	x( 6??-@QSZ[aSb9c0ddeGFOFO""#:W#DE<<//08FF>;+@+@+HIE'')G8GHY8Z[4458R8T[445||K$;$;<!!## #>{?V?V>WW_!`aa ,,66))D+?'S
 %' z22rV   zrust.bindgenrZ   )rd   rc   r\   F)allow_empty)rd   rc   requiredr`   z1.4.0ccpp)re   r   ra   )rd   rc   re   )since_valuesr_    )rd   re   c               (    V ^8  d   QhRRRRRRRR/# )	rh   r   r1   rE   zT.Listr:   rY   rj   r   rN   )rl   s   "rW   rm   r   >  s/     i3 i3[ i3 i3 i3Pa i3rV   c                N   V P                   P                  VR,          4      vrE. p. pV F=  p\        V\        4      '       d   VP	                  V4       K,  VP	                  V4       K?  	  VP
                  P                  P                  P                  4       P                  4       p	\        P                  ! R? U
u. uF;  qP
                  P                  P                  P                  P                  V
4      NK=  	  up
R 4      pV'       d!   V	P                  VP!                  4       4       M*\"        P$                  ! \&        P(                  ! R4      4       VP+                  VR,          4       Fg  pT	P                  VP-                  VP
                  P/                  4       VP
                  P1                  4       4       Uu. uF  pRV 2NK
  	  up4       Ki  	  \3        VP4                  VP
                  4      '       d   V	P	                  R4       VR	,           EF  pVP7                  4        Fg  pT	P                  VP-                  VP
                  P/                  4       VP
                  P1                  4       4       Uu. uF  pRV 2NK
  	  up4       Ki  	  V	P                  VP9                  4       4       VP;                  4        FU  p\        V\        4      '       d   VP	                  V4       K,  \        V\<        4      '       g   KD  VP	                  V4       KW  	  EK
  	  V P>                  f   VPA                  RVR,          R7      V n        V PB                  ep   \        PD                  ! \F        PH                  ! RV P>                  PK                  4       4      RV PB                  .,           4      w   ppRV9   g   RV9   d   R
V n!        \        V P>                  \L        4      '       d5   \        PN                  ! V P>                  PQ                  4       R4      V n)        \        V\        4      '       d   VPT                  pMH\        V\V        \X        \Z        \\        34      '       d   \_        R4      hVPa                  4       ^ ,          pVR,          pVf[   \b        Pd                  Pg                  V4      ^,          R,          pV\h        R,          9   d   RpMVR8X  d   RpM\_        RV 24      hVPk                  V R2VP4                  4      p\        V\l        4      '       g   Q R4       h\n        Pp                  ! VPr                  P                  V. 4      VPt                  P                  V. 4      V4       F-  pVPw                  R@4      '       g   K  V	P	                  V4       K/  	  VR8X  d   V	P                  RR.4       VPk                  V R24      p\        V\x        4      '       g   Q R4       hVPw                  R4      '       dU   VP{                  R4      '       d   \"        P$                  ! RR R!R"R#7       R$pM \"        P|                  ! R%R&4       VR,          pVR'8w  d   V	P	                  R(V 24       . pVR),          .pVR*,          '       d   \        V P>                  \L        4      '       dA   \        PN                  ! V P>                  PQ                  4       R+4      '       d   \_        R,4      hVP	                  VR*,          4       R-R.R/\b        Pd                  P                  VP
                  P                  R04      .pV P>                  PK                  4       R1R2\b        Pd                  P                  VP
                  P                  R34      .,           VR4,          ,           V,           pV PB                  '       d%   RV9  d   VP                  RV PB                  .4       V PR                  '       dn   R5V9  dg   VP
                  P                  P                  P                  R64      p\        V\x        4      '       g   Q R4       hVR'8w  d   VP                  R5V.4       VP	                  R74       VP                  VR8,          4       VP                  V	4       VP                  . RAO4       \=        R9V 2P                  R:R;4      VP                  VP4                  VP
                  VV.VR<VVVP                  R=R>7      p\        VV.4      # u up
i u upi u upi )BzWrapper around bindgen to simplify its use.

The main thing this simplifies is the use of `include_directory`
objects, instead of having to pass a plethora of `-I` arguments.
r\   r   r   c                
    V R J# r   rN   )rs   s   &rW   <lambda>$RustModule.bindgen.<locals>.<lambda>X  s    atmrV   aP                  Using `rust.bindgen` without configuring C (or a C-like)
                language in Meson will skip compiler detection and can cause
                ABI incompatibilities due to missing crucial compiler flags.
                Consider calling `add_languages('c')` in your Meson build
                files.
            r[   -Iz-DNDEBUGrG   Nr   ra   )wantedrL   z--rust-targetzGot an invalidzis not a valid Rust targetz>= 0.71zEbindgen source file must be a C header, not an object or build targetr`   :   NNhz!Unknown file type extension for: _argszfor mypyz-xzc++_stdzvc++latestzCAttempting to translate vc++latest into a clang compatible version.z%Currently this is hardcoded for c++20TF)r   fatalzc++20z>The current C++ standard is a Visual Studio extension version.z3bindgen will use a the nearest C++ standard insteadnonez-std=r^   r_   z< 0.65zP'output_inline_wrapper' parameter of rust.bindgen requires bindgen-0.65 or newerz--experimentalz--wrap-static-fnsz--wrap-static-fns-pathz	@OUTPUT1@@INPUT@z--outputz	@OUTPUT0@rE   z--rust-editionrust_stdz--rZ   zrustmod-bindgen-/r   z@PLAINNAME@.dzGenerating bindings for Rust {})depfileextra_dependsdepend_filesbackenddescription)r   r   objcobjcpp)r   z/Iz-Dz/Dz-Uz/U)z-MDz-MQr  z-MFz	@DEPFILE@)Gr   source_strings_to_filesr   r+   r   r   
propertiesr   get_bindgen_clang_argsr   r   firstcoredatar   r   r   get_always_argsr	   r   textwrapdedentprocess_include_dirsto_string_listget_source_dirget_build_dirr   r   get_include_dirsget_all_compile_argsget_sourcesr   r   find_programr|   
Popen_safer   r   get_commandr/   version_compareget_versionr   fnamer   r
   r   r   r$   get_outputsospathsplitextr   
get_optionlist	itertoolschainglobal_argsproject_argsr   r]   endswithdebugr   	build_diroptstoreget_value_forreplacer   r  r   )r   r   rE   r:   header_depsr   r  d
clang_argslcompr   rs   desr   errr   r`   extcargsr   stdinline_wrapper_argsoutputscmdr  r   s   &&&&                         rW   r   RustModule.bindgen&  s   < ))AA&/R *,%'A!T""##A&q!	  &&1166MMOTTV

 ~~GefGe!''1166::1=Gef#
 d2245LL *   ++F3H,IJA1A1A!!002E4E4E4S4S4U2W X 2WAA3x 2W X Y K /u/?/?ARARSSj)((B((*!!Q5E5E%%4468I8I8W8W8Y6[ #\ 6[Rs8 6[ #\ ] + b5578^^%a&& ''*<00NN1%	 & ) $ % 2 29VL]E^ 2 _D((4$//FF=$*;*;*G*G*IJ$d&?&?@AB	1c $s*.Jc.Q04D- $++_==(0(@(@ARARA^A^A`bk(l% fd##<<Dm=MO` abb&'noo%%'*D *%''""4(+B/CmE** *-Ntf+UVV   H:U!3U5E5EF%&&2
2&!2!2!6!6x!DeFXFXF\F\]egiFjlqrA||@AA!!!$ s utUm, (401#s##/Z/#>>&!!||H%%bD4W\^

[PR"g&=cUm,+-(#$)**$++_==++D,=,=,I,I,KXVV.  0D  E  ENN6"9:; "5("'',,u7H7H7R7RT_*`#
 ++-:U..88+F
 6N
 11 $$$)CJJ)B)BCD   %5S%@((11::HHTHh,,8j8,6!

,h78

4

6(#$

:

@Atf%--c37LLH#!%MM9
 !&22a g X#\s   ;Add
 d"zrust.proc_macroz1.3.0)varargsallow_unknownc               (    V ^8  d   QhRRRRRRRR/# )	rh   r   r1   rE   z T.Tuple[str, SourcesVarargsType]r:   z_kwargs.SharedLibraryrj   r   rN   )rl   s   "rW   rm   r     s/       3S ]r   xE rV   c                	    \         P                  VR &   RVR&   VR,          RR.,           VR&   VP                  P                  VP                  W#\
        4      pV# )nativez
proc-macror   rM   z--externr   )r,   BUILD_interpreterbuild_targetr   r   )r   r   rE   r:   r   s   &&&& rW   r   RustModule.proc_macro  s^     )..x$0 !$[1Z4NN{##001C1CTS`arV   )r   r|   r   >	   r   	link_argsrJ   rM   extra_filesrG   link_dependsoverride_optionsrust_dependency_map)0rP   rQ   rR   rS   __doc__r   INFOrT   r.   r}   r   r   r'   r]   r   r&   r   r   r   evolver   rf   r   r   r   r%   r#   r%  rw   r   r(   r+   r   r
   r   r   r   r!   r"   r   r   r   r)   r    r   r   rU   __classcell__)r   s   @rW   ry   ry   T   s   8fh7;D))7A$7MG4M  a#F Kk2	 	 	'*	
 	7+ 
; 3; (NC5	 	 		
 	 
 	dC()	
33 6 )"33j (-dC8"dS&+D#6DQdT=+}Vfhy  |H  JM  %N  \a  b	
 	*sHoWHXZ]_dYeHfg#%6tS%A2W[cjk""1B41Mw0WX#		
 	W-+.i3/ 0i3Z !7+ T U%sOD#InIDI J EU ,
rV   ry   c                    V ^8  d   QhRRRR/# )rh   interpr9   rj   ry   rN   )rl   s   "rW   rm   rm     s      { z rV   c                    \        V 4      # r   )ry   )rS  s   &rW   
initializerU    s    frV   )g__conditional_annotations__
__future__r   r&  r!  rp   r  typingr   %mesonbuild.interpreterbase.decoratorsr   r   r   r   r   r   r	   buildr
   r   r   r   r   r   r   r   r   r   r   r   compilers.compilersr   r   interpreter.type_checkingr   r   r   r   r   r   r   r   r    r!   r"   interpreterbaser#   r$   r%   r&   r'   r(   r)   interpreter.interpreterobjectsr*   r+   r,   r-   r.   programsr/   r0   TYPE_CHECKINGr1   r2   r3   r4   r5   compilers.rustr6   rG   r7   r8   r   r9   r:   _kwargsinterpreter.interpreterr;   r<   r=   r>   r?   typing_extensionsr@   rA   TypeVarrB   BaseTestGenericrD   TestArgsr   r]   r   rY   r%  rH   rf   rT   rw   ry   rU  )rV  s   @rW   <module>ri     sL   # "  	 	   < < < k k k k T    K  K  K 4 F F B???[[-:)/E5*>4yy$Hw''8)<  G,,-Hs#K
%i 
% 		4	% }dE2	$  	a aHrV   