+
    UBih                       ^ RI H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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 ^R
IHt ^RIHt ^RIHt ^RI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- ]P\                  '       dv   ^RI/H0t0 ^RI1H2t2 ^RIH3t3 ^RI4H5t5 ^RI6H7t7 ^RI8H9t9 ^RIH:t:H;t; ^RI,H<t< ^ RI=H>t>H?t? ]P                  ]P                  ]!]P                  3,          ,          tC ! R R]>4      tDR8tE]! RR7       ! R R4      4       tF ! R  R!]P                  4      tH]! RR7       ! R" R#4      4       tI]! RR7       ! R$ R%4      4       tJ]! RR7       ! R& R'4      4       tK]! RR7       ! R( R)4      4       tL]! RR7       ! R* R+4      4       tM]! RR7       ! R, R-4      4       tN ! R. R/]M4      tO]! RR7       ! R0 R14      4       tPR9R2 R3 lltQR9R4 R5 lltR ! R6 R74      tSR# ):    )annotations)OrderedDict)	dataclassInitVar)	lru_cache)chain)PathN)build)dependencies)programs)mesonlib)mlog)	compilers)detectlang_suffixes)FileMachineChoiceMesonExceptionMesonBugException
OrderedSetExecutableSerialisationEnvironmentExceptionclassify_unity_sourcesget_compiler_for_sourceget_rsp_thresholdunique_list)	OptionKey)ImmutableListProtocol)CompilerArgs)Compiler)Environment)Test)StaticLinker)FileModeFileOrString)ElementaryOptionValues)	TypedDictNotRequiredc                  T    ] tR t^4t$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )TargetIntrospectionDatastrlanguagezNotRequired[str]machineT.List[str]compiler
parameterssourcesgenerated_sources N__name__
__module____qualname____firstlineno____annotations____static_attributes__r3       @/usr/lib/python3.14/site-packages/mesonbuild/backend/backends.pyr*   r*   4   s%    !!&&r;   r*   F)eqc                  6    ] tR t^Ct$ R]R&   R]R&   R]R&   RtR# )	RegenInfor+   
source_dir	build_dirr.   depfilesr3   Nr4   r3   r;   r<   r?   r?   C   s    ONr;   r?   c                  H    ] tR t^It^ t^t^t^t]R R l4       t	R R lt
RtR# )TestProtocolc                    V ^8  d   QhRRRR/# )   stringr+   returnz'TestProtocol'r3   )formats   "r<   __annotate__TestProtocol.__annotate__Q   s     	> 	>c 	>n 	>r;   c                	    VR 8X  d   V P                   # VR8X  d   V P                  # VR8X  d   V P                  # VR8X  d   V P                  # \	        RV 24      h)exitcodetapgtestrustzunknown test format )EXITCODETAPGTESTRUSTr   )clsrG   s   &&r<   from_strTestProtocol.from_strP   sZ    Z<<u_77Nw99v88O3F8<==r;   c                   V ^8  d   QhRR/# rF   rH   r+   r3   )rI   s   "r<   rJ   rK   \   s       r;   c                	    \        V 4      pWP                  J d   R # WP                  J d   R# WP                  J d   R# R# )rM   rO   rP   rN   )typerQ   rS   rT   )selfrU   s   & r<   __str__TestProtocol.__str__\   s5    4j<<YYXXr;   r3   N)r5   r6   r7   r8   rQ   rR   rS   rT   classmethodrV   r]   r:   r3   r;   r<   rD   rD   I   s2    H
CED	> 	> r;   rD   c                  0    ] tR t^gt$ RtR]R&   R]R&   RtR# )
CleanTreesz
Directories outputted by custom targets that have to be manually cleaned
because on Linux `ninja clean` only deletes empty directories.
r+   rA   r.   treesr3   N)r5   r6   r7   r8   __doc__r9   r:   r3   r;   r<   ra   ra   g   s     Nr;   ra   c                  t    ] tR t^pt$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R R ltRtR# )InstallDatar+   r@   rA   prefixlibdirr.   	strip_binzT.Union[str, int]install_umaskmesonintrospectversionc                   V ^8  d   QhRR/# rF   rH   Noner3   )rI   s   "r<   rJ   InstallData.__annotate__}   s     = =t =r;   c                	v    . V n         . V n        . V n        . V n        . V n        . V n        . V n        . V n        R # N)targetsheadersmanemptydirdatasymlinksinstall_scriptsinstall_subdirsr\   s   &r<   __post_init__InstallData.__post_init__}   s<    2402,.13-/	46@B:<r;   )rv   ru   rs   rx   ry   rt   rw   rr   Nr5   r6   r7   r8   r9   r{   r:   r3   r;   r<   re   re   p   s9    ONKK %$  L= =r;   re   c                      ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   R]R&   R]R&   RtR]R&   RtR]R&   RtR]R&   R R ltRt	R# )TargetInstallDatar+   fnameoutdirzInitVar[T.Optional[str]]outdir_nameboolstripzT.Mapping[str, str]install_name_mappingszT.Set[bytes]rpath_dirs_to_removeinstall_rpathzT.Optional['FileMode']install_mode
subprojectFoptionalNT.Optional[str]tag	can_stripc                    V ^8  d   QhRRRR/# )rF   r   r   rH   rn   r3   )rI   s   "r<   rJ   TargetInstallData.__annotate__   s     P P PT Pr;   c                	    Vf+   \         P                  P                  RV P                  4      p\         P                  P                  V\         P                  P	                  V P
                  4      4      V n        R # )N{prefix})ospathjoinr   basenamer   out_name)r\   r   s   &&r<   r{   TargetInstallData.__post_init__   sI    '',,z4;;?K["''2B2B4::2NOr;   )r   )
r5   r6   r7   r8   r9   r   r   r   r{   r:   r3   r;   r<   r   r      s^    JK))K..&&((OHdCItP Pr;   r   c                  D    ] tR t^t$ R]R&   R]R&   R]R&   RtR]R&   R	tR# )
InstallEmptyDirr+   r   
'FileMode'r   r   Nr   r   r3   r5   r6   r7   r8   r9   r   r:   r3   r;   r<   r   r      s    
IOCr;   r   c                  t    ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R&   RtR	]R
&   RtR	]R&   RtR]R&   RtR# )InstallDataBaser+   r   install_pathinstall_path_namer   r   r   Nr   r   	data_typeT.Optional[bool]follow_symlinksr3   )	r5   r6   r7   r8   r9   r   r   r   r:   r3   r;   r<   r   r      s=    
IOC!%I%(,O%,r;   r   c                  N    ] tR t^t$ R]R&   R]R&   R]R&   R]R&   RtR]R&   R	tR# )
InstallSymlinkDatar+   targetnamer   r   Nr   r   r3   r   r3   r;   r<   r   r      s!    K
IOCr;   r   c                  2   a  ] tR t^tRR V 3R llltRtV ;t# )SubdirInstallDatac               <    V ^8  d   QhRRRRRRRRRRR	RR
RRRRR/	# )rF   r   r+   r   r   r   r   excludezT.Tuple[T.Set[str], T.Set[str]]r   r   r   r   r   r   r3   )rI   s   "r<   rJ   SubdirInstallData.__annotate__   sS      S   )4S '6JY #3r;   c
           
     	8   < \         S
V `  WW4WgW4       WPn        R # rq   )super__init__r   )r\   r   r   r   r   r   r   r   r   r   	__class__s   &&&&&&&&&&r<   r   SubdirInstallData.__init__   s     	->j_hzr;   )r   )NNN)r5   r6   r7   r8   r   r:   __classcell__)r   s   @r<   r   r      s      r;   r   c                      ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R R  ltR!tR"# )#TestSerialisationr+   r   project_namer.   suiter   r   is_cross_builtz$T.Optional[programs.ExternalProgram]exe_wrapperneeds_exe_wrapperis_parallelcmd_argsmesonlib.EnvironmentVariablesenvshould_failzT.Optional[int]timeoutr   workdirextra_pathsrD   protocolintprioritycmd_is_built
cmd_is_exedependsrk   verbosec                   V ^8  d   QhRR/# rm   r3   )rI   s   "r<   rJ   TestSerialisation.__annotate__   s     J Jt Jr;   c                	~    V P                   e/   \        V P                   \        P                  4      '       g   Q hR # R # rq   )r   
isinstancer   ExternalProgramrz   s   &r<   r{   TestSerialisation.__post_init__   s2    'd..0H0HIIII (r;   r3   Nr}   r3   r;   r<   r   r      s    
I55	&&MLMJ Jr;   r   c               $    V ^8  d   QhRRRRRR/# )rF   backendr+   r
   T.Optional[build.Build]rH   T.Optional['Backend']r3   )rI   s   "r<   rJ   rJ      s#     % %3 %/F %Rg %r;   c                   V R 8X  d   ^RI Hp VP                  V4      # V R8X  d   ^RI Hp VP	                  V4      # V R8X  d   ^RI Hp VP                  V4      # V R8X  d   ^RI Hp VP                  V4      # V R8X  d   ^RI Hp VP                  V4      # V R	8X  d   ^R
I H
p VP                  V4      # V R8X  d   ^RI Hp VP                  V4      # V R8X  d   ^RI Hp VP                  V4      # V R8X  d   ^RI Hp	 V	P#                  V4      # V R8X  d   ^RI Hp
 V
P'                  V4      # V R8X  d   ^RI Hp VP+                  V4      # V R8X  d   ^RI Hp VP/                  V4      # R# )ninja)ninjabackendvs)vs2010backendvs2010vs2012)vs2012backendvs2013)vs2013backendvs2015)vs2015backendvs2017)vs2017backendvs2019)vs2019backendvs2022vs2022backendvs2026)vs2026backendxcode)xcodebackendnone)nonebackendN) r   NinjaBackendr   autodetect_vs_versionVs2010Backendr   Vs2012Backendr   Vs2013Backendr   Vs2015Backendr   Vs2017Backendr   Vs2019Backendr   Vs2022Backendr   Vs2026Backendr   XCodeBackendr   NoneBackend)r   r
   r   r   r   r   r   r   r   r   r   r   r   s   &&           r<   get_backend_from_namer      sT   '"((//	D#22599	H	#**511	H	#**511	H	#**511	H	#**511	H	#**511	H	#**511	H	#**511	H	#**511	G	"((//	F	!&&u--r;   c               $    V ^8  d   QhRRRRRR/# )rF   	genvsnamer+   r
   r   rH   r   r3   )rI   s   "r<   rJ   rJ     s#      S 1H Ti r;   c                F    V R 8X  d   ^RI Hp VP                  VRR7      # R# )r   r   T)gen_liteN)r   r   r   )r   r
   r   s   && r<   get_genvslite_backendr     s&    H#**5T*BBr;   c                     ] tR tRt$ R]R&   RtR R ltRR	 R
 lltRR/R R lltR R lt	R R lt
R R ltRR/R R lltRR/R R lltR R lt]! RR7      R R l4       tR R  ltR! R" ltR# R$ ltR% R& lt]! RR7      R' R( l4       tR) R* ltR+ R, lt]R- R. l4       tRR/ R0 lltR1 R2 ltR3 R4 lt]R5 R6 l4       tR7 R8 ltRR9 R: lltRR; R< llt R= R> lt!R? R@ lt"]]! RR7      RA RB l4       4       t#RRC RD llt$]! RR7      RE RF l4       t%RG RH lt&RI RJ lt'RK RL lt(RM RN lt)]RO RP l4       t*RQ RR lt+RS RT lt,RU RV lt-RW RX lt.]]! RR7      RY RZ l4       4       t/]0]! RR7      R[ R\ l4       4       t1R] R^ lt2R_ R` lt3Ra Rb lt4Rc Rd lt5Re Rf lt6Rg Rh lt7Ri Rj lt8Rk Rl lt9Rm Rn lt:Ro Rp lt;Rq Rr lt<Rs Rt lt=Ru Rv lt>Rw Rx lt?RRy Rz llt@]! RR7      R{ R| l4       tA]! RR7      R} R~ l4       tBR R ltCRR R lltDR R ltE]! RR7      R R l4       tFRR/R R lltGRR/R R lltHRR R lltIR R ltJR R ltKR R ltLR R ltMR R ltNR R ltORR R lltPR R ltQR R ltRR R ltSR R ltTR R ltUR R ltVR R ltWR R ltXR R ltYR R ltZRR R llt[R R lt\RR R llt]R R lt^R R lt_R R lt`RtaR# )Backendi  zT.Optional['Environment']environmentz	<UNKNOWN>c                   V ^8  d   QhRR/# )rF   r
   r   r3   )rI   s   "r<   rJ   Backend.__annotate__  s     P P5 Pr;   c                	   Vf
   R V n         R # Wn        VP                   V n         \        4       V n        V P                   P	                  4       V n        V P                   P                  4       V n        \        P                  ! V P                   P                  4       V P                   P	                  4       4      V n
        \        P                  ! V P                   P	                  4       V P                   P                  4       4      V n        R # rq   )r   r
   setprocessed_targetsget_build_dirrA   get_source_dirr@   r   relpathbuild_to_srcsrc_to_build)r\   r
   s   &&r<   r   Backend.__init__  s     =#D
 ,,-0U))779**99;$,,T-=-=-L-L-N-1-=-=-K-K-MO$,,T-=-=-K-K-M-1-=-=-L-L-NPr;   FNc               $    V ^8  d   QhRRRRRR/# )rF   capturer   
vslite_ctxzT.Optional[T.Dict]rH   r3   )rI   s   "r<   rJ   r  *  s(     T T T:L TXj Tr;   c                	D    \        R \        V 4      P                   24      h)zgenerate is not implemented in )RuntimeErrorr[   r5   )r\   r  r  s   &&&r<   generateBackend.generate*  s     <T$Z=P=P<QRSSr;   warn_multi_outputTc               $    V ^8  d   QhRRRRRR/# )rF   tbuild.AnyTargetTyper  r   rH   r+   r3   )rI   s   "r<   rJ   r  -  s$     > >%8 >PT >`c >r;   c               	^   \        V\        P                  4      '       dq   V'       dQ   \        VP	                  4       4      ^8w  d3   \
        P                  ! RVP                  : RVP                   R24       VP	                  4       ^ ,          pMo\        V\        P                  4      '       d   VP	                  4       ^ ,          pM7\        V\        P                  4      '       g   Q V4       hVP                  4       p\        P                  P                  V P                  V4      V4      # )   zcustom_target z@ has more than one output! Using the first one. Consider using `z[0]`.)r   r
   CustomTargetlenget_outputsr   warningr   CustomTargetIndexBuildTargetget_filenamer   r   r   get_target_dir)r\   r  r  filenames   &&$ r<   get_target_filenameBackend.get_target_filename-  s    a++,, S%9Q%>~affZ 8EEFVVHES T}}q)H52233}}q)Ha!2!2336Q63~~'Hww||D//2H==r;   c                    V ^8  d   QhRRRR/# rF   r   r  rH   r+   r3   )rI   s   "r<   rJ   r  :  s     ` `.A `c `r;   c                	    \         P                  P                  V P                  P	                  4       V P                  V4      4      # rq   )r   r   r   r   r  r"  r\   r   s   &&r<   get_target_filename_absBackend.get_target_filename_abs:  s2    ww||D,,::<d>V>VW]>^__r;   c                    V ^8  d   QhRRRR/# rF   r   build.BuildTargetrH   r   r3   )rI   s   "r<   rJ   r  =  s      0A o r;   c                	    \        V\        P                  4      '       g   Q V4       hVP                  4       '       d@   VP                  4       p\        P
                  P                  V P                  V4      V4      # R # rq   )r   r
   r  get_debug_filenamer   r   r   r   )r\   r   debug_filenames   && r<   get_target_debug_filename!Backend.get_target_debug_filename=  s`    &%"3"344<f<4$$&&#668N77<< 3 3F ;^LLr;   c                    V ^8  d   QhRRRR/# r+  r3   )rI   s   "r<   rJ   r  E  s     f f4E f/ fr;   c                	   \        V\        P                  4      '       g   Q V4       hVP                  4       '       g   R # \        P
                  P                  V P                  P                  4       V P                  V4      4      # rq   )
r   r
   r  r.  r   r   r   r   r  r0  r'  s   &&r<   get_target_debug_filename_abs%Backend.get_target_debug_filename_absE  sb    &%"3"344<f<4((**ww||D,,::<d>\>\]c>deer;   absolute_pathc               (    V ^8  d   QhRRRRRRRR/# 	rF   r   r,  r/   
'Compiler'r6  r   rH   r.   r3   )rI   s   "r<   rJ   r  K  s/     9 92C 9z 9mq 9  J 9r;   c               	    VP                  4       pV'       d   V P                  pMV P                  p\        P                  P                  \        P                  P                  WT4      4      pVP                  VR 4      # F)
get_subdirr@   r	  r   r   normpathr   get_include_args)r\   r   r/   r6  curdirleadtmppaths   &&&$   r<   get_source_dir_include_args#Backend.get_source_dir_include_argsK  s[    ""$??D$$D''""277<<#=>((%88r;   c               (    V ^8  d   QhRRRRRRRR/# r8  r3   )rI   s   "r<   rJ   r  T  s/     8 81B 8j 8lp 8  ~I 8r;   c               	    V'       d:   \         P                  P                  V P                  VP	                  4       4      pMVP	                  4       pVR 8X  d   RpVP                  VR4      # )r   .F)r   r   r   rA   get_builddirr>  )r\   r   r/   r6  r?  s   &&&$ r<   get_build_dir_include_args"Backend.get_build_dir_include_argsT  sS    WW\\$..&2E2E2GHF((*F|((77r;   c                    V ^8  d   QhRRRR/# )rF   r   r  rH   r   r3   )rI   s   "r<   rJ   r  ]  s     X X6I Xo Xr;   c                	^   \        V\        P                  4      '       d   VP                  4       ;'       g    VP	                  4       p\
        P                  ! 4       '       d;   VP                  '       d)   \        P                  ! R RVP                  RR4      4      p\        V P                  V4      V4      P                  4       # \        V\        P                  4      '       d8   \        V P                  V4      VP	                  4       4      P                  4       # \        V\        P                  \        P                   34      '       dg   VP#                  4       '       g   \%        RVP&                   R24      h\        V P                  V4      VP	                  4       4      P                  4       # \        V\        P(                  4      '       dL   VP*                  '       d8   \        V P                  V4      VP                  4       4      P                  4       # R# \-        RV: R24      h)z$[.][a]([.]?([0-9]+))*([.]?([a-z]+))*.a.soz%Tried to link against custom target "z", which is not linkable.NzBUG: Tried to link to z which is not linkable)r   r
   SharedLibraryget_import_filenamer  r   is_aixaix_so_archiveresubreplacer	   r   as_posixStaticLibraryr  r  is_linkable_targetr   r   
Executableimport_filenameAssertionError)r\   r   link_libs   && r<   get_target_filename_for_linking'Backend.get_target_filename_for_linking]  s   
 fe1122113LLv7J7J7LH  V%:%:%:66"H$PXP`P`afhlPmn++F3X>GGII 3 344++F3V5H5H5JKTTVV!3!3U5L5L MNN,,..$'LV[[MYr%stt++F3V5H5H5JKTTVV 0 011%%%D//79S9S9UV__aa5fZ?UVWWr;   )maxsizec                    V ^8  d   QhRRRR/# r%  r3   )rI   s   "r<   rJ   r  v  s      %8 S r;   c                	^   \        V\        P                  4      '       d   R pV# V P                  P                  P
                  P                  \        R4      4      R8X  d   VP                  4       pV# RpVP                  4       pV'       d    \        P                  P                  W#4      pV# )r   layoutmirrorz	meson-out)r   r
   	RunTargetr   coredataoptstoreget_value_forr   rG  get_build_subdirr   r   r   )r\   r   dirnamebuild_subdirs   &&  r<   r   Backend.get_target_diru  s    feoo..G  &&//==i>QRV^^))+G 	 "G!224L'',,w=r;   c               $    V ^8  d   QhRRRRRR/# )rF   r  z.T.Union[build.Target, build.CustomTargetIndex]orH   r+   r3   )rI   s   "r<   rJ   r    s&     7 7&T7&T7 ),7r;   c                \   \         P                  P                  V P                  P	                  4       V P                  V4      4      p\         P                  P                  V P                  P	                  4       V P                  V4      4      p\         P                  P                  W44      # )z7Get a target dir relative to another target's directory)r   r   r   r   r  r   r  )r\   r  rl  
target_dir
othert_dirs   &&&  r<   get_target_dir_relative_to"Backend.get_target_dir_relative_to  su    
 WW\\$"2"2"@"@"BDDWDWXYDZ[
WW\\$"2"2"@"@"BDDWDWXYDZ[
wwz66r;   c                    V ^8  d   QhRRRR/# )rF   r   build.TargetrH   r+   r3   )rI   s   "r<   rJ   r    s     ! !L !S !r;   c                	    V P                  V4      pV'       d+   \        P                  P                  V P                  V4      # V P                  # rq   )r   r   r   r   r	  )r\   r   rn  s   && r<   get_target_source_dirBackend.get_target_source_dir  s<    ((0
77<< 1 1:>>   r;   c                    V ^8  d   QhRRRR/# rF   r   build.BuildTargetTypesrH   r+   r3   )rI   s   "r<   rJ   r    s     ^ ^-C ^ ^r;   c                	p    \         P                  P                  V P                  VR R7      R,           4      # )F)r  z.p)r   r   r   r"  r'  s   &&r<   get_target_private_dirBackend.get_target_private_dir  s+    ww||D44Vu4UX\\]]r;   c                    V ^8  d   QhRRRR/# rx  r3   )rI   s   "r<   rJ   r    s     c c1G cC cr;   c                	    \         P                  P                  V P                  P	                  4       V P                  V4      4      # rq   )r   r   r   r   r  r{  r'  s   &&r<   get_target_private_dir_abs"Backend.get_target_private_dir_abs  s2    ww||D,,::<d>Y>YZ`>abbr;   c               (    V ^8  d   QhRRRRRRRR/# )rF   r   ry  gensrczbuild.GeneratedTypessrcr+   rH   r3   )rI   s   "r<   rJ   r    s6     F F0F(F F Fr;   c                   \        V\        P                  \        P                  34      '       d0   \        P
                  P                  V P                  V4      V4      # \        P
                  P                  V P                  V4      V4      # )z
Takes a BuildTarget, a generator source (CustomTarget or GeneratedList),
and a generated source filename.
Returns the full path of the generated source relative to the build root
)	r   r
   r  r  r   r   r   r   r{  )r\   r   r  r  s   &&&&r<   get_target_generated_dir Backend.get_target_generated_dir  sd     fu1153J3JKLL77<< 3 3F ;SAA ww||D77?EEr;   c               (    V ^8  d   QhRRRRRRRR/# )	rF   r   ry  suffixr+   numberr   rH   zmesonlib.Filer3   )rI   s   "r<   rJ   r    s2     X X,B X&)X36X;HXr;   c                	    VP                    R V RV 2p\        P                  P                  V P	                  V4      V4      # )z-unityrF  )r   r   r   from_built_filer{  )r\   r   r  r  osrcs   &&&& r<   get_unity_source_fileBackend.get_unity_source_file  sA     ++fVHAfX6}},,T-H-H-PRVWWr;   c               $    V ^8  d   QhRRRRRR/# )rF   r   r,  	unity_srcr+   rH   zT.List[mesonlib.File]r3   )rI   s   "r<   rJ   r    s#     ( (+< ( (Qf (r;   c                	n  a aaa . o. o\        SP                  P                  4       V4      pS P                  SR 4      p\	        V\
        4      '       g   Q R4       hR VVV V3R llpVP                  4        F  w  rgV^,           p^ p	Rp
V Fa  pW8  d;   V
'       d   V
P                  4        V! VP                  4       V	4      p
V	^,          p	^ pV
P                  RV R24       V^,          pKc  	  V
'       g   K  V
P                  4        K  	  S F   p\        P                  ! WR,           4       K"  	  S# )
unity_sizefor mypyc               $    V ^8  d   QhRRRRRR/# )rF   r  r+   unity_file_numberr   rH   zT.TextIOr3   )rI   s   "r<   rJ   2Backend.generate_unity_files.<locals>.__annotate__  s!     
	? 
	?s 
	?s 
	?x 
	?r;   c                  < SP                  S	W4      pVP                  SP                  P                  4       SP                  P	                  4       4      pVR ,           pSP                  V4       \        P                  P                  V4      p\        P                  P                  V4      '       g   \        P                  ! V4       SP                  V4       \        VRRR7      # ).tmpwutf-8encoding)r  r6  r   r  r  appendr   r   rh  existsmakedirsopen)
r  r  r  
outfileabsoutfileabs_tmpoutfileabs_tmp_dir	abs_filesresultr\   r   s
   &&    r<   init_language_file8Backend.generate_unity_files.<locals>.init_language_file  s    2266UI"001A1A1P1P1R151A1A1O1O1QSJ'&0NZ(!#!@77>>"455./MM)$g>>r;   Nz	#include<z>
r  )r   r   valuesget_target_optionr   r   itemscloseget_default_suffixwriter   replace_if_different)r\   r   r  compsrcsr  r  compsrcsfiles_in_currentr  ofiler  xr  r  s   ff&          @@r<   generate_unity_filesBackend.generate_unity_files  s   !#	(*)&*:*:*A*A*CYO++FLA
*c**6J6*
	? 
	? #..*JD)A~ ! E#1.t/F/F/HJ[\E%*%'($iuC01 A%   u! +$ A))!Z8 r;   c               $    V ^8  d   QhRRRRRR/# )rF   todirr+   fromdirrH   r3   )rI   s   "r<   rJ   r    s&     H Hs HS HS Hr;   c                	    \         P                  P                  \         P                  P                  R V 4      \         P                  P                  R V4      4      # )dummyprefixdir)r   r   r  r   )r  r  s   &&r<   r  Backend.relpath  s>    wwrww||,<eD!ww||,<gFH 	Hr;   c               $    V ^8  d   QhRRRRRR/# )rF   r   r,  proj_dir_to_build_rootr+   rH   4T.Tuple[T.List[str], T.List[build.BuildTargetTypes]]r3   )rI   s   "r<   rJ   r    s$     + +*; +UX +!U+r;   c                	`    V P                  WP                  4       V4      w  r4\        V4      V3# rq   )_flatten_object_listget_objectsr   )r\   r   r  obj_listdepss   &&&  r<   flatten_object_listBackend.flatten_object_list  s0    226;M;M;OQgh8$d**r;   c                    V ^8  d   QhRRRR/# )rF   objectszbuild.ExtractedObjectsrH   r.   r3   )rI   s   "r<   rJ   r    s     % %*@ %[ %r;   c                	X    V P                  VP                  V.R 4      w  r#\        V4      # r   )r  r   r   )r\   r  r  _s   &&  r<   determine_ext_objsBackend.determine_ext_objs  s)    //	2N8$$r;   c               (    V ^8  d   QhRRRRRRRR/# )	rF   r   r,  r  z8T.Sequence[T.Union[str, 'File', build.ExtractedObjects]]r  r+   rH   r  r3   )rI   s   "r<   rJ   r    s,     ! !+< !&^!58!=q!r;   c                	   . p. pV EF7  p\        V\        4      '       dN   \        P                  P	                  VV P
                  VP                  4       V4      pVP                  V4       Kg  \        V\        P                  4      '       d   VP                  '       dM   \        P                  P	                  VVP                  V P
                  4      4      pVP                  V4       K  \        P                  P	                  VV P
                  4      pVP                  VP                  V4      4       EK2  \        V\        P                  4      '       d   VP                  '       dL   V P                  VP                   VP"                  V4      w  rVP%                  V4       VP%                  V	4       V P'                  V4      p
V'       d9   V
 F1  pVP                  \        P                  P	                  W74      4       K3  	  MVP%                  V
4       VP                  VP                   4       EK/  \)        R 4      h	  WE3# )z!Unknown data type in object list.)r   r+   r   r   r   r	  rG  r  r   r   is_builtrel_to_builddirr
   ExtractedObjects	recursiver  r   objlistextend_determine_ext_objsr   )r\   r   r  r  r  r  objrl  objsdnew_objss   &&&&       r<   r  Backend._flatten_object_list  s    !#/1C#s##GGLL!7!%!2!2F4G4G4I3P"C//<<<%;%(%8%89J9J%KMAOOA&%;%)%6%68AOOC$7$7$:;C!7!788==="77

CKKQghGDOOD)KKN33C8)% 5K(OP & OOH-CJJ'$%HII7 8 ~r;   c                    V ^8  d   QhRRRR/# rF   r   r,  rH   r   r3   )rI   s   "r<   rJ   r    s       1 d r;   c                	`    V P                    F  pVP                  R 4      '       g   K   R# 	  R# )swiftTF)r1   endswith)r   ss   & r<   is_swift_targetBackend.is_swift_target  s'    Azz'""   r;   c                    V ^8  d   QhRRRR/# rF   r   r,  rH   r.   r3   )rI   s   "r<   rJ   r    s      /@ [ r;   c                	p    . pVP                    F#  pVP                  V P                  V4      4       K%  	  V# rq   )link_targetsr  r  )r\   r   r  ls   &&  r<   determine_swift_dep_dirs Backend.determine_swift_dep_dirs  s3     $$AMM$99!<= %r;   c               D    V ^8  d   QhRRRRRRRRRRR	R
RRRRRRRRRR/# )rF   cmdz_T.Sequence[T.Union[programs.ExternalProgram, build.BuildTarget, build.CustomTarget, File, str]]r   r   extra_bdeps%T.Optional[T.List[build.BuildTarget]]r  feedr   )T.Optional[mesonlib.EnvironmentVariables]can_use_rsp_filer   r   r   installdir_mapzT.Optional[T.Dict[str, str]]rH   z'ExecutableSerialisation'r3   )rI   s   "r<   rJ   r    s     Ta TavTa$Ta ?Ta %	Ta
 "Ta ;Ta #Ta !Ta Ta 9Ta E^Tar;   c                	
   Vvr\        V\        P                  4      '       d   VP                  4       pVP                  pM\        V\
        P                  4      '       d    V P                  V4      .pVP                  pM\        V\
        P                  4      '       d$   V P                  V4      .p\        P                  pMj\        V\        P                  4      '       d8   VP                  V P                  P                  4      .p\        P                  pMV.p\        P                  p. pV F  p\        V\        P                  4      '       d   VVP                  4       ,          pK<  \        V\
        P                  \
        P                  34      '       d#   VP!                  V P                  V4      4       K  \        V\        P                  4      '       d7   VP!                  VP                  V P                  P                  4      4       K  VP!                  V4       K  	  V P                  P"                  V,          pVP%                  4       '       g   VP'                  4       '       d   T P)                  Y;'       g    . 4      pM. pV P                  P"                  P+                  V4      '       * pV'       d~   V P                  P-                  4       '       d^   V P                  P/                  4       '       g#   R V^ ,          ,           R,           p\1        V4      hV P                  P3                  4       pMV^ ,          P5                  R4      '       d   RR.V,           pMV^ ,          P5                  R4      '       dr   \        P$                  ! 4       '       gW   \        P&                  ! 4       '       g<   \        P6                  ! 4       '       g!   VP9                  4       '       g   R.V,           pRpT;'       g    V P                  P;                  4       pT;'       d    \=        R V 4       4      \?        4       8  pV'       d   \@        PB                  ! 4       pR	PE                  R
 V 4       4      pVPG                  VPI                  RRR7      4       VPK                  4       pRV R2p\L        PN                  PE                  V P                  PQ                  4       V4      p\S        VRRRR7      ;_uu_ 4       pVPU                  V4       RV 2.pRRR4       \W        W,           VVVVWEWV
4
      #   + '       g   i     L(; i)zAn exe_wrapper is needed for z` but was not found. Please define one in cross file and check the command and/or add it to PATH.z.jarjavaz-jarz.exemonoNc              3  F   "   T F  p\        V4      ^,           x  K  	  R# 5i)r  N)r  ).0is   & r<   	<genexpr>7Backend.get_executable_serialisation.<locals>.<genexpr>^  s     1Oh#a&1**hs   ! c              3  N   "   T F  p\         P                  ! V4      x  K  	  R # 5irq   )r   	quote_arg)r  args   & r<   r  r  b  s     HxH..s33x   #%r  ignore)r  errors
meson_rsp_z.rspr  
)r  newline@),r   r   r   get_commandfor_machiner
   r  r(  r  r   BUILDr   r   r  r   r@   r  machines
is_windows	is_cygwindetermine_windows_extra_pathsmatches_build_machineneed_exe_wrapperhas_exe_wrapperr   get_exe_wrapperr  is_wslis_os2r  sumr   hashlibsha1r   updateencode	hexdigestr   r   get_scratch_dirr  r  r   )r\   r  r   r  r  r  r   r  r   r   r  exeraw_cmd_argsexe_cmdexe_for_machiner   cr-   r   r   msgr   needs_rsp_filehasherargsdigestscratch_filersp_filefs   &&&&&&&&&&&                  r<   get_executable_serialisation$Backend.get_executable_serialisation  s    !c83344oo'G!ooOU..//33C89G!ooOU//00 33C89G+11OX]]++**4+;+;+F+FGHG+11OeG+11O "A!X5566AMMO+A 1 153E3EFGG < <Q ?@Ax}}-- 1 1$2B2B2M2M NO"  ""++O<7#4#4#6#6<<SBSBSQSTKK!--66LL_]]d..??AA##33555
B FS S$S))**::<Kqz""6**!6*W4$$V,,h6I6I6K6KxOaOaOcOcgogvgvgxgx  }D  }K  }K  }M  }M!(W,K==T--;;= *ffc1Oh1O.OSdSf.f\\^F88HxHHDMM$++wx+HI%%'F'xt4Lww||D$4$4$D$D$FUHhgtDDzN+ E 'w'93'2G'2G3Q_a 	a	 EDs   T::U
	c               D    V ^8  d   QhRRRRRRRRR	RR
RRRRRRRRRRR/# )rF   r  z\T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, programs.ExternalProgram]r   zhT.Sequence[T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, programs.ExternalProgram]]r   r   r  r  r  r  force_serializer   r   r  r  r   rH   zT.Tuple[T.List[str], str]r3   )rI   s   "r<   rJ   r  o  s     c$ c$  )E c$ (Pc$&5c$ +Pc$ '6	c$
 $3c$ /3c$ #Lc$ 04c$ '+c$ 8Qc$r;   c                V   . pVP                  V4       VP                  V4       V P                  WWEWhWR7      p. pVP                  '       d   VP                  R4       VP                  '       d   VP                  R4       V'       d   VP                  R4       \
        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       d   VP                  R4       V'       d$   VP                  '       d   VP                  R	4       VP                  ;'       d    V'       * pT;'       g    \        V4      pV'       d   VP                  R
4       V'       d   VP                  R4       V'       d   VR	.8X  d   \        P                  ! R4      '       dn   . pVP                  / 4      P                  4        F  w  ppVP                  V RV 24       K  	  R.V,           VP                  ,           RP                  V4      3# \
        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       d   VP                  R4       V'       g   V'       g   V'       g   VP                  R3# . pV'       d   VRV.,          pV'       d   VRV.,          pV P                  P!                  4       RR.,           V,           R.,           VP                  ,           RP                  V4      3# \#        V\$        P&                  \(        P*                  \(        P,                  34      '       d+   \.        P0                  P3                  VP4                  4      pMi\#        V\6        P8                  4      '       d+   \.        P0                  P3                  VP:                  4      pM\.        P0                  P3                  V4      p\<        P>                  ! 4       pVP@                  '       d   VP@                  PC                  V4       VPE                  \G        \I        VP                  4      RR7      4       VPE                  \G        \I        VPJ                  4      RR7      4       VPE                  \G        \I        V4      RR7      4       VPE                  \G        \I        V4      RR7      4       VPM                  4       pRV RV R2p\.        P0                  P                  V P                  PO                  4       V4      p\Q        VR4      ;_uu_ 4       p\R        PT                  ! VV4       RRR4       V P                  P!                  4       RRRV.,           RP                  V4      3#   + '       g   i     LF; i)zI
Serialize an executable for running with a generator or a custom target
)r   zto set PATHzto use exe_wrapperzto set workdirc              3  ,   "   T F
  pR V9   x  K  	  R# 5i)r  Nr3   )r  r  s   & r<   r  /Backend.as_meson_exe_cmdline.<locals>.<genexpr>  s     .+Qtqy+s   TFz!because command contains newlinesz
to set envzto capture outputzto feed inputr   =z, c              3  B   "   T F  qP                  R 4      x  K  	  R# 5i)r  N)
startswithr  as   & r<   r  r-    s     6+Q||C  +s   zbecause command is too longr   z	--capturez--feedz
--internalr  z--r  r  
meson_exe_r  z.datwbNz
--unpickle)+r  r  r'  r   r   anyr   varnamescan_use_envr   shutilwhichget_envr  r   r   get_build_commandr   r   r   r
   r  r  r   r   r   r   r   r   r   r  r  r   hashr  bytesr+   r   r  r  r  pickledump)r\   r  r   r   r  r  r  r*  r   r  r   r  esreasonsr7  envlistkvr"  r   r!  r#  r$  exe_datar&  s   &&&&&&&&&&&              r<   as_meson_exe_cmdlineBackend.as_meson_exe_cmdlineo  s    uw

3

8..s[SW^n.  A!>>>NN=)>>>NN/0NN+,3."++.333."++...NN>?3<<<NN<( oo==o*=)::T']NN./NN?+7|n4e9L9LGB--/1!AaSz* 07W$r{{2DIIg4FFF36"++63336"++666NN894{{B& "Dg..4((   224e7LLtSW[V\\_a_j_jj		'" 
 cH44!--u/A/AC D Dww''1HX]]++ww''		2Hww'',H 666FFKKeC,w?@eC

Og>?eCL7;<eCI89!!##H:Qvhd;77<< 0 0 @ @ BLQ(D!!QKKA "  224e\[c7dd		'"$ 	$ "!s   VV(	c                   V ^8  d   QhRR/# )rF   rH   zT.Tuple[str, str]r3   )rI   s   "r<   rJ   r    s     ) )!2 )r;   c                	   \         P                  P                  V P                  P	                  4       R 4      p\        VR4      ;_uu_ 4       pV P                  V4       RRR4       \         P                  P                  V P                  P	                  4       R4      p\        VR4      ;_uu_ 4       pV P                  V4       RRR4       W3#   + '       g   i     Ly; i  + '       g   i     Y3# ; i)zmeson_test_setup.datr4  Nzmeson_benchmark_setup.dat)r   r   r   r   r  r  write_test_filewrite_benchmark_file)r\   	test_datadatafilebenchmark_datas   &   r<   serialize_testsBackend.serialize_tests  s    GGLL!1!1!A!A!CE[\	)T""h  * #d&6&6&F&F&HJef.$''8%%h/ ((( #" ('((s   C3C#C 	#C5	c                    V ^8  d   QhRRRR/# )rF   r   r,  rH   z9T.Tuple[T.Union['Compiler', 'StaticLinker'], T.List[str]]r3   )rI   s   "r<   rJ   r    s       7H   NG r;   c                    \        V\        P                  4      '       d*   V P                  P                  VP                  ,          . 3# VP                  4       w  r#W#3# )z}
If we're building a static library, there is only one static linker.
Otherwise, we query the target for the dynamic linker.
)r   r
   rV  static_linkerr  $get_clink_dynamic_linker_and_stdlibs)r\   r   r  stdlib_argss   &&  r<    determine_linker_and_stdlib_args(Backend.determine_linker_and_stdlib_args  sO    
 fe1122::++F,>,>?CCDDF~r;   c                    V ^8  d   QhRRRR/# )rF   r   r+   rH   r3   )rI   s   "r<   rJ   r    s      S S r;   c                	Z   \         P                  P                  eC   V P                  \         P                  P                  \         P                  P                  4      p V P                  \         P                  P                  4      pRp\        V4      ^8  dq   RP                  VRR  4      p\        V 4      \        V4      ^),           8  d=   \        P                  ! V P                  R4      4      P                  4       R,           pTp R F  pV P                  VR4      p K  	  W ,           # )Nr   /r  r  )rZ  \:)r   r   altseprT  sepsplitr  r   r  r  r  r  )r   partshashedtempchs   &    r<   canonicalize_filenameBackend.canonicalize_filename  s     77>>%MM"''.."''++>EBGGKK(u:>88E"#J'D5zCIN* ell7&;<FFH3N"BMM"c*E #~r;   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rF   r   r,  r/   r    sourcez'FileOrString'	targetdirr   rH   r+   r3   )rI   s   "r<   rJ   r    s;     , ,2C ,x ,ao ,  }L ,  X[ ,r;   c                	   \        V\        P                  4      '       g   Q h\        V\        P                  4      '       d   VP
                  V,          # V P                  P                  4       pVP                  V P                  4      pVP                  R
4      '       d   VP                  '       dj   \        P                  P                  V4      '       d   V\        V4      ^,           R p\        P                  P!                  W`P#                  V4      4      pM\        P                  P%                  V4      pRVRR ,           R,           pEM+VP                  '       dq   \        P                  P                  V4      '       d   V\        V4      ^,           R pR\        P                  P!                  W`P#                  V4      4      ,           pM\        P                  P                  V4      '       d   TpM\        P                  P!                  \        P                  P'                  WV4      \        P                  P'                  V P                  P)                  4       VP+                  4       4      4      pV P                  P,                  VP.                  ,          pVP1                  4       p	VP3                  4       R8X  d   V P5                  VR4      p
V
'       g3   \        V\        P6                  4      '       d|   VP8                  '       dj   VP;                  R^4      ^,          \<        R,          9   g?   \        V\        P6                  4      '       d   VP8                  '       g   \?        R4      hMR	p	V PA                  V4      R,           V	,           pVe    \        P                  P'                  WK4      # V# ).valaNzmeson-generated_z.ctaskingb_ltorF  r  zTried using MIL linking for a static library with a assembly file. This can only be done if the static library is prelinked or disable 'b_lto'.mil)rk  z.gsr[  )!r   r   r   r
   CompileTargetsources_mapr   r  r  r	  r  r  r   r   isabsr  r  r{  r   r   r  r<  r	  r  get_object_suffixget_idr  rV  prelinkrsplitr   r   re  )r\   r   r/   rh  ri  rA   rel_src
gen_sourcer-   object_suffixuse_ltorets   &&&&&       r<   object_filename_from_source#Backend.object_filename_from_source  s   &(--0000fe1122%%f--$$224	(():):; ,--77==))%c)nq&8&9:G''//'3N3Nv3VW''**73+gcrl:TAJ___ww}}W%%!#i.1"4"56+bggoogGbGbciGj.kkJww}}W%%$
WW__RWW\\)-M-/WW\\$:J:J:Y:Y:[]c]n]n]p-qs
""++F,>,>?113??	),,VW=G:fe.A.ABBv~~~}}S!,Q/=3EE!&%*=*=>>v~~~2  4G  H  H$)M((4s:]J 77<<	//
r;   c                    V ^8  d   QhRRRR/# )rF   extobjz'build.ExtractedObjects'rH   r.   r3   )rI   s   "r<   rJ   r  '  s     8 8*B 8{ 8r;   c                	*   . pV P                  VP                  4      p\        VP                  4      pVP                   F[  pVP                  4        FD  pV P                  VP                  WV4      pVP                  \        P                  ! V4      4       KF  	  K]  	  . pV Fo  p	\        P                  ! V	4      '       d   VP                  V	4       K2  \        P                  ! V	4      '       g   KP  VP                  V	P                  4       4       Kq  	  VP                  '       d   V P                  VP                  4      '       d   VP                  P                  P!                  4        F  w  rV'       g   K  VP                  P                  V
,          pVP#                  4       R 8X  g   KC  V P%                  W4      pVP                  \&        P(                  P+                  W=4      4       K  	  V'       g   V# V P-                  VP                  4      '       Ed   \/        VP                  P                  P1                  4       V4      p. pV P3                  VP                  R4      p\5        V\6        4      '       g   Q R4       hVP!                  4        F  w  ppVP8                  \:        9   d   VV,          pK&  \=        \?        V4      V,           ^,
          V,          4       F?  pV PA                  VP                  VPC                  4       V4      pVP                  V4       KA  	  K  	  V F`  p\E        VP                  P                  P1                  4       V4      pV PG                  VP                  VVV4      pVP                  V4       Kb  	  V# )msvcr  r  )$r{  r   listsrclistgenlistr  r  r  r   from_built_relativer   	is_source	is_objectrelative_namepchtarget_uses_pchr  get_argument_syntaxget_msvc_pch_objnamer   r   r   is_unityr   r  r  r   r   r,   LANGS_CANT_UNITYranger  r  r  r   r{  )r\   r~  r  ri  raw_sourcesr  rr   r1   r  langr  r/   objnamer  r  r  r  r  _srcr  s   &&                   r<   r  Backend._determine_ext_objs&  s    //>	 6>>*nnF'')44V]]FN""4#;#;D#AB * % +-A""1%%q!$$Q''aoo/0	  :::$..v}}==#]]..446	3%}}66t<H335?"&";";D"Fbggll9&FG 7 M
 ==''-fmm.E.E.L.L.NPWXHG//|LJj#..:
:.&nn.
d==$44tOGD	J 6 :zIJA55fmm6:6M6M6OQRTDNN4( K	 / D.v}}/F/F/M/M/OQUVH66v}}hPTV_`GMM'" 
 r;   c               $    V ^8  d   QhRRRRRR/# )rF   r/   r9  r   r,  rH   r.   r3   )rI   s   "r<   rJ   r  a  s#     " "Z "AR "Wb "r;   c                	    . pV P                  V4      pVP                  VR 4      pVP                  P                  VP	                  4       4      pV'       d   W1P                  WF^ ,          4      ,          pWS,           # r;  )r{  r>  r  getget_languageget_pch_use_args)r\   r/   r   r"  pchpathincludeargsps   &&&    r<   get_pch_include_argsBackend.get_pch_include_argsa  sg    --f5//?JJNN80023--gt<<D!!r;   c               $    V ^8  d   QhRRRRRR/# )rF   r  r+   r  zT.Tuple[str, T.Optional[str]]rH   r3   )rI   s   "r<   rJ   r  j  s#     4 4 43P 4UX 4r;   c                	    V^,          f   RV R2# \         P                  P                  V^,          4      ^ ,          R,           # )r  
meson_pch-z.obj)r   r   splitext)r\   r  r  s   &&&r<   r  Backend.get_msvc_pch_objnamej  s=    q6>vT**wwA'*V33r;   c               (    V ^8  d   QhRRRRRRRR/# )rF   r   r,  r  r+   
pch_headerrH   r3   )rI   s   "r<   rJ   r  p  s+        5F  c  _b  gj  r;   c                	<   R V RV 2p\         P                  P                  V P                  V4      V4      p\         P                  P                  V P                  V4      p\         P
                  ! \         P                  P                  V4      RR7       R\         P                  P                  V4       R2pVR,           p\        VRRR	7      ;_uu_ 4       p	V	P                  V4       R
R
R
4       \        P                  ! Wh4       V#   + '       g   i     L(; i)r  rF  Texist_okz
#include ""r  r  r  r  N)r   r   r   r{  rA   r  rh  r   r  r  r   r  )
r\   r   r  r  	impl_namepch_rel_to_buildpch_filecontentpch_file_tmpr&  s
   &&&&      r<   create_msvc_pch_implementation&Backend.create_msvc_pch_implementationp  s     !av.	77<<(C(CF(KYW 77<<0@A
BGGOOH-=rww//
;<A>&(,g66!GGG 7%%h= 76s   DD	c                    V ^8  d   QhRRRR/# r  r3   )rI   s   "r<   rJ   r    s      &7 D r;   c                	     \         P                  ! R V P                  VR4      4      #   \        \        3 d     R# i ; i)r   b_pchF)Tcastr  KeyErrorAttributeErrorr'  s   &&r<   r  Backend.target_uses_pch  s<    	66&$"8"8"IJJ.) 		s   &) >>c                    V ^8  d   QhRRRR/# )rF   r"  r.   rH   r3   )rI   s   "r<   rJ   r    s        r;   c                	    . pV  F=  pVP                  R4      '       d   VP                  RR4      pVP                  V4       K?  	  V# )-Dr\  z\\)r  z/D)r0  rT  r  )r"  
extra_argsr  s   &  r<   escape_extra_argsBackend.escape_extra_args  sH     #%
C~~l++kk$/c" 
 r;   c               $    V ^8  d   QhRRRRRR/# )rF   r   z'build.BuildTarget'r/   r9  rH   r.   r3   )rI   s   "r<   rJ   r    s#      )< 
 Wb r;   c                	    VP                   V P                  P                  VP                  ,          9   d   VP	                  4       # . # rq   )r,   r
   stdlibsr  get_no_stdinc_args)r\   r   r/   s   &&&r<   get_no_stdlib_argsBackend.get_no_stdlib_args  s9    

 2 263E3E FF..00	r;   c               $    V ^8  d   QhRRRRRR/# )rF   r   r,  r/   r9  rH   z'CompilerArgs'r3   )rI   s   "r<   rJ   r    s)     l l3D lPZ l_m lr;   c           
     	   VP                  4       pW0P                  W4      ,          pW2P                  4       ,          pW2P                  \        P
                  ! R V P                  VR4      4      4      ,          pV P                  VR4      '       d   W2P                  4       ,          pW2P                  WP                  4      ,          pW2P                  WP                  4      ,          pV P                  VR4      p\        V\        4      '       g   Q R4       hW2P                  V4      ,          pV P                  VR4      p\        V\        4      '       g   Q R4       hW2P                  V4      ,          pW0P                   P#                  W!P                  VP$                  4      ,          pW0P                   P'                  W!P$                  4      ,          pW0P(                  P*                  P-                  VP$                  VP/                  4       4      ,          pRV9   d    RV9   g   RV9   d   VP1                  R4       \        V\         P2                  4      '       d   W2P5                  4       ,          p\        V\         P6                  4      '       d*   VP8                  '       d   W2P5                  4       ,          pMX\        V\         P6                  \         P:                  34      '       d)   VP<                  '       d   W2P?                  4       ,          p\A        VPC                  4       4       F  pVPE                  4       '       g   K  VPF                  R	8X  d   VPH                  R
8X  d9   \        V\J        PL                  4      '       g   Q hVRVPN                  .,          pMO\        V\J        PP                  4      '       d   W6PS                  R	4      ,          pMW2PU                  V4      ,          p\        V\         P:                  4      '       g   K  W6PW                  V4      ,          pEK   	  VPF                  R	8X  Ed   VPX                   EFv  pVPN                  R8X  g   K  VPH                  R
8X  d   \        V\J        PL                  4      '       g   Q hVPZ                  eP   VPZ                   F=  pVP]                  R4      '       g   K  VRVR,          P_                  4       .,          p K  	  K  K  \        V\J        P`                  4      '       g   K  VPb                  f   K  VPb                  Pe                  R4      p\g        V4      ^8w  d&   \h        Pj                  ! RVPb                   24        MP \        \m        V^,          4      ^,          ^,          4      V^&   TRT^ ,           RT^,           2.,          pEKy  	  VPF                  R8X  dQ   \q        VPr                  VPt                  4       F,  p	V Pw                  V	4      p
W2Py                  V
R4      ,          pK.  	  V#   \n         d)    \h        Pj                  ! RTPb                   24         K  i ; i)r+   warning_levelwerroroptimizationr  debugz/Ziz/ZIz/Z7vala	pkgconfigz--pkgzglib-2.0z--target-glibrF   NNrF  z$GLib version has unexpected format: fortranF)z>=z==)=compiler_argsr  get_always_argsget_warn_argsr  r  r  get_werror_argsget_option_compile_argsr   get_option_std_argsr   r+   get_optimization_argsr   get_debug_argsr
   get_project_argsr  get_global_argsr   rd  get_external_argsr  removerN  get_pic_argsrV  picrX  pieget_pie_argsreversedget_external_depsfoundr,   	type_namer   ExternalDependencyr   ExternalLibraryget_link_argsget_dependency_compile_argsget_exe_args
added_depsversion_reqsr0  r   InternalDependencyrk   r`  r  r   r  r   
ValueErrorr   r  link_whole_targetsr{  r>  )r\   r   r/   commandsr  r  depreqglib_versionltpriv_dirs   &&&        r<   generate_basic_compiler_args$Backend.generate_basic_compiler_args  s     ))+
 	++F==,,..**166%9O9OPVXg9h+ijj
 !!&(330022H 	44V=N=NOO009J9JKK--fnE,,,8j8,22<@@&&vw7%&&2
2&++E22 	JJ//:K:KVM_M_`` 	JJ..x9K9KLL 	$$--??@R@RT\TiTiTkll XUh%6EX<MOOE"fe1122--//Hfe1122vzzz--//H!4!4e6F6F GHHVZZZ--//H
 F4467C99;;  F*==K/%c<+J+JKKKK#(( 33H\%A%ABB 1 1& 99H@@EE &%"2"233,,X66 8$ &((88z)}}3)#|/N/NOOOO++7'*'7'7#&>>,#?#?$,#b'--/0R$RH$) (8 8
 $C)H)HIIckkNe'*{{'8'8'=|,1 LL+OPSP[P[})]^!" /23|A3G13LPQ2Q.RLO !_a8I<XY?J[6\$]]- )2 	)F//1J1JK66r:55hFF L   * " LL+OPSP[P[})]^!"s   =,X//.Y"!Y"c               $    V ^8  d   QhRRRRRR/# )rF   r/   r9  r  zT.List[build.Target]rH   r.   r3   )rI   s   "r<   rJ   r    s#      J FZ _j r;   c                	   . pV F  pVP                  4       '       g   \        R VP                  4        R24      hV P                  V4      pV'       g   KQ  VP	                  4       R8X  d   RV,           pMDVP                  4       R8X  d   VP                  R4      '       d   MVP                  4       V,           pVP                  V4       K  	  V# )z)Tried to link with a non-library target "z".r  z-Wl,nvlinkrL  )	rW  r  get_basenamer\  r  get_linker_idr  get_linker_lib_prefixr  )r\   r/   r  r"  r  r  s   &&&   r<   build_target_link_arguments#Backend.build_target_link_arguments  s    A''))"%Nq~~O_N``b#cdd66q9C$$&#-sl'')X5#,,t:L:L 446<KK' ( r;   c                    V ^8  d   QhRRRR/# r  r3   )rI   s   "r<   rJ   r    s      ,= + r;   c                	   \        4       pV P                  P                  VP                  ,          P	                  4       pV'       d0   VP                  \        P                  P                  VR 4      4       V P                  P                  VP                  ,          P                  4       pV'       d0   VP                  \        P                  P                  VR 4      4       \        V\        P                  4      '       d`   VP                  P                  4        FA  pVP                  VP!                  4       4       VP                  VP#                  4       4       KC  	  \%        V4      # )bin)r   r   
propertiesr  get_rootaddr   r   r   get_sys_rootr   r
   r  r   r  r  get_program_dirsget_library_dirsr  )r\   r   pathsrootsys_rootccs   &&    r<   get_mingw_extra_pathsBackend.get_mingw_extra_paths  s    !+**6+=+=>GGIIIbggll4/0##..v/A/ABOOQIIbggll8U34fe//00&&--/R0023R0023 0 E{r;   c                    V ^8  d   QhRRRR/# )rF   link_argr+   rH   r   r3   )rI   s   "r<   rJ   r  0  s      # / r;   c           	     	@   V P                  R	4      '       d
   V R,          p \        V 4      pVP                  4       '       g   R#  VP                  RR7      pTP
                  P                  R4       F  p\        TP
                  4      u # 	  TP                  4       '       d   TP
                  p\        RP                  TP                  4       P                  R^R7      4      4      pTP                  R4       F  p\        T4      u # 	  R#   \         d     R# i ; i)
-lr  NT)strictz*.dllz/binz/lib)maxsplit)r  z-L)r0  r	   is_absoluteresolveFileNotFoundErrorparentglobr+   is_filer   rU  ru  )r  r  r&  binpathr  s   &    r<   search_dll_pathBackend.search_dll_path.  s     |,,|HN}}				&A w'Aqxx=  ( 99;;Av{{1::<#6#6v#6#JKLg&Aw< '  ! 		s   D DDc                    V ^8  d   QhRRRR/# )rF   r   r,  rH   z
T.Set[str]r3   )rI   s   "r<   rJ   r  L  s      '8 Z r;   c           
        \        4       pVP                   F{  pVP                  R8X  d/   VP                  RRR7      pV'       d   VP	                  V4       KB  VP                  \        R\        V P                  VP                  4      4      4       K}  	  \        VP                  VP                  4       FE  p\        V\        P                  4      '       g   K%  VP                  V P!                  V4      4       KG  	  V# )a  Find paths to all DLLs needed for a given target, since
we link against import libs, and we don't know the actual
path of the DLLs.

1. If there are DLLs in the same directory than the .lib dir, use it
2. If there is a sibbling directory named 'bin' with DLLs in it, use it
r  bindirr   )r  default_valueN)r  external_depsr  get_variabler  r  filtermapr  	link_argsr   r  r  r   r
   r  extract_dll_paths)rU   r   resultsr  r  r  s   &&    r<   r$  Backend.extract_dll_pathsJ  s     %''C}}+))HB)OKK'NN6$C,?,?(OPQ ( v**F,E,EFA!U..//s44Q78 G r;   c               $    V ^8  d   QhRRRRRR/# )rF   r   zMT.Union[build.BuildTargetTypes, programs.ExternalProgram, mesonlib.File, str]r  z"T.Sequence[build.BuildTargetTypes]rH   r.   r3   )rI   s   "r<   rJ   r  f  s$     !9 !9g!9;!9@K!9r;   c                   \        4       p\        4       p\        4       p\        V\        P                  4      '       d    VP	                  VP                  4       4       V FU  pVP                  V4       \        V\        P                  4      '       g   K6  VP	                  VP                  4       4       KW  	  V F[  p\        P                  P                  V P                  P                  4       V P                  V4      4      pVP                  V4       K]  	  \        V\        P                  4      '       dv   VP	                  V P                  V4      4       V P                  P                  P                  VP                   4      '       g!   VP	                  V P#                  V4      4       \%        V4      \%        V4      ,           # )zOn Windows there is no such thing as an rpath.

We must determine all locations of DLLs that this exe
links to and return them so they can be used in unit
tests.
)r  r   r
   r  r  get_all_link_depsr  r   r   r   r   r  r   r$  r	  r  r  r
  r  )	r\   r   r  prospectivesinternal_depsr  bdeplddirsegs	   &&&      r<   r  %Backend.determine_windows_extra_pathsf  sM    7:e$'E$'Efe//00 8 8 :;DT"$ 1 122##D$:$:$<=   BWW\\$"2"2"@"@"BDDWDWXZD[\Ff%  fe//00  !7!7!?@##,,BB6CUCUVV$$T%?%?%GHM"T-%888r;   c                    V ^8  d   QhRRRR/# rF   rM  
T.BinaryIOrH   rn   r3   )rI   s   "r<   rJ   r    s     M MZ MD Mr;   c                	Z    V P                  V P                  P                  4       V4       R # rq   )write_test_serialisationr
   get_benchmarksr\   rM  s   &&r<   rK  Backend.write_benchmark_file  s    %%djj&?&?&A8Lr;   c                    V ^8  d   QhRRRR/# r1  r3   )rI   s   "r<   rJ   r    s     H H
 Ht Hr;   c                	Z    V P                  V P                  P                  4       V4       R # rq   )r4  r
   	get_testsr6  s   &&r<   rJ  Backend.write_test_file  s    %%djj&:&:&<hGr;   c                    V ^8  d   QhRRRR/# )rF   testsT.List['Test']rH   zT.List[TestSerialisation]r3   )rI   s   "r<   rJ   r    s     Z Z~ ZB[ Zr;   c                	  a . p\        VR  R7       EF  pVP                  4       p\        V\        P                  4      '       d   VP                  4       pMH\        P                  P                  V P                  P                  4       V P                  V4      4      .p\        V\        P                  \        P                  34      '       d   VP                  pM\        P                   pVP"                   FU  p\        V\        P                  4      '       g   K%  VP                  \        P$                  J g   KE  \        P$                  p M	  V P                  P'                  V4      pV P                  P)                  4       p	V P                  P*                  VP                  ,          p
V
P-                  4       '       g   V
P/                  4       '       d   . p\        V\        P0                  4      '       d   \3        VP5                  4       4      pVP7                  VP8                  4       VP7                  R VP"                   4       4       V P;                  WK4      pM. p. p\=        VP8                  4      p\        V\        P>                  4      '       d   VPA                  V4       VP"                   EF  p\        V\        P>                  4      '       d   VPA                  V4       M;\        V\        PB                  4      '       d   VPA                  VPD                  4       \        V\F        PH                  4      '       de   \        P                  P                  V P                  P                  4       VPK                  V PL                  4      4      pVPO                  V4       K  \        V\P        4      '       d   VPO                  V4       EK  \        V\        P>                  \        PB                  34      '       d.   VP7                  V PS                  WsPT                  4      4       EK|  \        V\        P                  4      '       d#   VP7                  VP                  4       4       EK  \W        R4      h	  \X        PZ                  ! VP\                  4      pV
P-                  4       '       Eg   V
P/                  4       '       Eg   \=        4       pV Fo  p\        V\        P                  4      '       g   K%  VP_                  4        F6  p\        V\        P`                  4      '       g   K%  VPA                  V4       K8  	  Kq  	  V P                  P                  4       o\=        V3R lV 4       4      pV'       dO   VPc                  R\3        V4      R4       V
Pe                  4       '       d   VPc                  R\3        V4      R4       \g        VPi                  4       VPj                  VPl                  YXYP                  Po                  4       VPp                  YVPr                  VPt                  VPT                  YPv                  VPx                  \        V\        P>                  \        PB                  34      \        V\        Pz                  4      V Uu. uF  pVP}                  4       NK  	  upV P                  P~                  P                  VP                  4      pVPO                  V4       EK  	  V# u upi )c                (    RV P                   ,          # )r  )r   )tsts   &r<   <lambda>3Backend.create_test_serialisation.<locals>.<lambda>  s    rCLL/@r;   )keyc              3  j   "   T F)  p\        V\        P                  4      '       g   K%  Vx  K+  	  R # 5irq   )r   r
   r  r1  s   & r<   r  4Backend.create_test_serialisation.<locals>.<genexpr>  s!     "]jJq%J[J[<\11js   "3
3zBad object in test command.c              3     <"   T F3  p\         P                  P                  SVP                  4       4      x  K5  	  R # 5irq   )r   r   r   rG  )r  r  env_build_dirs   & r<   r  rG    s-     -veu`abggll=!..JZ.[.[eus   ;>LD_LIBRARY_PATHr]  DYLD_LIBRARY_PATH)Bsortedget_exer   r   r   r  r   r   r   r   r  r"  r
   r  r  r   r  r   HOSTis_cross_buildr  r	  r
  r  r  r   get_transitive_build_target_depsr  r   r  r  Targetr  r  r   r   r   r  r	  r  r+   construct_target_rel_pathsr   r   copydeepcopyr   r)  rN  prepend	is_darwinr   get_namer   r   r  r   r   r   r   r   rX  rs  rd  rk   r   )r\   r=  arrr  r  r  test_for_machiner2  is_crossr   r-   r  r   r   r   t_envld_lib_path_libsr  r  ld_lib_pathr  tsrI  s   &&                    @r<   create_test_serialisation!Backend.create_test_serialisation  s   )+#@AAA))+C#x7788oo'ww||D$4$4$B$B$DdF^F^_bFcde# 1 183K3KLMM#&??  $1#6#6  ZZa!2!233}}(:(::+8+=+=(	   ''667GHH**::<K&&//@G!!##w'8'8':':>@c5#5#566"&s'K'K'M"NK""199-"""]ajj"]]"@@R $&H+.qyy>G#u||,,C ZZa..KKN5#:#:;;KK)a//T%5%5%C%C%EqGXGXY]YjYjGklAOOA&3''OOA&ELL%2I2I#JKKOOD$C$CAyy$QR8#;#;<<OOAMMO4()FGG!  , MM!%%(E%%''0A0A0C0C?Bu  A!!U%6%677!"!4!4!6A)!U-@-@AA 0 4 4Q 7 "7 ! !% 0 0 > > @*--veu-v*vMM"3T+5FL((**&94;LcR"1::<##.0@0@0Q0Q0S#$==(#$==!))QYY#.

AJJ#-cELL%BYBY3Z#[#-c53C3C#D8?#@1AHHJ#@#'#3#3#<#<#D#D#$99	.B JJrNo Bp 
	 $As   #\.c               $    V ^8  d   QhRRRRRR/# )rF   r=  r>  rM  r2  rH   rn   r3   )rI   s   "r<   rJ   r    s'     E En E
 EW[ Er;   c                	R    \         P                  ! V P                  V4      V4       R # rq   )r>  r?  r_  )r\   r=  rM  s   &&&r<   r4   Backend.write_test_serialisation  s    D22598Dr;   c               $    V ^8  d   QhRRRRRR/# )rF   r  r  r   r   rH   r.   r3   )rI   s   "r<   rJ   r    s#      ,? / ^i r;   c                	*   V P                  V4      p\        V\        P                  4      '       d   Vf   T;'       g    Rp\        V\        P                  4      '       d   VP                  4       .pMB\        V\        P                  \        P                  34      '       g   Q hVP                  4       pV Uu. uF"  p\        P                  P                  W54      NK$  	  ppVe   \        P                  P                  V4      '       g   Q hV Uu. uF;  p\        P                  P                  V P                  P                  4       V4      NK=  	  ppV Uu. uF"  p\        P                  P                  WR4      NK$  	  ppV# u upi u upi u upi )NrF  )r   r   r
   rX  r  r  r  r  r  r   r   r   rq  r   r  r  )r\   r  r   rn  outputsr  s   &&&   r<   rR  "Backend.construct_target_rel_paths  s0   ((+
a))**w#**sJa**++~~'(Ga%"4"4e6M6M!NOOOOmmoG8?@1277<<
.@77==))))RYZRYQrww||D$4$4$B$B$DaHRYGZ<CDGqrwwq2GGD A [Ds   :(FAF(Fc                    V ^8  d   QhRRRR/# rF   r  re   rH   rn   r3   )rI   s   "r<   rJ   r    s     ] ] ] ]r;   c                	   V P                   P                  pVf   V P                  P                  P                  P                  \        R4      4      p\        V\        4      '       g   Q R4       hV'       d"   \        P                  P                  VR4      pMR # \        P                  P                  V P                  P                  4       R4      p\        P                  P                  V P                  P                  4       V4      p\        P                  P                  V P                  P                  4       \        P                  P                  V4      4      p\        P                  P                  RV4      p\        P                  P                  R\        P                  P                  V4      4      pRRRRR	V P                   P                  P!                  4        U	U
u/ uF  w  rWP#                  4       bK  	  up
p	/p\%        VR
RR7      ;_uu_ 4       pVP'                  \(        P*                  ! V4      4       R R R 4       VP,                  P/                  \1        WEVR RRRR7      4       V P                   P                  P3                  4        F  pVP5                  4        Fw  w  rN\        P                  P                  Wn4      p\        P                  P                  W4      pVP,                  P/                  \1        WEVR VP6                  RRR7      4       Ky  	  K  	  R # u up
p	i   + '       g   i     L; i)N
licensedirr  z
depmf.jsonr   r[   zdependency manifestrk   z1.0projectsr  r  r  r   develdepmf)r   r   )r
   dep_manifest_namer   rd  re  rf  r   r   r+   r   r   r   r  
get_prefixrh  dep_manifestr  to_jsonr  r  jsondumpsrv   r  r   r  license_mappingr   )r\   r  
depmf_path
option_dir	ifilename	ofilenameodirnamer   out_dirrC  rD  mfobjr&  mr   s   &&             r<   generate_depmf_installBackend.generate_depmf_install  sB   ZZ11
))22;;II)T`JabJj#..:
:.WW\\*lC
GGLL!1!1!?!?!A<P	GGLL!1!1!<!<!>
K	77<< 0 0 ; ; =rwwz?Z[77<<
J7'',,z277??:+FG.	59P9P9V9V9XY9Xan9XY[)S733qGGDJJu%& 4 	
oiHdB*1WF 	G((//1A#$#4#4#6	GGLL8	77<<6oiHd./llSZ\ ] $7 2 Z33s   )L/&L55M	c                   V ^8  d   QhRR/# )rF   rH   r.   r3   )rI   s   "r<   rJ   r    s     
 
K 
r;   c           
        \        V P                  P                   Uu. uF(  p\        \	        V P
                  4      V,          4      NK*  	  up4      pV P                  P                  4       '       d0   VP                  V P                  P                  P                  4       VP                  V P                  P                  P                  4       VP                  R4       V P                  V4       \        V4      # u upi )z[List of all files whose alteration means that the build
definition needs to be regenerated.zmeson-private/coredata.dat)r   r
   	def_filesr+   r	   r	  r   rO  r  rd  cross_filesconfig_filesr  check_clock_skewr  )r\   dfr  s   &  r<   get_regen_filelistBackend.get_regen_filelist  s     %)ZZ%9%9;%9r tD$5$56;<%9; <**,,KK((11==>D$$--::;-.d#Dz;s   .C>c                   V ^8  d   QhRR/# rm   r3   )rI   s   "r<   rJ   r  )  s     & &T &r;   c                	   V P                  4       p\        V P                  P                  4       V P                  P	                  4       V4      p\
        P                  P                  V P                  P                  4       R 4      p\        VR4      ;_uu_ 4       p\        P                  ! W$4       RRR4       R#   + '       g   i     R# ; i)zregeninfo.dumpr4  N)r  r?   r   r  r  r   r   r   r  r  r>  r?  )r\   r  	regeninfor!  r&  s   &    r<   generate_regen_infoBackend.generate_regen_info)  s    &&(d..==?"..<<>"$	 77<< 0 0 @ @ B 02(D!!QKK	% "!!!s   B;;C	c                    V ^8  d   QhRRRR/# )rF   	file_listzT.Iterable[str]rH   rn   r3   )rI   s   "r<   rJ   r  3  s     w w/ wd wr;   c                	2   ^ RI pVP                  4       pV F|  p\        P                  P                  V P                  P                  4       V4      p\        P                  P                  V4      pWc,
          pVR8  g   Kk  \        RV RVR R24      h	  R# )r   NgMbP?zClock skew detected. File z has a time stamp z.4fzs in the future.)timer   r   r   r   r  getmtimer   )r\   r  r  nowr&  absfftimedeltas   &&      r<   r  Backend.check_clock_skew3  s     	iikA77<< 0 0 > > @!DDGG$$T*EKE u}$'A$GYZ_`cYddt%uvv r;   c                    V ^8  d   QhRRRR/# )rF   btz4T.Union[build.BuildTarget, programs.ExternalProgram]rH   r.   r3   )rI   s   "r<   rJ   r  C  s      ,` ep r;   c                	    \        V\        P                  4      '       dK   \        P                  P                  V P                  P                  4       V P                  V4      4      .pV# VP                  4       pV# rq   )
r   r
   r  r   r   r   r   r  r"  r  )r\   r  rX  s   && r<   build_target_to_cmd_array!Backend.build_target_to_cmd_arrayC  sa    b%++,,77<< 0 0 > > @$BZBZ[]B^_`C 
 .."C
r;   c               $    V ^8  d   QhRRRRRR/# )rF   r"  r.   r  z'build.GeneratedList'rH   r3   )rI   s   "r<   rJ   r  J  s#      { =R Wb r;   c                	|    . pV F3  pVR 8X  d   W2P                  4       ,          pK"  VP                  V4       K5  	  V# )z@EXTRA_ARGS@)get_extra_argsr  )r\   r"  r  
final_argsr2  s   &&&  r<   replace_extra_argsBackend.replace_extra_argsJ  s@    "$
AN"4466
!!!$	 
 r;   c               (    V ^8  d   QhRRRRRRRR/# )rF   r"  r.   private_dirr+   output_listrH   r3   )rI   s   "r<   rJ   r  S  s*      K c P[ `k r;   c           	     	f   . p\         P                  ! R 4      pV F  pVP                  V4      pVej   \        VP	                  ^4      4      pRV R2p	VP                  V	\        P                  P                  W#V,          4      4      pVP                  V4      pKm  VP                  V4       K  	  V# )z@OUTPUT(\d+)@z@OUTPUTr  )
rR  compilesearchr   grouprT  r   r   r   r  )
r\   r"  r  r  newargsregexr  r}  indexr  s
   &&&&      r<   replace_outputsBackend.replace_outputsS  s    !

+,CS!A-AGGAJwa(kk#rww||KUAS'TULL%NN3  r;   c                   V ^8  d   QhRR/# )rF   rH   zD'T.OrderedDict[str, T.Union[build.BuildTarget, build.CustomTarget]]'r3   )rI   s   "r<   rJ   r  `  s      .r r;   c                	    \        4       pV P                  P                  4       P                  4        F  w  r#VP                  '       g   K  W1V&   K  	  V# rq   )r   r
   get_targetsr  build_by_default)r\   r  r   bs   &   r<   get_build_by_default_targets$Backend.get_build_by_default_targets`  sF    WbWdzz--/557GD!!! t 8 r;   c                    V ^8  d   QhRRRR/# )rF   	benchmarkr   rH   z:T.Iterable[T.Union[build.BuildTarget, build.CustomTarget]]r3   )rI   s   "r<   rJ   r  h  s      d ?y r;   c              #  	|  "   V'       d   V P                   P                  4       MV P                   P                  4       pV EFt  pVP                  p\	        V\         P
                  4      '       d   VP                  x  M4\	        V\         P                  \         P                  34      '       d   Vx  VP                   Fi  p\	        V\         P
                  4      '       d   VP                  x  K3  \	        V\         P                  \         P                  34      '       g   Ke  Vx  Kk  	  VP                   Fx  p\	        V\         P                  \         P                  \         P
                  34      '       g   Q h\	        V\         P
                  4      '       d   VP                  x  Kt  Vx  Kz  	  EKw  	  R # 5irq   )r
   r5  r:  r  r   r  r   r  r  r   r   )r\   r  rr   r  r  r  r  s   &&     r<   get_testlike_targetsBackend.get_testlike_targetsh  s'    1:$**++-

@T@T@VA%%C#u6677jj C%"4"4e6G6G!HII	zzc5#:#:;;**$e&8&8%:K:K%LMMI	 "
 yy!#(:(:E<M<MuOfOf'ghhhhc5#:#:;;**$I ! s   DF<%BF<c                    V ^8  d   QhRRRR/# )rF   generated_sourcebuild.CustomTargetrH   'ImmutableListProtocol[str]'r3   )rI   s   "r<   rJ   r  }  s       Oa   gC r;   c                	    . pVP                  4        F_  p\        P                  ! V4      '       g   K!  VP                  \        P
                  P                  V P                  V4      V4      4       Ka  	  V# rq   )r  r   
is_libraryr  r   r   r   r   )r\   r  libsr&  s   &&  r<   .get_custom_target_provided_by_generated_source6Backend.get_custom_target_provided_by_generated_source|  sZ    !--/A##A&&BGGLL)<)<=M)NPQRS 0 r;   c                    V ^8  d   QhRRRR/# )rF   r   z.T.Union[build.BuildTarget, build.CustomTarget]rH   r  r3   )rI   s   "r<   rJ   r    s       ;i   oK r;   c                	    . pVP                  4        FE  p\        V\        P                  4      '       g   K%  VP	                  V P                  V4      4       KG  	  V# rq   )get_generated_sourcesr   r
   r  r  r  )r\   r   r  r  s   &&  r<   $get_custom_target_provided_libraries,Backend.get_custom_target_provided_libraries  sN    --/Aa!3!344KKKKANO 0 r;   c                    V ^8  d   QhRRRR/# )rF   r   r  rH   r.   r3   )rI   s   "r<   rJ   r    s      0B { r;   c           	     R   . pVP                  4        EF  p\        V\        4      '       d9   \        P                  P                  V P                  VP                  V4      .pEM\        V\        P                  4      '       d   V P                  V4      .pEM\        V\        P                  \        P                  34      '       dO   VP                  4        Uu. uF2  p\        P                  P                  V P                  V4      V4      NK4  	  ppEM\        V\        P                  4      '       dN   VP                  4        Uu. uF2  p\        P                  P                  V P!                  V4      V4      NK4  	  ppM\        V\        P"                  4      '       d   V P%                  V4      pM|\        V\&        P(                  4      '       dA   VP+                  4       '       g   Q R4       hVP                  f   Q R4       hVP                  .pMVP-                  V P                  4      .pVP.                  '       dH   V Uu. uF;  p\        P                  P                  V P0                  P3                  4       V4      NK=  	  ppW$,          pEK  	  V# u upi u upi u upi )z
Custom target sources can be of various object types; strings, File,
BuildTarget, even other CustomTargets.
Returns the path to them relative to the build root directory.
zThis shouldn't be possibler  )get_sourcesr   r+   r   r   r   r	  subdirr
   r  r"  r  r  r  get_custom_target_output_dirGeneratedListr{  r  r  r   r   r  r  absolute_pathsr   r  )r\   r   r  r  r   r  r&  s   &&     r<   get_custom_target_sources!Backend.get_custom_target_sources  s    ##%A!S!!d&7&7JKAu001111!45A 2 2E4K4KLMMXYXeXeXghXgSTd&G&G&JANXghAu2233WXWdWdWfgWfRSd&A&A&&I1MWfgAu5566//2Ax7788wwyy>">>yvv)5:5)**4+<+<=>$$$TYZTYqd&6&6&D&D&FJTYZMD' &(  ig [s   8J	8JAJ$c               $    V ^8  d   QhRRRRRR/# )rF   r   z.T.Union[build.CustomTarget, build.BuildTarget]r  r   rH   r.   r3   )rI   s   "r<   rJ   r    s(      .\ nr   @K r;   c                	   . pVP                    EFL  p\        V\        P                  4      '       d   V'       dT   VP	                  VP                  V P                  P                  4       V P                  P                  4       4      4       K  VP	                  VP                  V P                  4      4       K  V'       dV   VP	                  \        P                  P                  V P                  P                  4       VP                  V4      4       EK  VP	                  \        P                  P                  V P                  VP                  V4      4       EKO  	  V# rq   )depend_filesr   r   r   r  r6  r   r  r  r  r	  r   r   r   r  )r\   r   r  r  r  s   &&&  r<   get_target_depend_filesBackend.get_target_depend_files  s    $$A!X]]++!KK0@0@0O0O0Q040@0@0N0N0P!R S KK 1 1$2C2C DE!KKT-=-=-L-L-NPVP]P]_` abKKT->->q QR % r;   c                    V ^8  d   QhRRRR/# r%  r3   )rI   s   "r<   rJ   r    s     + +3F +3 +r;   c                	$    V P                  V4      # rq   )r   r'  s   &&r<   r  $Backend.get_custom_target_output_dir  s     ""6**r;   c                    V ^8  d   QhRRRR/# )rF   rh  r+   rH   r3   )rI   s   "r<   rJ   r    s     ( (# (# (r;   c                	@    \         P                  P                  V4      # rq   )r   r   r=  )r\   rh  s   &&r<   get_normpath_targetBackend.get_normpath_target  s    ww''r;   c               (    V ^8  d   QhRRRRRRRR/# 	rF   r   r  r/   r9  r6  r   rH   r.   r3   )rI   s   "r<   rJ   r    s+     * *-? *: *.2*?J*r;   c               	   . pVP                  4        F  p\        V\        P                  \        P                  34      '       g   K5  V P                  V P                  V4      4      pV'       g   R pV'       d9   \        P                  P                  V P                  P                  4       V4      pWd9  g   K  VP                  V4       K  	  V# )rF  )r  r   r
   r  r  r  r  r   r   r   r   r  r  )r\   r   r/   r6  custom_target_include_dirsr  idirs   &&&$   r<   get_custom_target_dirsBackend.get_custom_target_dirs  s    24"--/A a%"4"4e6M6M!NOO++D,M,Ma,PQDww||D$4$4$B$B$DdK5*11$7 0 *)r;   c               (    V ^8  d   QhRRRRRRRR/# r  r3   )rI   s   "r<   rJ   r    s,      ,8B,7r;   c               	n    . pV P                  WVR 7       F  pWBP                  VR4      ,          pK  	  V# ))r6  F)r  r>  )r\   r   r/   r6  incsr  s   &&&$  r<   "get_custom_target_dir_include_args*Backend.get_custom_target_dir_include_args  s>     ,,V],[A--a77D \r;   c               $    V ^8  d   QhRRRRRR/# )rF   r   r  absolute_outputsr   rH   zIT.Tuple[T.List[str], T.List[str], T.List[str | programs.ExternalProgram]]r3   )rI   s   "r<   rJ   r    s)     O$ O$,O$@DO$UO$r;   c           	     	   V P                   pR pV P                  V4      pV'       dm   V P                  P                  4       pV P                  P	                  4       p\
        P                  P                  V P                  P	                  4       V4      pVP                  4        Uu. uF"  p\
        P                  P                  WV4      NK$  	  ppV P                  V4      p. p	VP                   EF  p\        V\        P                  4      '       d   WP                  V4      ,          p	K=  \        V\        P                  4      '       dI   VP                  4       ^ ,          p
\
        P                  P                  V P                  V4      V
4      pEM%\        V\         P"                  4      '       dp   VP%                  V P                   4      pVP&                  '       g	   V'       d9   \
        P                  P                  V P                  P	                  4       V4      pEM\        V\(        4      '       EdE   RV9   d   VP+                  RV4      pRV9   d   VP+                  RV4      pRV9   d:   VP+                  R\
        P                  P                  W1P,                  4      4      pRV9   df   VP.                  f   RVP0                  : R2p\3        V4      h\
        P                  P                  WQP.                  4      pVP+                  RV4      pRV9   d_   V P5                  V4      p\
        P6                  ! VRR	7       VP&                  '       g   V P9                  V4      pVP+                  RV4      pM;\        V\:        P<                  4      '       d   M\?        R
V R\A        V4       24      hV	PC                  V4       EK  	  \         PD                  ! W4      p\         PF                  ! W4      p	V	 Uu. uF-  p\        V\(        4      '       d   VP+                  RR4      MTNK/  	  p	pWV	3# u upi u upi )rF  z@SOURCE_ROOT@z@BUILD_ROOT@z@CURRENT_SOURCE_DIR@	@DEPFILE@zCustom target z/ has @DEPFILE@ but no depfile keyword argument.@PRIVATE_DIR@Tr  z	Argument z is of unknown type r\  rZ  )$r	  r  r   r  r  r   r   r   r  r  commandr   r
   r  r  r  r   r   r  r  r+   rT  r  depfiler   r   r  r  r{  r   r   r  r[   r  get_filenames_templates_dictsubstitute_values)r\   r   r  source_root
build_rootr   r  rf  inputsr  tmpr  	dfilenamepdirr  s   &&&            r<   eval_custom_target_command"Backend.eval_custom_target_command  sO   
 ''
226:**99;K))779JWW\\$"2"2"@"@"BFKF4:4F4F4HI4Hq277<<*4HI//768A!U..//55a88Au1122 mmoa(GGLL!B!B1!EsKAx}}--%%d&7&78(((,<T%5%5%C%C%EqIA As##"a'		/;?A!Q&		.*=A)Q.		"8"'',,{TaTa:bcA!#~~- .v{{o >2 2,S11 "V^^ DI		+y9A"a'::6BDKKt4!000#::6B		/48AAx7788"Yqc1Ed1gY#OPPJJqMQ  T 66vG((5& KNN#Qz!S'9'9qyys#q@#N##G JD Os   &(P8?3P=c               $    V ^8  d   QhRRRRRR/# )rF   r   r,  r"  z	list[str]rH   r3   )rI   s   "r<   rJ   r  3  s#      *; 9 QZ r;   c                	    . pV F>  pR V9   d$   V P                  V4      pVP                  R V4      pVP                  V4       K@  	  V# )r  )r{  rT  r  )r\   r   r"  resolved_argsr  r  s   &&&   r<   transform_link_argsBackend.transform_link_args3  sO    A!#226:IIot4  #	 
 r;   c                   V ^8  d   QhRR/# rY   r3   )rI   s   "r<   rJ   r  <  s     g g gr;   c                	r    R P                  R V P                  P                  4       R.,            4       4      # )r  c              3  N   "   T F  p\         P                  ! V4      x  K  	  R # 5irq   )shlexquote)r  r  s   & r<   r  1Backend.get_introspect_command.<locals>.<genexpr>=  s     f0e1A0er  
introspect)r   r   r;  rz   s   &r<   get_introspect_commandBackend.get_introspect_command<  s/    xxf0@0@0R0R0TXdWe0efffr;   c                    V ^8  d   QhRRRR/# )rF   r   zbuild.RunTargetrH   r   r3   )rI   s   "r<   rJ   r  ?  s       =Z r;   c                	   VP                   '       d   VP                   M\        P                  ! 4       pVP                  '       d   VP	                  R V P
                  P                  4       .4       VP	                  RV P
                  P                  4       .4       VP	                  RVP                  .4       VP	                  RV P                  4       .4       V# )MESON_SOURCE_ROOTMESON_BUILD_ROOTMESON_SUBDIRMESONINTROSPECT)
r   r   EnvironmentVariablesdefault_envr  r   r  r  r  r  )r\   r   r   s   && r<   get_run_target_envBackend.get_run_target_env?  s    "JJJfjjH,I,I,KGG'$*:*:*I*I*K)LMGG&)9)9)G)G)I(JKGGNV]]O4GG%(C(C(E'FG
r;   c                   V ^8  d   QhRR/# rm   r3   )rI   s   "r<   rJ   r  H  s     ` `d `r;   c                	   ^RI Hp RV P                  P                  4       RV P                  P	                  4       RV P                  4       /pV P                  P                   FY  pRP                  VP                  4      p\        P                  ! RV: 24       V! W24      pV^ 8w  g   KI  \        RV RV R	24      h	  R
# )rF   )run_exer  r  r  r  zRunning postconf script zPostconf script 'z' failed with exit code rF  N)scripts.meson_exer  r   r  r  r  r
   postconf_scriptsr   r   r   logr   )r\   r  r   r  r   rcs   &     r<   run_postconf_scriptsBackend.run_postconf_scriptsH  s    /"D$4$4$C$C$E!4#3#3#A#A#C $"="="?
 ,,A88AJJ'DHH/x89BQw$'9$?XY[X\\]%^__ -r;   c                   V ^8  d   QhRR/# )rF   rH   re   r3   )rI   s   "r<   rJ   r  V  s      [ r;   c           
     	V   V P                   P                  \        P                  R 4      pVfW   V P                   P	                  4       '       d   \
        P                  ! R4       M\        P                  R ,          ^ ,          .pV P                   P                  P                  P                  \        R4      4      p\        V\        \        34      '       g   Q R4       h\!        V P                   P#                  4       V P                   P%                  4       V P                   P'                  4       V P                   P)                  4       VVV P                   P+                  4       R.,           V P                   P                  P,                  4      pV P/                  V4       V P1                  V4       V P3                  V4       V P5                  V4       V P7                  V4       V P9                  V4       V P;                  V4       V P=                  V4       V P?                  V4       V# )r   zFCross file does not specify strip binary, result will not be stripped.ri   r  r  ) r   lookup_binary_entryr   rN  rO  r   r  r   defaultsrd  re  rf  r   r   r+   r   re   r  r  rp  
get_libdirr;  rk   r~  generate_target_installgenerate_header_installgenerate_man_installgenerate_emptydir_installgenerate_data_installgenerate_symlink_installgenerate_custom_install_scriptgenerate_subdir_install)r\   rh   umaskr  s   &   r<   create_install_dataBackend.create_install_dataV  s   $$889K9KWU	..00ef $__W5a89	  ))22@@?A[\%#s,,8j8,((779((668((335((335!((::<~M((1199; 	##A&$$Q'$$Q'!!!$&&q)""1%%%a(++A.$$Q'r;   c                   V ^8  d   QhRR/# rm   r3   )rI   s   "r<   rJ   r  u  s     ; ;4 ;r;   c                	"   \         P                  P                  V P                  P	                  4       R 4      p\        VR4      ;_uu_ 4       p\        P                  ! V P                  4       V4       RRR4       R#   + '       g   i     R# ; i)zinstall.datr4  N)	r   r   r   r   r  r  r>  r?  r*  )r\   install_data_filer  s   &  r<   create_install_data_files!Backend.create_install_data_filesu  s\    GGLL)9)9)I)I)K][#T**eKK002E: +***s   &A==B	c               $    V ^8  d   QhRRRRRR/# )rF   r   r+   r   r   rH   r3   )rI   s   "r<   rJ   r  z  s!      s O  r;   c                	   V P                   P                  4       p\        W0P                   P                  4       4      p\        W0P                   P	                  4       4      p\        W0P                   P                  4       4      pV P                   P                  P                  P                  \        R 4      4      p\        V\        4      '       g   Q R4       h\        W74      pV'       d    \        W2\        V4      P                  4      M
\        W14      p	WIP                  9   d   R# WYP                  9   d(   V	P                  R
9   d   R# V	P                  R9   d   R# MJWiP                  9   d   R# WP                  9   d   R# RV	P                  9   d   R# RV	P                  9   d   R# \         P"                  ! RV	4       R	# )	localedirr  runtimerm  i18nzinstalled-testsr=  	systemtapzFailed to guess install tag forN>   rL  .pc>   rM  .dll)r   rp  r	   
get_bindirr   get_includedirrd  re  rf  r   r   r+   r   parentsr  ra  r   r  )
r\   r   r   rf   r  rg   incdir_ldirr3  	dest_paths
   &&&       r<   guess_install_tagBackend.guess_install_tagz  sY   !!,,.f..99;<f..99;<f..==?@  ))22@@;AWX%%%1z1%'	>DDe)9)9:$vJ]	&&&(((=0!!_4  5(((+++)//1IOO+

4i@r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r    s     |, |, |, |,r;   c                	   V P                   P                  4       P                  4        EF  pVP                  4       '       g   K  VP	                  4       w  r4p\        V4      \        VP                  4       4      rvV^V09  d7   Rp\        VP                  VP                  WrP                  4       V4      4      h\        VP                  4      V8X  g   Q hVP                  4       p	V^ ,          p
V^ ,          p\        V\         P                  4      '       Ed   \        V\         P                  4      '       * pT;'       d    V P                  VR4      p\        V\         4      '       g   Q R4       hV
RJEd   VP                  ^ ,          ;'       g%    \        V\         P                  4      '       d   RMRpVP#                  VP$                  4      p\'        V P)                  V4      V
VWVP*                  VP,                  WP.                  WR7      pVP0                  P3                  V4       VP5                  4        FZ  w  ppp\6        P8                  P;                  V
V4      p\=        VVWP.                  V4      pVP>                  P3                  V4       K\  	  \        V\         P@                  \         PB                  \         PD                  34      '       EdC   VPG                  4       '       d   V'       d   T
pMV PH                  PK                  4       p\'        V PM                  V4      VVR/ \O        4       RV	VP.                  \        V\         PB                  4      RR	7      pVP0                  P3                  V4       V'       g   VPQ                  4       '       d   \6        P8                  P;                  V PS                  V4      VPQ                  4       4      p\'        VV
VR/ \O        4       RWP.                  R
RR	7      pVP0                  P3                  V4       V^8  d   \U        VP                  4       R,          VR,          VR,          VP                  R,          4       F  w  ppppVRJ d   K  \6        P8                  P;                  V PS                  V4      V4      p\'        VVVR/ \O        4       RWP.                  VR7
      pVP0                  P3                  V4       K  	  EK  EK  \        V\         PV                  4      '       g   EK  V^8X  d   V^8  d   V
RJd   \U        VP                  4       VP                  4       F  w  ppT;'       g    V PY                  VV
4      p\6        P8                  P;                  V PS                  V4      V4      p\'        VWR/ \O        4       RV	VP.                  VPZ                  '       * VR	7      pVP0                  P3                  V4       K  	  EK  EK  \U        VP                  4       W4VP                  4       F  w  ppppVRJ d   K  T;'       g    V PY                  VV4      p\6        P8                  P;                  V PS                  V4      V4      p\'        VVVR/ \O        4       RV	VP.                  VPZ                  '       * VR	7      pVP0                  P3                  V4       K  	  EK  	  R# )r  zTarget {!r} has {} outputs: {!r}, but only {} "install_dir"s were found.
Pass 'false' for outputs that should not be installed and 'true' for
using the default installation directory for an output.r   r  Frm  r4  )r   r   r   )r   r   T:r  NNNr   ).r
   r  r  should_installget_install_dirr  r  r   rI   r   install_tagget_custom_install_moder   r  rV  r  r   get_link_deps_mappingrf   r   r"  r   r   r   rr   r  get_aliasesr   r   r   r   rw   rN  SharedModulerX  rO  r   get_import_lib_dirr\  r  r.  r   zipr  r?  r  )r\   r  r  outdirsinstall_dir_namescustom_install_dirnum_outdirsnum_outr}  r   first_outdirfirst_outdir_namer   should_stripr   mappingsr  aliastor  implib_install_dir
debug_fileoutputr   r   r&  s   &&                        r<   r!  Backend.generate_target_install  s   '')002A##%%=>=N=N=P:G(:#&w<Q]]_1E1g,.N %QXXaffg}}P[%\]]q}}%000446L"1:L 1! 4 !U..// !+1e.A.A BB	(OOT-C-CAw-O!,55AzA5  u,--*ll*QH[H[:\:\wbkC 66qxx@H)$*B*B1*E|*;*6!BXBX*+//<.1	HA
 II$$Q'*+--/r3 "\5 A.r5,VYZ

))!, +:
 "!e&9&95;M;MuO_O_%`aa 00221 6B 2595E5E5X5X5Z 2 1$2V2VWX2Y2DFW27SUB23,,TUW\WiWiIj6=	!?A
 II,,Q/+0D0D0F0F)+d6I6I!6LaNbNbNd)eJ 1*l2C27SUB2>;?W	!NA
 II,,Q/?<?PR@SU\]_U`bstvbwyz  zG  zG  HJ  zK  =L8S!U?$GGLL)<)<Q)?H-aeRQTQVX\.:LL257 		((+ =L # Au1122 !#!#50+.q}}+NKFC"%"U"U)?)?)UC "T-@-@-CV LA 1!\27SUD,23,,QM_M_I_69!;A II,,Q/ ,O 1 =@QXmnmzmz<{8S!U?$!KKT%;%;FF%KGGLL)<)<Q)?H-a.3Rl./llI[I[E[257 		((+ =|c 3r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r    s     d d d dr;   c                	    V P                   P                  Vn        VP                   FG  pVP                  '       d   K  \        P                  ! R RP                  VP                  4      4       KI  	  R# )z/Failed to guess install tag for install script:r  N)r
   rx   r   r   r  r   r   )r\   r  r  s   && r<   r'  &Backend.generate_custom_install_script  sL     JJ66""A555

LchhWXWaWaNbc #r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r    s     $ $ $ $r;   c                	   V P                   P                  4       pV P                  P                  4       pV P                   P	                  4       pV P                   P                  4       pV F  pVP                  4       ;rxVfY   VP                  4       p	V	f   TpRpM?\        P                  P                  W)4      p\        P                  P                  RV	4      pVP                  4        Fa  p
V
P                  WE4      p\        WWP                  4       VP                  RVP                   R7      pVP"                  P%                  V4       Kc  	  K  	  R # )Nz{includedir}rm  )r   r   )r   r:  r
   get_headersr  r  get_custom_install_dirget_install_subdirr   r   r   r  r6  r   rG  r   r   rs   r  )r\   r  incrootrs   srcdirbuilddirhr   r   r  r&  abspathr  s   &&           r<   r"  Backend.generate_header_install  s   ""113**((*!!002##113A#$#;#;#==F~--/>$F"0KWW\\':F"$'',,~v"FK]]_//&;#G[B[B[B]_`_k_kqx  KL  K\  K\  ]		  # % r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r  /  s        k  d  r;   c                	   V P                   P                  4       pV P                  P                  4       pV EF  pVP	                  4        EF  pVP                  R 4      R,          pVP                  4       pVfm   VP                  '       d4   \        P                  P                  RVP                  RV,           4      pM'\        P                  P                  RRV,           4      pVP                  pVP                  '       d    VP                  R VP                   2R4      pVP                  V P                   P                  4       V P                   P                  4       4      p	\        P                  P                  V\        P                  P!                  V4      4      p
V
P                  RV4      p\#        WWP%                  4       VP&                  RR7      pVP(                  P+                  V4       EK  	  EK  	  R# )rF  Nz{mandir}rt   r   rC  rA  )r   
get_mandirr
   get_manr  r`  rb  localer   r   r   r   rT  r6  r  r  r   r   rG  r   rt   r  )r\   r  manrootrt   r}  r&  numr  r   srcabsdstnamedstabsr  s   &&           r<   r#  Backend.generate_man_install/  sc   ""--/jj  "A]]_ggcl2&113>xxx!#j!((ECK!P!#j%#+!F888!MMAahhZ."=E)9)9)H)H)JDL\L\LjLjLlm'',,vrww/?/?/FG W=#FG=V=V=XZ[ZfZflqrQ % r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r  D  s     ! !; !4 !r;   c                	8   V P                   P                  4       pV Fy  pVP                  ;'       g    V P                  VP                  4      p\        VP                  VP                  VP                  V4      pVP                  P                  V4       K{  	  R # rq   )
r
   get_emptydirrF  r?  r   r   r   r   ru   r  )r\   r  ru   er   r  s   &&    r<   r$  !Backend.generate_emptydir_installD  sl    +/::+B+B+DA--AA4#9#9!&&#ACcJAJJa  r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r  K  s     ! !{ !t !r;   c                	N   V P                   P                  4       pV P                  P                  4       pV P                  P	                  4       pV EFO  p\        V\         P                  4      '       g   Q hVP                  pVP                  p\        VP                  VP                  4       F  w  r\        V\        P                  4      '       g   Q h\        P                  P!                  Wi4      p
\        P                  P!                  Wy4      pVP"                  ;'       g    V P%                  V
4      p\'        VP)                  W44      WVP*                  VP,                  WP.                  VP0                  R 7      pVP2                  P5                  V4       K  	  EKR  	  R# ))r   r   r   N)r
   get_datar   r  r  r   Datainstall_dirinstall_dir_namerL  r1   renamer   r   r   r   r   rF  r?  r   r6  r   r   r   r   rv   r  )r\   r  rv   re  rf  der  subdir_namesrc_filedst_namedst_absdstdir_namer   r  s   &&            r<   r%  Backend.generate_data_installK  s/   zz""$!!002##113Bb%**----^^F--K&)"**bii&@"!(HMM::::'',,v8 ggll;AnnGG(>(>w(G#H$:$:6$Lg$&OOR]]WcWc464F4FH a  'A	 r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r  ]  s     ! !+ !$ !r;   c                	   V P                   P                  4       pV F  p\        V\         P                  4      '       g   Q hVP                  p\
        P                  P                  WCP                  4      pVP                  ;'       g    V P                  V4      p\        VP                  WTVP                  V4      pVP                  P                  V4       K  	  R # rq   )r
   get_symlinksr   SymlinkDatar~  r   r   r   r   rF  r?  r   r   r   rw   r  )r\   r  linksr  r~  name_absr   r  s   &&      r<   r&   Backend.generate_symlink_install]  s    +/::+B+B+DAa!2!23333--Kww||K8H--CC4#9#9(#CC"188XALLRUVAJJa  r;   c                    V ^8  d   QhRRRR/# ri  r3   )rI   s   "r<   rJ   r  g  s     ( ( ( (r;   c                	   V P                   P                  4        EFO  pVP                  '       d   V P                  P	                  4       pMV P                  P                  4       p\        P                  P                  VVP                  VP                  4      P                  R 4      p\        P                  P                  V P                  P                  4       VP                  4      p\        P                  P                  RVP                  4      pVP                  VP                  8w  d   VP                  pVP                  '       g{   \        P                  P                  V\        P                  P!                  V4      4      p\        P                  P                  V\        P                  P!                  V4      4      pVP"                  ;'       g:    V P%                  \        P                  P                  VP                  R4      4      p\'        WEWbP(                  VP*                  VP,                  VVP.                  R7      pVP0                  P3                  V4       EKR  	  R# )rZ  r   dummy)r   N)r
   get_install_subdirsfrom_source_dirr   r  r  r   r   r   source_subdirinstallable_subdirrstriprp  r~  r  strip_directoryr   rF  r?  r   r   r   r   r   ry   r  )	r\   r  sdfrom_dirsrc_dirdst_dirr  r   r  s	   &&       r<   r(  Backend.generate_subdir_installg  s   **002B!!!++::<++99;ggll8#%#3#3#%#8#8::@&+  ggll4#3#3#>#>#@#%>>3Gww||J?H~~!4!44..%%%'',,w0@0@0IJ77<<"''2B2B72KL..aaD$:$:277<<X_;`$aC!'Hoorzz[][h[hjm242D2DFA$$Q'' 3r;   c               $    V ^8  d   QhRRRRRR/# )rF   	target_idr+   r   rs  rH   z!T.List['TargetIntrospectionData']r3   )rI   s   "r<   rJ   r  }  s"     2 2 2\ 2No 2r;   c           
        \        V\        P                  \        P                  34      '       Ed   VP                  p. pV EF,  p\        V\
        P                  4      '       d0   WEP                  V P                  V P                  4      .,          pKS  \        V\        4      '       d5   V\        P                  P                  V P                  V4      .,          pK  \        V\        P                  \        P                  34      '       g   K  YEP                  4        Uu. uF<  p\        P                  P                  V P                  VP                  4       V4      NK>  	  up,          pEK/  	  V Uu. uF"  p\        P                  P!                  V4      NK$  	  pp. p\        V\        P                  4      '       Ed'   VP"                  p	V	 EF  p\        V\
        P                  4      '       d0   WP                  V P                  V P                  4      .,          pKS  \        V\        4      '       d   W.,          pKt  \        V\        P                  \        P                  34      '       d   WP                  4       ,          pK  \        V\$        P&                  4      '       d   WP)                  4       ,          pK  \+        R\-        V4      P.                   R24      h	  RRRVR. RVR. /.# . # u upi u upi )	a  
Returns a list of source dicts with the following format for a given target:
[
    {
        "language": "<LANG>",
        "compiler": ["result", "of", "comp.get_exelist()"],
        "parameters": ["list", "of", "compiler", "parameters],
        "sources": ["list", "of", "all", "<LANG>", "source", "files"],
        "generated_sources": ["list", "of", "generated", "source", "files"]
    }
]

This is a limited fallback / reference implementation. The backend should override this method.
zType "z;" is not supported in get_introspection_data. This is a bugr,   unknownr/   r0   r1   r2   )r   r
   r  r  r1   r   r   r6  r@   rA   r+   r   r   r   r  r<  r=  r  r   r   r  r  r[   r5   )
r\   r  r   source_list_rawsource_listjrl  r  r/   tmp_compilers
   &&&       r<   get_introspection_dataBackend.get_introspection_data}  s=    fu1153D3DEFF$nnOK$a//OODOOT^^$T#UUK3''BGGLL!$D#EEKE$6$68I8I#JKK]j]j]l#m]lXYBGGLLQR$S]l#mmK % 9DD1277++A.KD$&H&%"4"455%~~%A!!X]]33 __T__dnn%U$VV#As++ C#A(9(95;M;M'NOO MMO3#Ax'?'?@@ MMO3*VDG4D4D3E  FA  ,B  C  C & IHb;#R   	5 $nDs   #AK97(K>c                   V ^8  d   QhRR/# )rF   rH   r   r3   )rI   s   "r<   rJ   r    s     N N9 Nr;   c                	   \        4       p\        4       pV P                  P                  \        P                  ,          pV P
                  P                  4       P                  4        EF  pVP                  \        P                  Jg   VP                  4       '       g   K:  VP                  4       '       g   VP                  4       '       dR   \        V\
        P                  \
        P                  34      '       d"   VP                  V P!                  V. 4      4       VP#                  4       ^,          '       d   K  \$        P&                  P)                  V P                  P+                  4       V P-                  V4      4      p\        V\
        P                  4      '       d   VP/                  V4       EKQ  \        V\
        P0                  4      '       g   EKt  VP/                  V4       EK  	  V P                  P3                  W!4      # )rF   )r  r   r	  r   rN  r
   r  r  r  rD  r
  r  r   rX  rJ  r  r  rE  r   r   r   r  r   r  rN  get_env_for_paths)r\   r   library_pathshost_machiner  tdirs   &     r<   
get_devenvBackend.get_devenv  st   e''001C1CD'')002A}}M$6$66a>N>N>P>P''))\-C-C-E-E:VWZ_ZjZjlql~l~Y  LA  LA $$T%G%G2%NO  "1%%77<< 0 0 > > @$BUBUVWBXYD!U--.. %Au2233 !!$'1 34 11-MMr;   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )rF   r   r,  r/   r9  rZ  r+   r  zT.Union[str, None]extraszT.Union[T.List[str], None]inputrH   r   r3   )rI   s   "r<   rJ   r    sL      1B -7AD,> ,F +.	 ?K	r;   c                   V P                  W4      pV'       d   WrP                  W44      ,          pWrP                  V4      ,          pWpP                  W4      ,          pWpP	                  W4      ,          pWrP                  4       ,          pWpP                  VP                  VP                  4       4      4      ,          pVe	   Wu,          pWv.,          pV# )z
The VS and Xcode backends need the full set of arguments for making a
custom build rule. This is a convenience method to convert a Compiler
to its arguments, for later concatenation.
)	r  get_dependency_gen_argsget_output_argsrB  rH  get_compile_only_argsr  r  r  )r\   r   r/   rZ  r  r  r  r  s   &&&&&&& r<   compiler_to_generator_args"Backend.compiler_to_generator_args  s     44VF88IIH,,V4444VFF33FEE2244 	**6+@+@AVAVAX+YZZ HGr;   c                    V ^8  d   QhRRRR/# )rF   langnamer+   rH   r   r3   )rI   s   "r<   rJ   r    s      c d r;   c                	|    \          F1  pWP                  P                  P                  V,          9   g   K0   R # 	  R# )TF)r   r   rd  r   )r\   r  r  s   && r<   have_languageBackend.have_language  s1    (K++44>>{KK ) r;   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rF   r   r,  r/   r9  r1   _ALL_SOURCES_TYPEoutput_templr+   r   z*T.Optional[T.List[build.BuildTargetTypes]]rH   build.GeneratedListr3   )rI   s   "r<   rJ   r    sC     0 0,= 0(20'80 -00 (R	0
 $70r;   c           	     $   \         P                  ! VP                  4       4      pVP                  4       pV P	                  W4      p\
        P                  ! V P                  WgVP                  4       ,           V.RVR7      p	V	P                  V4      # )zr
Some backends don't support custom compilers. This is a convenience
method to convert a Compiler to a Generator.
z@PLAINNAME@.d)r  r   )
r   r   rM  r  r  r
   	Generatorr   	to_nativeprocess_files)
r\   r   r/   r1   r  r   r  r"  r  	generators
   &&&&&&    r<   compiler_to_generatorBackend.compiler_to_generator  s     &&x'7'7'9:$$&226DOOD$4$4$'0B0B0D)D%1NO,35	 &&w//r;   c                    V ^8  d   QhRRRR/# )rF   r   zbuild.CompileTargetrH   r  r3   )rI   s   "r<   rJ   r    s      O O2E OJ] Or;   c                	    \         P                  ! R VP                  4      \         P                  ! R VP                  4      ,           pV P	                  WP
                  VVP                  VP                  4      # )r  )r  r  r1   	generatedr  r/   r  r   )r\   r   all_sourcess   && r<   compile_target_to_generator#Backend.compile_target_to_generator  s[    ff0&..AAFFK^`f`p`pDqq))&//;*0*=*=v~~O 	Or;   c                    V ^8  d   QhRRRR/# r  r3   )rI   s   "r<   rJ   r    s     
X 
X0 
XT 
Xr;   c                	    \        V\        P                  4      '       d   R # V P                  VR4      pVR8X  d   R# VR8X  d   R # VR8X  d   VP                  R8g  # \        RV 24      h)FunityonToffsubprojectsr   z1Internal error: invalid option type for "unity": )r   r
   ro  r  r   r   )r\   r   vals   && r<   r  Backend.is_unity  sl    fe1122$$VW5$;%<-$$**PQTPUVWWr;   c               $    V ^8  d   QhRRRRRR/# )rF   r   r,  r   zT.Union[str, OptionKey]rH   r&   r3   )rI   s   "r<   rJ   r    s)     L L(9 LAX L]s Lr;   c                	    \        V\        4      '       d   \        W!P                  R 7      pM$\        V\        4      '       d   TpM\	        R4      hV P
                  P                  P                  W4      # ))r   z$Internal error: invalid option type.)r   r+   r   r   r   r   rd  get_option_for_target)r\   r   r   rE  s   &&& r<   r  Backend.get_target_option  sZ    dC  D->->?Ci((C#$JKK((>>vKKr;   )r
   rA   r	  r   r  r@   r
  )FNr  )	NNNNNFNFN)NNNNFNFFrq   r;  )z@OUTPUT@r  Nz@INPUT@)br5   r6   r7   r8   r9   r   r   r  r"  r(  r0  r4  rB  rH  r\  r   r   rp  ru  r{  r  r  r  r  staticmethodr  r  r  r  r  r  r'  rF  rO  rV  re  r{  r  r  r  r  r  r  r  r  r  r
  r  r_   r$  r  rK  rJ  r_  r4  rR  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r/  r?  r!  r'  r"  r#  r$  r%  r&  r(  r  r  r  r  r  r  r  r  r:   r3   r;   r<   r   r     s   **DP0T>W[ >`f9ty 98sx 8X0 t 7!^c tF F X(T H H+
%!F  Talc$J) t  ,\ t8 8t"4 "  
l\0" t  4 t  4!9FMHZxE&]8
&w ( t  t : + t( (*5:*$"'O$bg`>;
6|,|d$, *!!$!(,2hN@80&O

XL Lr;   r   )r  r  r  rP   rq   )T
__future__r   collectionsr   dataclassesr   r   	functoolsr   	itertoolsr   pathlibr	   rS  enumrs  r   r>  rR  r  r8  typingr  r  r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   optionsr   TYPE_CHECKING_typingr   arglistr   r    r   r!   interpreterr"   linkers.linkersr#   r$   r%   r&   typing_extensionsr'   r(   ListUnionGeneratedTypesr  r*   r  r?   EnumrD   ra   re   r   r   r   r   r   r   r   r   r   r3   r;   r<   <module>r     s   # # *       	  	           -      ???/&$)".108qwwtU-A-A'ABC') ' 4 
e  
499 < e   e= = =, eP P P( e      e- - - e       eJ J J8%PQL QLr;   