+
    UBi?                   (
  a 0 t $ ^ RIHt ^ RIHtHtHt ^ RIHt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HtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2 ^RI3H4t4 ^RI5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t> ^RI?H@t@HAtA ]P                  '       Ed%   ^ RICHDtDHEtEHFtF ^RIGHHtH ^RIIHJtJ ^RIKHLtL ^RI5HMtM ^RINHOtOHPtP ^RIQHRtRHStS ^RI?HTtT ^RIUHVtV ^RIHWtWHXtXHYtY ^RIZH[t[ ]P                  R,          t]R]^R&   ]P                  R,          t_R]^R &   ]P                  R,          t`R]^R"&   ]P                  ]aR#R$R3,          tbR]^R%&   ]P                  R,          tcR]^R'&   ]DR,          tdR]^R(&    ! R) R*]F4      te ! R+ R,]FR-R.7      tf ! R/ R0]fR-R.7      tg ! R1 R2]fR-R.7      th ! R3 R4]hR-R.7      ti ! R5 R6]fR-R.7      tjR7RR8RR9RR:R/tkR;]^R<&   R7RR8RR9RR:R/tlR=]^R>&   R?R@0tm]; U u0 uF  q  RA2kK	  	  up tn]n0 Rm,          tn0 RmtoRBRC0tpRDRE0tqRFRG0tr0 Rmts]s]n,          ]m,          ]o,          ]p,          ]q,          ]r,          tt]t0 Rm,          tu]t0 Rm,          tv]tRHRI0,          tw]t0 Rm,          tx]uRJRK0,          tyRL RM ltz]! RRN7      RO RP l4       t{ ! RQ RR] 4      t|]! R-RS7       ! RT RU]4      4       t}]! R-RS7       ! RV RW]4      4       t~]! R-RS7       ! RX RY]4      4       t]! R-RS7       ! RZ R[]4      4       t]! R-RS7       ! R\ R]]4      4       t]! R-RS7       ! R^ R_4      4       t ! R` Ra4      t]! R-RS7       ! Rb Rc]4      4       t]! R-RS7       ! Rd R$]4      4       t]! R-R-Re7       ! Rf Rg]4      4       t]! R-RS7       ! Rh R&]]EP                  Ri7      4       t ! Rj R!]4      t ! Rk Rl4      t ! Rm Rn4      t ! Ro Rp]4      t]! R-RS7       ! Rq R]4      4       t ! Rr Rs]4      t ! Rt R]4      t ! Ru R]4      t ! Rv Rw]4      t ! Rx Ry]4      t ! Rz R{4      t ! R| R}4      t ! R~ R]]]4      t ! R R]4      t ! R R]]4      t ! R R]4      t ! R R]4      t]! R-RS7       ! R R]]4      4       t ! R R]4      t ! R R]4      t]! R-RS7       ! R R]4      4       t]! R-RS7       ! R R]4      4       t]! R-RS7       ! R R4      4       tR tR R ltR R ltR# u up i )    )annotations)defaultdictdequeOrderedDict)	dataclassfield)	lru_cacheN)coredatadependencies)mlog)programs)HoldableObjectSecondLevelHolderFileMesonExceptionMachineChoice
PerMachine
OrderedSetlistifyextract_as_listtypeslistifystringlistifyclassify_unity_sourcesget_filenames_templates_dictsubstitute_valueshas_path_sepis_parent_pathrelpathPerMachineDefaultableMesonBugExceptionEnvironmentVariablespickle_loadlazy_property)	OptionKey)		is_header	is_object	is_sourceclink_langs
sort_clinkall_languagesis_known_suffixdetect_static_linkerLANGUAGES_USING_LDFLAGS)
FeatureNewFeatureDeprecated)Literal	TypeAlias	TypedDict)Environment)ImmutableListProtocol)Backend)Compiler)SourceOutputsInterpreter)TestDoctest)
SubProject)StaticLinker)ExecutableSerialisationFileModeFileOrString)BaseNodeCustomTargetCustomTargetIndexGeneratedListr2   GeneratedTypesSharedLibraryStaticLibraryLibTypesBuildTargetBuildTargetTypesr   ExtractedObjectsObjectTypesTargetAnyTargetTypeRustCrateTypec                  @    ] tR t^;t$ R]R&   R]R&   R]R&   R]R&   RtR	# )
	DFeaturesboolunittestT.List[T.Union[str, int]]debugT.List[IncludeDirs]import_dirsversions N__name__
__module____qualname____firstlineno____annotations____static_attributes__rY       5/usr/lib/python3.14/site-packages/mesonbuild/build.pyrQ   rQ   ;   s    ((((++ra   rQ   c                     ] tR t^Bt$ 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#&   R$]R%&   R&]R'&   R(]R)&   R(]R*&   R+]R,&   R-]R.&   R]R/&   R0]R1&   R]R2&   R3]R4&   R5]R6&   R(]R7&   R(]R8&   R(]R9&   R]R:&   R]R;&   R<tR=# )>BuildTargetKeywordArgumentsrR   build_by_defaultstrbuild_rpathz)T.Optional[T.Tuple[str, T.Optional[str]]]c_pchcpp_pchrT   d_debugrV   d_import_dirsd_module_versions
d_unittestT.List[dependencies.Dependency]r   T.List[File]extra_fileszJLiteral['default', 'internal', 'hidden', 'protected', 'inlineshidden', '']gnu_symbol_visibilityimplicit_include_directoriesinclude_directoriesinstall$T.List[T.Union[str, Literal[False]]]install_dirr?   install_modeinstall_rpathT.List[str]install_tagzT.DefaultDict[str, T.List[str]]language_args	link_argsz;T.List[T.Union[str, File, CustomTarget, CustomTargetIndex]]link_dependslink_languagez?T.List[T.Union[StaticLibrary, CustomTarget, CustomTargetIndex]]
link_wholeT.List[BuildTargetTypes]	link_withT.Optional[str]name_prefixname_suffixr   nativezT.Dict[OptionKey, str]override_options	resourceszLiteral['c', 'cpp']swift_interoperability_modeswift_module_namerO   rust_crate_typeT.Dict[str, str]rust_dependency_mapvala_girvala_header	vala_vapiwin_subsystem_allow_no_sourcesrY   NrZ   rY   ra   rb   rd   rd   B   s    
 88::****4455!!ii&**0099  66QQSS++$$$$00%88&&--!!$$""ra   rd   F)totalc                  J    ] tR t^ot$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ExecutableKeywordArgumentsz0T.Optional[Literal['application', 'executable']]android_exe_typer   implibrR   export_dynamicpie3T.Union[str, File, CustomTarget, CustomTargetIndex]vs_module_defsrY   NrZ   rY   ra   rb   r   r   o   s    JJ	KKra   r   c                  "    ] tR t^wt$ R]R&   RtR# )SharedModuleKeywordArgumentsr   r   rY   NrZ   rY   ra   rb   r   r   w   s    KKra   r   c                  @    ] tR t^{t$ R]R&   R]R&   R]R&   R]R&   RtR# )	SharedLibraryKeywordArgumentsrf   version	soversionT.Tuple[str, str]darwin_versions	shortnamerY   NrZ   rY   ra   rb   r   r   {   s    **ra   r   c                  ,    ] tR t^t$ R]R&   R]R&   RtR# )StaticLibraryKeywordArgumentsrR   picprelinkrY   NrZ   rY   ra   rb   r   r      s    	ra   r   unixwindowsdarwincygwinz!T.Mapping[str, T.Tuple[str, str]]DEFAULT_STATIC_LIBRARY_NAMESz&T.Mapping[str, T.Tuple[str, str, str]]DEFAULT_SHARED_LIBRARY_NAMESrh   ri   _argsr   r   r   cs_argsr   r   r   rust_abi
main_classjava_resourcesc               $    V ^8  d   QhRRRRRR/# )   rz   #T.Optional[T.List[T.Optional[str]]]num_outputsintreturnzT.List[T.Optional[str]]rY   )formats   "rb   __annotate__r      s$     	 	&I 	&)	.E	ra   c                f    V '       g   R .V,          pV# \        V 4      ^8X  d   W,          pV# T pV# N)len)rz   r   _install_tags   && rb   _process_install_tagr      sG     v+
 	 
[	Q	"0  #ra   maxsizec                   V ^8  d   QhRR/# r   r   rf   rY   )r   s   "rb   r   r      s      s ra   c                    R V P                   V P                  .pV P                  e#   VP                  RV P                  ,           4       VP                  R4       RP	                  V4      # )z@rpath/..dylib )prefixnamer   appendjoin)ldr   s   & rb   #get_target_macos_dylib_install_namer      sO    ryy"''*D	||C",,&'KK774=ra   c                      ] tR t^tRtR# )InvalidArgumentsrY   N)r[   r\   r]   r^   r`   rY   ra   rb   r   r      s    ra   r   )eqc                  :    ] tR t^t$ R]R&   R]R&   RtR]R&   RtR	# )
DependencyOverridezdependencies.Dependencydepz
'BaseNode'nodeTrR   explicitrY   N)r[   r\   r]   r^   r_   r   r`   rY   ra   rb   r   r      s    	  
Hdra   r   c                      ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR]R&   R R ltR R ltR R ltR R lt	R R lt
RtR
# )Headersro   sourcesr   install_subdircustom_install_dir
'FileMode'custom_install_moderf   
subprojectNT.Optional[bool]follow_symlinksc                    V ^8  d   QhRRRR/# )r   subdirrf   r   NonerY   )r   s   "rb   r   Headers.__annotate__   s     % % % %ra   c                	    Wn         R # r   r   )selfr   s   &&rb   set_install_subdirHeaders.set_install_subdir   s    $ra   c                   V ^8  d   QhRR/# r   r   r   rY   )r   s   "rb   r   r      s     # #O #ra   c                	    V P                   # r   r   r   s   &rb   get_install_subdirHeaders.get_install_subdir       """ra   c                   V ^8  d   QhRR/# r   r   ro   rY   )r   s   "rb   r   r            \ ra   c                	    V P                   # r   r   r   s   &rb   get_sourcesHeaders.get_sources       ||ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r          ' ' 'ra   c                	    V P                   # r   r   r   s   &rb   get_custom_install_dirHeaders.get_custom_install_dir      &&&ra   c                   V ^8  d   QhRR/# r   r   r   rY   )r   s   "rb   r   r          ( ( (ra   c                	    V P                   # r   r   r   s   &rb   get_custom_install_modeHeaders.get_custom_install_mode      '''ra   r   )r[   r\   r]   r^   r_   r   r   r   r   r   r  r`   rY   ra   rb   r   r      sH    ##''##O(,O%,
%#'( (ra   r   c                  n    ] tR tRt$ R]R&   R]R&   R]R&   R]R	&   R]R
&   R R ltR R ltR R ltRtR# )Mani
  ro   r   r   r   r   r   rf   r   localec                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   Man.__annotate__  r   ra   c                	    V P                   # r   r   r   s   &rb   r   Man.get_custom_install_dir  r   ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    r  ra   c                	    V P                   # r   r  r   s   &rb   r  Man.get_custom_install_mode  r  ra   c                   V ^8  d   QhRR/# )r   r   zT.List['File']rY   )r   s   "rb   r   r    s      ^ ra   c                	    V P                   # r   r   r   s   &rb   r   Man.get_sources  r   ra   rY   N)	r[   r\   r]   r^   r_   r   r  r   r`   rY   ra   rb   r  r  
  s3    ''##O'( ra   r  c                  D    ] tR tRt$ R]R&   R]R&   R]R&   RtR]R	&   R
tR# )EmptyDiri  rf   pathr   rw   r   Nr   rz   rY   )r[   r\   r]   r^   r_   rz   r`   rY   ra   rb   r  r    s    
IO#'K'ra   r  c                      ] tR tRt$ 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tR# )
InstallDiri$  rf   source_subdirinstallable_subdirrv   install_dir_namer   rw   zT.Tuple[T.Set[str], T.Set[str]]excluderR   strip_directoryr   Tfrom_source_dirNr   rz   r   r   rY   )	r[   r\   r]   r^   r_   r  rz   r   r`   rY   ra   rb   r  r  $  sP    ,,O OT #'K'(,O%,ra   r  c                  X    ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	 R
 ltR R ltRtR# )DepManifesti2  rf   r   ry   licensezT.List[T.Tuple[str, File]]license_filesr   c                   V ^8  d   QhRR/# )r   r   zT.List[T.Tuple[str, str]]rY   )r   s   "rb   r   DepManifest.__annotate__9  s      !: ra   c           	     	~   . pV P                    F  w  r#\        P                  P                  ! R  \        P
                  ! \        P                  P                  VP                  4      4      P                   4       !  pVP                  V\        P                  P                  VP                  V4      34       K  	  V# )c              3  6   "   T F  qR 8w  g   K  Vx  K  	  R# 5i)z..NrY   .0xs   & rb   	<genexpr>.DepManifest.license_mapping.<locals>.<genexpr><  s     "p.bkofo11.bs   
)r"  osr  r   pathlibPurePathnormpathfnamepartsr   r   )r   ret	ifilenamer   r0  s   &    rb   license_mappingDepManifest.license_mapping9  s    #11OIGGLL"pg.>.>rww?O?OPTPZPZ?[.\.b.b"pqEJJ	277<<U#CDE  2 
ra   c                   V ^8  d   QhRR/# )r   r   z&T.Dict[str, T.Union[str, T.List[str]]]rY   )r   s   "rb   r   r$  @  s     
 
? 
ra   c           
     	    R V P                   RV P                  RV P                  4        Uu. uF  q^,          NK  	  up/# u upi )r   r!  r"  )r   r!  r4  )r   ls   & rb   to_jsonDepManifest.to_json@  sG    t||t||D,@,@,BC,Bqdd,BC
 	
 Ds   ArY   N)r[   r\   r]   r^   r_   r4  r9  r`   rY   ra   rb   r   r   2  s'    L--O
 
ra   r   c                  P   ] tR tRtRtR R lt]R R l4       t]P                  R R l4       tR	 R
 lt	R R lt
R R ltR R ltR R ltR R ltR tR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0tR1# )2BuildiI  zQA class that holds the status of one build including
all dependencies and so on.
c                   V ^8  d   QhRR/# )r   environmentr4   rY   )r   s   "rb   r   Build.__annotate__N  s     , ,K ,ra   c                	   \         P                  V n        R V n        RV n        R V n        Wn        / V n        \        4       V n        \        4       V n
        \        / / 4      V n        \        / / 4      V n        \        / / 4      V n        \        / / 4      V n        . V n        . V n        . V n        . V n        . V n        . V n        . V n        \        R R 4      V n        / V n        RV n        . V n        . V n        . V n        . V n        R V n        / V n        \        / / 4      V n         / V n!        R V n"        / V n#        \        4       V n$        \J        PL                  ! VPO                  4       / / 4      V n(        . V n)        \        4       V n*        R # )Nzname of master projectr   )+r
   r   
_def_filesproject_nameproject_versionr>  projectsr   targetssettargetnamesr   global_argsglobal_link_argsprojects_argsprojects_link_argstests
benchmarksheadersmanemptydirdatasymlinksstatic_linkersubprojectssubproject_dirinstall_scriptspostconf_scriptsdist_scriptsinstall_dirsdep_manifest_namedep_manifeststdlibstest_setupstest_setup_default_namefind_overridessearched_programsr    defaultis_cross_builddependency_overridesdevenvmodules)r   r>  s   &&rb   __init__Build.__init__N  s{   ''37404&*,Q\Q^58UAKBPRASFPQSUWFXPZ[]_aPbU_`bdfUg%'
*,(* "*,"$	-/7A$7M BDCE?A022668!"b)35'+$ A-0U VkUrUr&&("bV2!46#&5	ra   c                   V ^8  d   QhRR/# r   r   ry   rY   )r   s   "rb   r   r?  }  s      ; ra   c                	L    V P                   f   \        R4      hV P                   # )Nz$build.def_files has not been set yetrA  r!   r   s   &rb   	def_filesBuild.def_files|  s"    ??"#$JKKra   c                   V ^8  d   QhRR/# )r   valuery   rY   )r   s   "rb   r   r?    s        {  ra   c                	D    V P                   e   \        R4      hWn         R # )Nzbuild.def_files already setrk  r   ro  s   &&rb   rl  rm    s    ??&#$ABBra   c                   V ^8  d   QhRR/# )r   r   zOrderedDict[str, BuildTarget]rY   )r   s   "rb   r   r?    s      #@ ra   c                	    \        4       pV P                  P                  4        F!  w  r#\        V\        4      '       g   K  W1V&   K#  	  V# r   )r   rE  items
isinstancerI   )r   build_targetsr   ts   &   rb   get_build_targetsBuild.get_build_targets  s?    #||))+GD![))&'d# , ra   c                   V ^8  d   QhRR/# )r   r   zOrderedDict[str, CustomTarget]rY   )r   s   "rb   r   r?    s      $B ra   c                	    \        4       pV P                  P                  4        F!  w  r#\        V\        4      '       g   K  W1V&   K#  	  V# r   )r   rE  rt  ru  rB   )r   custom_targetsr   rw  s   &   rb   get_custom_targetsBuild.get_custom_targets  s?    $||))+GD!\**'(t$ , ra   c                   V ^8  d   QhRR/# )r   r   r<  rY   )r   s   "rb   r   r?    s      e ra   c                	   \        V P                  4      pV P                  P                  4        FX  w  r#\	        V\
        \        \        \        34      '       d    VP                  4       VP                  V&   KJ  W1P                  V&   KZ  	  V# r   )
r<  r>  __dict__rt  ru  listdictrF  r   copyr   otherkvs   &   rb   r  
Build.copy  sh    d&&'MM'')DA!dD#{;<<$%FFHq!$%q!	 *
 ra   c                    V ^8  d   QhRRRR/# )r   r  r<  r   r   rY   )r   s   "rb   r   r?    s     ! !5 !T !ra   c                	h    VP                   P                  4        F  w  r#W0P                   V&   K  	  R # r   )r  rt  r  s   &&  rb   mergeBuild.merge  s'    NN((*DA MM! +ra   c                    V ^8  d   QhRRRR/# )r   compilerr7   r   r   rY   )r   s   "rb   r   r?    s     h hX h$ hra   c                	    V P                   VP                  ,          fH   VP                  4       '       d0   \        V P                  V4      V P                   VP                  &   R # R # R # r   )rS  for_machineneeds_static_linkerr-   r>  )r   r  s   &&rb   ensure_static_linkerBuild.ensure_static_linker  sU    h223;@\@\@^@^7KDL\L\^f7gDx334 A_;ra   c                   V ^8  d   QhRR/# )r   r   r   rY   )r   s   "rb   r   r?    s     ! !- !ra   c                	(    V P                   R ,          # )r   )rD  r   s   &rb   get_projectBuild.get_project  s    }}R  ra   c                	    V P                   # r   )rU  r   s   &rb   get_subproject_dirBuild.get_subproject_dir  r   ra   c                   V ^8  d   QhRR/# )r   r   z8'T.OrderedDict[str, T.Union[CustomTarget, BuildTarget]]'rY   )r   s   "rb   r   r?    s      U ra   c                	    V P                   # r   )rE  r   s   &rb   get_targetsBuild.get_targets  r   ra   c                   V ^8  d   QhRR/# r   r   zT.List['Test']rY   )r   s   "rb   r   r?    s      > ra   c                	    V P                   # r   )rL  r   s   &rb   	get_testsBuild.get_tests      zzra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r?    s       ra   c                	    V P                   # r   )rM  r   s   &rb   get_benchmarksBuild.get_benchmarks      ra   c                   V ^8  d   QhRR/# )r   r   zT.List['Headers']rY   )r   s   "rb   r   r?    s      . ra   c                	    V P                   # r   )rN  r   s   &rb   get_headersBuild.get_headers  r   ra   c                   V ^8  d   QhRR/# )r   r   zT.List['Man']rY   )r   s   "rb   r   r?    s       ra   c                	    V P                   # r   )rO  r   s   &rb   get_manBuild.get_man      xxra   c                   V ^8  d   QhRR/# )r   r   zT.List['Data']rY   )r   s   "rb   r   r?    s      . ra   c                	    V P                   # r   )rQ  r   s   &rb   get_dataBuild.get_data      yyra   c                   V ^8  d   QhRR/# )r   r   zT.List['SymlinkData']rY   )r   s   "rb   r   r?    s      3 ra   c                	    V P                   # r   )rR  r   s   &rb   get_symlinksBuild.get_symlinks      }}ra   c                   V ^8  d   QhRR/# )r   r   zT.List['EmptyDir']rY   )r   s   "rb   r   r?    s      0 ra   c                	    V P                   # r   )rP  r   s   &rb   get_emptydirBuild.get_emptydir  r  ra   c                   V ^8  d   QhRR/# )r   r   zT.List['InstallDir']rY   )r   s   "rb   r   r?    s     ! !%9 !ra   c                	    V P                   # r   )rY  r   s   &rb   get_install_subdirsBuild.get_install_subdirs         ra   c               $    V ^8  d   QhRRRRRR/# r   r  
'Compiler'r  'MachineChoice'r   ry   rY   )r   s   "rb   r   r?    s"     2 2
 2 2U` 2ra   c                	h    V P                   V,          pVP                  VP                  4       . 4      # r   )rH  getget_languager   r  r  ds   &&& rb   get_global_argsBuild.get_global_args  s,    [)uuX**,b11ra   c               (    V ^8  d   QhRRRRRRRR/# 	r   r  r  projectrf   r  r  r   ry   rY   )r   s   "rb   r   r?    s*     5 5 5c 5P_ 5do 5ra   c                	    V P                   V,          pVP                  V4      pV'       g   . # VP                  VP                  4       . 4      # r   )rJ  r  r  )r   r  r  r  r  argss   &&&&  rb   get_project_argsBuild.get_project_args  sA    {+uuW~Ixx--/44ra   c               $    V ^8  d   QhRRRRRR/# r  rY   )r   s   "rb   r   r?    s"     2 2Z 2o 2Ze 2ra   c                	h    V P                   V,          pVP                  VP                  4       . 4      # r   )rI  r  r  r  s   &&& rb   get_global_link_argsBuild.get_global_link_args  s,    !!+.uuX**,b11ra   c               (    V ^8  d   QhRRRRRRRR/# r  rY   )r   s   "rb   r   r?    s*     : :j :3 :Ud :it :ra   c                	    V P                   V,          pVP                  V4      pV'       g   . # VP                  VP                  4       . 4      # r   )rK  r  r  )r   r  r  r  r  r|   s   &&&&  rb   get_project_link_argsBuild.get_project_link_args  sA    ##K0EE'N	I}}X224b99ra   )$rA  rM  rQ  r[  rZ  rc  rd  rX  rP  r>  r_  rH  rI  rN  rY  rV  rO  re  rW  rB  rC  rD  rJ  rK  r`  rS  r\  rU  rT  rR  rG  rE  r^  r]  rL  r   N)r[   r\   r]   r^   __doc__rf  propertyrl  setterrx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`   rY   ra   rb   r<  r<  I  s    ,\  
    
!h!#!252: :ra   r<  c                      ] tR tRt$ RtR]R&   R]R&   R]R&   ]! ]R	7      tR]R
&   R R lt	R R lt
R R ltR R ltR R ltRtR# )IncludeDirsi  z7Internal representation of an include_directories call.rf   curdirry   incdirsrR   	is_systemdefault_factoryextra_build_dirsc                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   IncludeDirs.__annotate__  s     L L# Lra   c                	|    R pVP                  V P                  P                  V P                  V P                  4      # )z
<{} {}/{}>)r   	__class__r[   r  r  r   rs   & rb   __repr__IncludeDirs.__repr__  s,    xx//dllKKra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r          C ra   c                	    V P                   # r   )r  r   s   &rb   
get_curdirIncludeDirs.get_curdir      {{ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r          [ ra   c                	    V P                   # r   )r  r   s   &rb   get_incdirsIncludeDirs.get_incdirs  r   ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r    s     % %k %ra   c                	    V P                   # r   )r  r   s   &rb   get_extra_build_dirs IncludeDirs.get_extra_build_dirs  s    $$$ra   c               $    V ^8  d   QhRRRRRR/# )r   	sourcedirrf   builddirr   ry   rY   )r   s   "rb   r   r    s!       s { ra   c                   . pV P                    Fu  pVP                  \        P                  P	                  WP
                  V4      4       VP                  \        P                  P	                  W P
                  V4      4       Kw  	  V# )a  Convert IncludeDirs object to a list of strings.

:param sourcedir: The absolute source directory
:param builddir: The absolute build directory, option, build dir will not
    be added if this is unset
:returns: A list of strings (without compiler argument)
)r  r   r,  r  r   r  )r   r  r  strlistidirs   &&&  rb   to_string_listIncludeDirs.to_string_list  s\      "LLDNN277<<	;;EFNN277<<++tDE ! ra   rY   N)r[   r\   r]   r^   r  r_   r   r  r  r  r  r  r  r	  r`   rY   ra   rb   r  r    sI     BKO %*$$?k?L% ra   r  c                      ] tR tRt$ RtR]R&   ]! ]R7      tR]R&   ]! ]R7      t	R]R	&   ]! ]R7      t
R
]R&   RtR]R&   RtR]R&   R R lt]R R l4       tR R ltR R ltRtR# )rK   i  zA
Holds a list of sources for which the objects must be extracted
z'BuildTarget'targetr  ro   srclistT.List['GeneratedTypes']genlist0T.List[T.Union[str, 'File', 'ExtractedObjects']]objlistTrR   	recursiveFpchc                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   ExtractedObjects.__annotate__  s     Q Q# Qra   c                	    R pVP                  V P                  P                  V P                  P                  V P
                  4      # )z<{0} {1!r}: {2}>)r   r  r[   r  r   r  r  s   & rb   r  ExtractedObjects.__repr__  s2    xx//1A1A4<<PPra   c               $    V ^8  d   QhRRRRRR/# )r   r   zT.Sequence['FileOrString']generated_sourcesT.Sequence['GeneratedTypes']r   T.List['FileOrString']rY   )r   s   "rb   r   r    s(     4 47 4Lh 4  nD 4ra   c                	    \        V 4      p V F+  pVP                  4        F  pV P                  V4       K  	  K-  	  V  Uu. uF  p\        V4      '       g   K  VNK  	  up# u upi r   )r  get_outputsr   r(   )r   r  gensrcss   &&  rb   r   ExtractedObjects.get_sources  sZ     w-'F'') q!	 * ( #37ail7333s   A"A"c               $    V ^8  d   QhRRRRRR/# )r   r   zT.List[FileOrString]r  r  r   z*T.Dict['Compiler', T.List['FileOrString']]rY   )r   s   "rb   r   r  %  s-     P P,@ PUq P  wa Pra   c                	    V P                  W4      p\        V P                  P                  P	                  4       V4      # r   )r   r   r  	compilersvalues)r   r   r  sources_s   &&& rb   classify_all_sources%ExtractedObjects.classify_all_sources%  s2    ##G?%dkk&;&;&B&B&DhOOra   c                   V ^8  d   QhRR/# r   r   r   rY   )r   s   "rb   r   r  )  s     T T Tra   c                	L   V P                  V P                  P                  V P                  P                  4      pV P                  V P                  V P
                  4      pVP                  4        F/  w  r4\        V4      \        W,          4      8w  g   K&  \        R 4      h	  R# )z}Single object files cannot be extracted in Unity builds. You can only extract all the object files for each compiler at once.N)	r&  r  r   	generatedr  r  rt  rF  r   )r   cmpsrcsextracted_cmpsrcscompsrcss   &    rb   check_unity_compatible'ExtractedObjects.check_unity_compatible)  s     ++DKK,?,?AVAVW 55dllDLLQ+113JD4yC..$ &S T T 4ra   rY   N)r[   r\   r]   r^   r  r_   r   r  r  r  r  r  r  r  staticmethodr   r&  r0  r`   rY   ra   rb   rK   rK     s     !$7G\7(-d(CG%C@EVZ@[G=[ItCQ 4 4PT Tra   )r   orderc                  j    ] tR tRt$ Rt]! R R7      tR]R&   R R ltR	 R
 lt	R R lt
R R ltRtR# )StructuredSourcesi:  a   A container for sources in languages that use filesystem hierarchy.

Languages like Rust and Cython rely on the layout of files in the filesystem
as part of the compiler implementation. This structure allows us to
represent the required filesystem layout.
c                 	     \        \        4      # r   )r   r  rY   ra   rb   <lambda>StructuredSources.<lambda>E  s	    D 1ra   r  z9T.DefaultDict[str, T.List[T.Union[File, GeneratedTypes]]]r   c                    V ^8  d   QhRRRR/# )r   r  r5  r   rY   )r   s   "rb   r   StructuredSources.__annotate__G  s     * *. *3D *ra   c                	    V P                   P                  4       pVP                   P                  4        F  w  r4W#,          P                  V4       K  	  \	        V4      # r   )r   r  rt  extendr5  )r   r  r   r  r  s   &&   rb   __add__StructuredSources.__add__G  sH    ,,##%MM'')DAJa  * ))ra   c                   V ^8  d   QhRR/# r   r   rR   rY   )r   s   "rb   r   r:  M  s     " "$ "ra   c                	,    \        V P                  4      # r   )rR   r   r   s   &rb   __bool__StructuredSources.__bool__M  s    DLL!!ra   c                   V ^8  d   QhRR/# )r   r   z%T.List[T.Union[File, GeneratedTypes]]rY   )r   s   "rb   r   r:  P  s     J J> Jra   c                	    \        \        P                  P                  V P                  P                  4       4      4      # r   )r  	itertoolschainfrom_iterabler   r$  r   s   &rb   as_listStructuredSources.as_listP  s)    IOO11$,,2E2E2GHIIra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r:  S  s      D ra   c                    V P                   P                  4        F<  pV F3  p\        V\        4      '       d   VP                  '       d     R# K1    R# 	  K>  	  R# )zDo we need to create a structure in the build directory.

This allows us to avoid making copies if the structures exists in the
source dir. Which could happen in situations where a generated source
only exists in some configurations
TF)r   r$  ru  r   is_built)r   filesfs   &  rb   
needs_copyStructuredSources.needs_copyS  sM     \\((*Ea&&zzz# "    + ra   rY   N)r[   r\   r]   r^   r  r   r   r_   r=  rB  rI  rP  r`   rY   ra   rb   r5  r5  :  s;     JO1J3GF 3*"J ra   r5  c                     ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR]R&   RtR]R&   ]! ]R7      t	R]R&   Rt
R]R&   ]P                  R R l4       t]P                  R R l4       tR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 lt]R3 R4 l4       t]R5 R6 l4       t] R7 R8 l4       t!R9 R: lt"R; R< lt#R= R> lt$R? R@ lt%RA RB lt&RCt'RD# )ErM   id  rf   r   r   z'SubProject'r   rR   re   r   r  r4   r>  Frt   build_always_staler  ro   rp   r   build_subdirc                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   Target.__annotate__s  s      # ra   c                	    R # r   rY   r   s   &rb   typenameTarget.typenamer      ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV  w  s      S ra   c                	    R # r   rY   r   s   &rb   type_suffixTarget.type_suffixv  rZ  ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   rV  z  s     
I 
It 
Ira   c                	h   \        V P                  4      '       d9   \        P                  ! \        P
                  ! R V P                   R24      4       V P                  V n        V P                  '       d<   \        P                  P                  V P                  V P                  4      V n        R# R# )z                Target "z" has a path separator in its name.
                This is not supported, it can cause unexpected failures and will become
                a hard error in the future.N)r   r   r   warningtextwrapdedentr   r  rT  r,  r  r   r   s   &rb   __post_init__Target.__post_init__z  s~    		""LL . $,*/ 0 1 GGLLd6G6GHDM ra   c                    V ^8  d   QhRRRR/# r   r  objectr   rR   rY   )r   s   "rb   r   rV         . .F .t .ra   c                	|    \        V\        4      '       g   \        # V P                  4       VP                  4       8  # r   ru  rM   NotImplementedget_idr   r  s   &&rb   __lt__Target.__lt__  ,    %((!!{{}u||~--ra   c                    V ^8  d   QhRRRR/# rg  rY   )r   s   "rb   r   rV         / /F /t /ra   c                	|    \        V\        4      '       g   \        # V P                  4       VP                  4       8*  # r   rk  rn  s   &&rb   __le__Target.__le__  ,    %((!!{{}..ra   c                    V ^8  d   QhRRRR/# rg  rY   )r   s   "rb   r   rV    ri  ra   c                	|    \        V\        4      '       g   \        # V P                  4       VP                  4       8  # r   rk  rn  s   &&rb   __gt__Target.__gt__  rq  ra   c                    V ^8  d   QhRRRR/# rg  rY   )r   s   "rb   r   rV    rs  ra   c                	|    \        V\        4      '       g   \        # V P                  4       VP                  4       8  # r   rk  rn  s   &&rb   __ge__Target.__ge__  rw  ra   c                   V ^8  d   QhRR/# r   r   z/T.Union[T.Tuple[str, str], T.Tuple[None, None]]rY   )r   s   "rb   r   rV    s     " ")X "ra   c                	    \         hr   NotImplementedErrorr   s   &rb   get_default_install_dirTarget.get_default_install_dir      !!ra   c                   V ^8  d   QhRR/# r   r   ru   rY   )r   s   "rb   r   rV    s     " "(L "ra   c                	    \         hr   r  r   s   &rb   r   Target.get_custom_install_dir  r  ra   c                   V ^8  d   QhRR/# )r   r   zLT.Tuple[T.List[T.Union[str, Literal[False]]], T.List[T.Optional[str]], bool]rY   )r   s   "rb   r   rV    s     > >!m >ra   c                	&   V P                  4       w  rV P                  4       pV'       d;   V^ ,          V8w  d-   V^ ,          RJd    RpV Uu. uF  p\        VRR4      NK  	  ppM%RpV'       d   W^ &   MV.pV.\        V4      ,          pW6V3# u upi )r   ToptnameNF)r  r   getattrr   )r   default_install_dirdefault_install_dir_nameoutdirsr   iinstall_dir_namess   &      rb   get_install_dirTarget.get_install_dir  s    8<8T8T8V58<8S8S8Uwqz%88WQZt=S "&FM NgIt!<g N!& 0
./!9 :S\ I+=== !Os   Bc                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV          c ra   c                	    V P                   # r   r   r   s   &rb   get_basenameTarget.get_basename  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV    r  ra   c                	    V P                   # r   r   r   s   &rb   
get_subdirTarget.get_subdir  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV          c ra   c                	    V P                   # r   )rX  r   s   &rb   get_typenameTarget.get_typename  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV    s     ! !# !ra   c                	    V P                   # r   rT  r   s   &rb   get_build_subdirTarget.get_build_subdir  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV    r  ra   c                	    V P                   # r   r  r   s   &rb   get_builddirTarget.get_builddir  r  ra   c                    V ^8  d   QhRRRR/# )r   	target_idrf   r   rY   )r   s   "rb   r   rV    s     ! ! ! !ra   c                	    \         P                  ! 4       pVP                  V P                  R RR7      4       VP	                  4       R,          # )utf-8replace)encodingerrors:N   N)hashlibsha256updateencode	hexdigest)r  hs   & rb   _get_id_hashTarget._get_id_hash  s?     NN	!!79!EF {{}R  ra   c               (    V ^8  d   QhRRRRRRRR/# )r   r   rf   r   r]  r   rY   )r   s   "rb   r   rV    s(      s # C C ra   c                    VP                  RR4      P                  RR4      p\        V4      '       d   Q hW2,           pV '       d&   \        P                  V 4      pVR,           V,           # V# )zmConstruct target ID from subdir, name and type suffix.

This helper function is made public mostly for tests./@\z@@)r  r   rM   r  )r   r   r]  	name_partmy_idsubdir_parts   &&&   rb   construct_id_from_pathTarget.construct_id_from_path  sb     LLc*224=	,,,,' --f5K%--ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV    s     5 5C 5ra   c                	    V P                   p\        V R R4      '       d   VRV P                  ,           ,          pV P                  V P                  WP                  4       4      # )name_suffix_setFr   )r   r  suffixr  r  r]  r   r   s   & rb   id	Target.id  sS    yy4*E22C$++%%D**MM4!1!1!35 	5ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rV    s       ra   c                	    V P                   # r   )r  r   s   &rb   rm  Target.get_id  s    wwra   c                    V ^8  d   QhRRRR/# )r   r   rf   r   r   rY   )r   s   "rb   r   rV    s     2 2 2 2ra   c                	:    V P                   P                  VR 4      # r   )raw_overridesr  r  s   &&rb   get_overrideTarget.get_override  s    !!%%dD11ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   rV    s      D ra   c                	    R # FrY   r   s   &rb   is_linkable_targetTarget.is_linkable_target      ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   rV    s      [ ra   c                	    . # r   rY   r   s   &rb   r  Target.get_outputs      	ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   rV           ra   c                	    R # r  rY   r   s   &rb   should_installTarget.should_install  r  ra   r  N)(r[   r\   r]   r^   r_   rt   rS  r   r  rp   rT  abcabstractpropertyrX  abstractmethodr]  rd  ro  ru  rz  r~  r  r   r  r  r  r  r  r  r2  r  r  r$   r  rm  r  r  r  r  r`   rY   ra   rb   rM   rM   d  s"    IKGT$$ %d ;K;L#  	 
I.
/
.
/
"">.! ! !  $ 5 52 ra   )	metaclassc                    a  ] tR tRt$ ]tR]R&   R]R&   ]! R.4      tR]R&   R V 3R	 llt	R
 R lt
R R ltR tR tR tR R ltR R ltR tR R lt]R R l4       tR R ltR R ltR tR R  ltR! R" ltRR# R$ llt]! R%R&7      R' R( l4       t]! R%R&7      R) R* l4       tR+ R, lt]! R%R&7      R- R. l4       t]! R%R&7      R/ R0 l4       t R1 R2 lt!R3 R4 lt"R5 R6 lt#R7 R8 lt$]%PL                  R9 R: l4       t']%PL                  R; R< l4       t'R= R> lt'R? R@ lt(RA RB lt)RC RD lt*RE RF lt+]! R%R&7      RG RH l4       t,RRI RJ llt-RK t.RL RM lt/RN RO lt0RP RQ lt1RR RS lt2RT RU lt3RV RW lt4RX t5RY RZ lt6R[ R\ lt7R] R^ lt8RR_ R` llt9]! R%R&7      Ra Rb l4       t:Rc Rd lt;RRe Rf llt<Rg Rh lt=RRi Rj llt>Rk Rl lt?Rm Rn lt@Ro Rp ltARq Rr ltBRs Rt ltCRu Rv ltDRw Rx ltERy Rz ltFR{ R| ltGR} R~ ltHR R ltIR tJR R ltKR R ltLR R ltMR R ltN]! R%R&7      RR R ll4       tOR R ltP]QP                  ! R4      tS]QP                  ! R4      tT]QP                  ! R4      tU]VR R l4       tWR R ltXRtYV ;tZ# )rI   i  ru   rv   rO   r   zT.FrozenSet[T.Tuple[str, str]]_MASK_LANGSc               @    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   r   r<   r  r   r   T.List['SourceOutputs']structured_sourcesT.Optional[StructuredSources]objectsT.List[ObjectTypes]r>  r4   r#  T.Dict[str, 'Compiler']kwargsrd   rY   )r   s   "rb   r   BuildTarget.__annotate__
  sz     S$ S$S$ S$ #	S$
 'S$ -S$ !>S$ )S$ %S$ /S$ 0S$ra   c                	  < \         SV `  WVR WHV
P                  RR4      V
P                  RR4      R7       Wn        \	        4       V n        . V n        W`n        . V n        . V n	        V
P                  R4      V n
        . V n        . V n        . V n        . V n        \        4       V n        RV n        RV n        RV n        RV n        RV n        V P&                  .V n        / V n        V
P                  R	\1        \2        4      4      V n        . V n        \        4       V n        . V n        . V n        R
V
P                  R. 4      RV
P                  R. 4      RV
P                  R. 4      RV
P                  RR4      /V n        RV n         RV n!        RV n"        \        4       V n#        RV n$        RV n%        RV n&        V PO                  V4       V PQ                  V4       V PS                  V
4       V PU                  4       V n+        V PY                  V
R4      pV PY                  V
R4      pV P                  P[                  4        V P                  P[                  4        V P]                  V4       V P_                  V4       V Pa                  V
4       \c        V P6                   Uu. uF  p\e        V4      '       d   K  VNK  	  upV P:                  V P                  V P                  V P                  V
Pg                  RR4      .4      '       g   \h        Pj                  ! RV R24       V Pm                  V
4       V Po                  4        V Pq                  4        R# u upi )Trt   FrT  r   )rt   rT  r~   no_nameNr{   rU   rj   rW   rk   rX   rl   rS   rm   r   r   r   zBuild target z has no sources. This was never supposed to be allowed but did because of a bug, support will be removed in a future release of Meson)9superrf  r  all_compilersr   r#  r  r  external_depsinclude_dirsr~   link_targetslink_whole_targetsdepend_filesr}   rF  
added_depsname_prefix_setr  filenamedoctestsdebug_filenameoutputsr  r   r  
extra_argsr   seen_sourcesr+  rp   
d_featuresr   r   both_librpath_dirs_to_remover   r   r   process_sourcelistprocess_objectlistprocess_kwargsprocess_compilersmissing_languagesextract_targets_as_listclearlinkr   _set_vala_argsanyr&   popr   ra  check_unknown_kwargsvalidate_installcheck_module_linking)r   r   r   r   r  r   r  r  r>  r#  r  r  r  srcr  s   &&&&&&&&&&&   rb   rf  BuildTarget.__init__
  s    	z4[a[e[efoqv[w  GM  GQ  GQ  R`  bd  Ge  	f&5@],."4>@35#ZZ8.0ce*,EG%$$!-1" KM;A::oWbcgWh;i%'),35)+VZZ	2.6::or:

#6;

<7	&
 KO25%!,0*.)-( 	(F#!%!7!7!9 33FKH!99&,O!%%'		,*+F#DLLGLS	#SSLGY]YeYe++T-D-DfjjQdfkFln o oLL= /P P Q 	!!&)!!# Hs   M2Mc                    V ^8  d   QhRRRR/# r   r  rd   r   r   rY   )r   s   "rb   r   r  _  s     3 3%@ 3T 3ra   c                	&   V P                  4       '       d{   VP                  R 4      ;'       g    V P                  R,           V n        VP                  R4      ;'       g    V P                  R,           V n        VP                  R4      V n        R# R# )r   z.hr   z.vapir   N)	uses_valar  r   r   r   r   r   r  s   &&rb   r  BuildTarget._set_vala_args_  sg    >>%zz-8LLDII<LD#ZZ4KK		G8KDN"JJz2DM ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   r  e  s     1 14 1ra   c                   V P                  4        V P                  4       '       d   V P                  '       d   V P                  R8w  d   \        R4      hV P                  '       d   \
        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      '       gO   \
        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      '       d   \        R4      hRV n        RV n	        MV P                  '       d   \        R4      hV P                  4       '       d   V P                  eA   V P                  P                  V P                  4       V P                  P                  R
4       V P                  eA   V P                  P                  V P                  4       V P                  P                  R
4       V P                   eC   V P                  P                  V P                   4       V P                  P                  R
4       R	# R	# R	# )zUInitialisations and checks requiring the final list of compilers to be known
        rustz8cannot build Rust sources with a different link_languagec              3  B   "   T F  qP                  R 4      x  K  	  R# 5iz.rsNendswithr(  r  s   & rb   r*  (BuildTarget.post_init.<locals>.<genexpr>n  s     @<a

5))<   TFc              3     "   T FU  p\         ;QJ d*    R  VP                  4        4       F  '       g   K   RM	  RM! R  VP                  4        4       4      x  KW  	  R# 5i)c              3  B   "   T F  qP                  R 4      x  K  	  R# 5ir&  r'  r)  s   & rb   r*  2BuildTarget.post_init.<locals>.<genexpr>.<genexpr>o  s     K?a

5 1 1?r+  TFN)r  r  )r(  gs   & rb   r*  r*  o  s=     eVdQR33K1==?K333K1==?KLLVds   AA+Az;cannot mix Rust structured sources and unstructured sourcesz5structured sources are only supported in Rust targetsNdevel)validate_sources	uses_rustr~   r   r  r  r   r+  r   r   r  r   r  r   rz   r   r   r   s   &rb   	post_initBuildTarget.post_inite  s    	>>!!!d&8&8F&B$%_``&&&3@4<<@333@4<<@AAseVZVdVdessseVZVdVdeee()fgg DHDH&&&$%\]]""$$+##D$4$45  ''0~~)##DNN3  ''0}}(##DMM2  ''0 ) %ra   c                	    R pVP                  V P                  P                  V P                  4       V P                  4      # z<{0} {1}: {2}>)r   r  r[   rm  r  r   repr_strs   & rb   r  BuildTarget.__repr__  s.    #t~~66t}}UUra   c                	    V P                    # r   r  r   s   &rb   __str__BuildTarget.__str__  s    ))ra   c                	    V P                   \        P                  J dX   V P                  '       dD   V P                  P                  4       '       d   \        R 4      h\        P                  ! R4       R# R# R# )zATried to install a target for the build machine in a cross build.zOInstalling target build for the build machine. This will fail in a cross build.N)	r  r   BUILDrt   r>  rb  r   r   ra  r   s   &rb   r  BuildTarget.validate_install  sU    }222t|||..00&'jkkno	 8D2ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r    s     A A+F A4 Ara   c                	<    V P                  WP                  4       R # r   )check_unknown_kwargs_intknown_kwargsr   s   &&rb   r   BuildTarget.check_unknown_kwargs  s     	%%f.?.?@ra   c               $    V ^8  d   QhRRRRRR/# )r   r  rd   rC  
T.Set[str]r   r   rY   )r   s   "rb   r   r    s)     q q/J qZd qim qra   c                	   . pV F%  pVR 8X  d   K  WB9  g   K  VP                  V4       K'  	  \        V4      ^ 8  dB   \        P                  ! RP	                  V P
                  RP                  V4      4      4       R# R# )r{   z-Unknown keyword argument(s) in target {}: {}., N)r   r   r   ra  r   r   r   )r   r  rC  unknownsr  s   &&&  rb   rB  $BuildTarget.check_unknown_kwargs_int  so    AO#$"	 
 x=1LLHOOPTPYPY[_[d[dem[nop ra   c                	6   \        V\        4      '       g   Q h. pV EF;  p\        V\        \        \        34      '       dZ   V P
                  P                  V4       \        V\        4      '       g'   \        V4      '       g   VP                  V4       Kz  K|  K~  \        V\        \        \        34      '       do   VP                  4        Uu. uF  p\        V4      '       d   K  VNK  	  ppV'       d   \        R V^ ,           R24      hV P                  P                  V4       EK  \        R\        V4      P                  : RV P                   : R24      h	  V'       d0   \"        P$                  ! RV^ ,           R2RV P&                  4       R# R# u upi )zGenerated file z) in the 'objects' kwarg is not an object.zBad object of type z in target r   zSource file z1.3.0N)ru  r  rf   r   rK   r  r   r'   rB   rC   rD   r  r   r+  typer[   r   r0   
single_user   )r   r  deprecated_non_objectsr  onon_objectss   &&    rb   r  BuildTarget.process_objectlist  sK   '4((((!#A!c4)9:;;##A&!!%566y||*11!4 @L6A.?OPP*+--/N/Q1qq/N*_[^<LLw+xyy%%a(&)<T!W=M=M<PP[\`\e\e[hhi'jkk  "((<8Nq8Q7RR})~)0$//C " Os   F&Fc                    V ^8  d   QhRRRR/# )r   r   r  r   r   rY   )r   s   "rb   r   r    s     ) )*A )d )ra   c                T   V F  p\        V\        4      '       dK   W P                  9  d9   V P                  P	                  V4       V P                  P                  V4       Ka  Kc  \        V\        \        \        34      '       g   K  V P                  P	                  V4       K  	  R# )aP  Split sources into generated and static sources.

Sources can be:
1. Preexisting source files in the source tree (static)
2. Preexisting sources generated by configure_file in the build tree.
   (static as they are only regenerated if meson itself is regenerated)
3. Sources files generated by another target or a Generator (generated)
N)
ru  r   r  r   r   addrB   rC   rD   r+  r   r   r  s   && rb   r  BuildTarget.process_sourcelist  s{     A!T""---LL''*%%))!, . A.?OPP%%a( ra   c               $    V ^8  d   QhRRRRRR/# )r   r  r  r   r  r   rR   rY   )r   s   "rb   r   r    s#      Z BX ]a ra   c                	    R pVR,           F/  pV P                  V4      '       g   K  VP                  V4       RpK1  	  V# )F:NNNT)can_compileremove)r  r   removedr  s   &&  rb   can_compile_remove_sources&BuildTarget.can_compile_remove_sources  s@    A##A&&q!  ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   r    s     - - -ra   c                $   V P                    F#  pV P                  V,          V P                  V&   K%  	  V P                  '       d   V P                  .M\        pV P                  '       dD   V P                  V P                  9  d)   RV P
                   RV P                   R2p\        V4      hV P                  '       g   V P                  '       d   \        P                  ! V P                  V P                  4       Fu  p\        V\        \        34      '       d   K!  VP                  P                  4        F6  w  rVVR8X  d   K  WR9   g   K  WPP                  9  g   K(  W`P                  V&   K8  	  Kw  	  V P                  '       gE   \        V4       F5  pWP                  9   g   K  V P                  V,          V P                  V&    M	  \!        \#        V P                  P                  4       R R7      4      V n        V P%                  4        R# )a  Processes additional compilers after kwargs have been evaluated.

This can add extra compilers that might be required by keyword
arguments, such as link_with or dependencies. It will also try to guess
which compiler to use if one hasn't been selected already.
zTarget z
 requires z! compiler not part of the projectr$  c                &    \        V ^ ,          4      # r   )r*   )rw  s   &rb   r7  4BuildTarget.process_compilers_late.<locals>.<lambda>  s    *QqT:Jra   )keyN)r  r  r#  r~   r)   r   r   r  r  rF  rG  ru  rB   rC   rt  reversedr   sortedr3  )r   lang
link_langsmrw  r   r  s   &      rb   process_compilers_late"BuildTarget.process_compilers_late  s    **D#'#5#5d#;DNN4  + .2-?-?-?d(()[
!!););;dii[
43E3E2FFgh$Q''  7 7 7__T%6%68O8OPa,0A!BCC&'kk&7&7&9NDv~ !)d...H/7t, ': Q ~~~ !,---+/+=+=d+CDNN4( - %VDNN,@,@,B0J&L Mra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r    s     Z! Z!; Z!ra   c                   . p\        V P                  V P                  V P                  V P                  .4      '       g   V# \        V P                  4      pV P                  P                  4       pV P                  '       du   V P                  P                  P                  4        FL  pV FC  p\        V\        \        34      '       d   VP                  V4       K2  VP                  V4       KE  	  KN  	  V F>  pVP                  4        F'  p\        V4      '       d   K  VP                  V4       K)  	  K@  	  V P                   FE  pVP                   F2  p\        V\        \        34      '       g   K!  VP                  V4       K4  	  KG  	  V P                   F  p	\        V	\        4      '       g   K  V	P!                  V	P"                  . 4      p
V
 FK  pVP$                  R8X  d   K  VP$                  V P&                  9  g   K3  WP&                  VP$                  &   KM  	  K  	  V'       d   V F  pV P(                  P+                  4        F=  w  rVP-                  V4      '       g   K  WP&                  9  d   WP&                  V&    K\  	  \/        V4      '       g   Kq  \1        V4      '       d   K  \2        P4                  ! \        V4      4      P7                  4       pRV P8                  P;                  4        RV: 2p\=        V4      h	  RV P&                  9   d2   RV P&                  9  d!   V P(                  R,          V P&                  R&   RV P&                  9   d   V P?                  R4      pVfG   \A        RV P8                  R7      pV PB                  PD                  PF                  PI                  V4      p V P(                  V,          V P&                  V&   V# V#   \J         d    TP                  T4        T# i ; i)a9  
Populate self.compilers, which is the list of compilers that this
target will use for compiling all its sources.
We also add compilers that were used by extracted objects to simplify
dynamic linker determination.
Returns a list of missing languages that we can add implicitly, such as
C/C++ compiler for cython.
valazNo z machine compiler for ccythoncython_language)machine)&r  r   r+  r  r  r  r  r$  ru  rf   r   r   r  r'   r  rK   r&  r  languager#  r  rt  rY  r,   r&   r-  Pathas_posixr  get_lower_case_namer   r  r%   r>  r
   optstoreget_value_forKeyError)r   r  r   r+  r  r  r  r  r  rO  compsrcsr.  rf  r  r  rh  ro  rc  s   &                 rb   r  BuildTarget.process_compilers  s.    *,DLL$..$,,@W@WXYY$$*.t||*<NN'')	""",,44;;=C!#T{33s+!((-	  >  F'')
 !||NN1% *   ##AYYa#t--NN1%  $ Aa!122--aii<H  ==F*==648NN4==1 !	   &*&8&8&>&>&@ND++A..~~53;NN40	 'A 'q)))A,,&||CF3<<>!$"2"2"F"F"H!II_`d_gh,Q//  T^^#4>>(A"&"4"4S"9DNN3t~~%
 %%&78E} 14;K;KL((11::HHM0(,(:(:5(Au% !     0!((/  0s     O$ $PPc                	.  a  \        S P                  4      ^8  dz   \        ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d8   RP                  S P                  P	                  4       4      p\        RV 24      hR# R# )   c              3  @   <"   T F  qSP                   9   x  K  	  R # 5ir   r#  )r(  rf  r   s   & rb   r*  /BuildTarget.validate_sources.<locals>.<genexpr>[  s     *]nd4>>+An   TFrH  z*Cannot mix those languages into a target: N)csjava)r   r#  r  r   keysr   )r   langss   f rb   r1  BuildTarget.validate_sourcesZ  sl    t~~"ss*]n*]sss*]n*]']']IIdnn1134E"%OPUw#WXX (^"ra   c                    V ^8  d   QhRRRR/# )r   r   z0T.Iterable[T.Union[str, File, BuildTargetTypes]]r   r   rY   )r   s   "rb   r   r  _  s     , ,,\ ,ae ,ra   c                   V F  p\        V\        4      '       d   V P                  P                  V4       K6  \        V\        4      '       dR   V P                  P                  \        P
                  ! V P                  P                  V P                  V4      4       K  V P                  P                  V4       K  	  R# )aM  Process the link_depends keyword argument.

This is designed to handle strings, Files, and the output of Custom
Targets. Notably it doesn't handle generator() returned objects, since
adding them as a link depends would inherently cause them to be
generated twice, since the output needs to be passed to the ld_args and
link_depends.
N)	ru  r   r}   r   rf   from_source_filer>  
source_dirr   rU  s   && rb   process_link_depends BuildTarget.process_link_depends_  s     A!T""!!((+As##!!(())$*:*:*E*Et{{TUVX !!((+ ra   c               $    V ^8  d   QhRRRRRR/# )r   r  z1T.List[T.Union['FileOrString', 'GeneratedTypes']]is_unityrR   r   rK   rY   )r   s   "rb   r   r  q  s$      'X dh m} ra   c                	n   \        V P                  4      p\        V P                  4      p. p. pV EF[  p\        V\        \
        34      '       dy   \        V\        4      '       d   \        R V P                  V4      pM"\        P                  ! RRV P                  4       Ws9  d   \        RV R24      hVP                  V4       K  \        V\        \        \        34      '       d   \        P                  ! RRV P                  4       \        V\        4      '       d   VP                  MTpWt9  d$   W9  d   \        RVP!                  4        R24      hVP                  V4       EK<  \        R\#        V4      P$                   R24      h	  \'        WV4      p	V'       d   V	P)                  4        V	# )	Fz!File argument for extract_objectsz0.50.0z Tried to extract unknown source r   z%Generated sources for extract_objectsz0.61.0zCObject extraction arguments must be strings, Files or targets (got z).)rF  r   r+  ru  rf   r   r   r/   rM  r   r   r   rB   rC   rD   r  r  rL  r[   rK   r0  )
r   r  r  sources_setgenerated_setobj_srcobj_genr  r  eobjss
   &&&       rb   extract_objectsBuildTarget.extract_objectsq  su   $,,'DNN+"$,.C#T{++c3''udkk37C))*MxY]YhYhi)(+KC5PQ)RSSs#C,0A=!QRR%%&MxY]YhYhi'1#7H'I'Is+0K(+KFL_L_LaKbbc)dees#$'jkopsktk}k}j~  A  &B  C  C! " !8((*ra   c                    V ^8  d   QhRRRR/# )r   r  rR   r   rK   rY   )r   s   "rb   r   r    s     5 5T 5=M 5ra   c           	     	^    \        W P                  V P                  V P                  VR R7      # )T)r  )rK   r   r+  r  )r   r  s   &&rb   extract_all_objectsBuildTarget.extract_all_objects  s&    llDNNDLL )t5 	5ra   Nr   c                   V ^8  d   QhRR/# r   r   z'ImmutableListProtocol[BuildTargetTypes]rY   )r   s   "rb   r   r    s      #J ra   c                   \        4       p\        4       pVP                  V 4       V'       d   VP                  4       pW19   d   K   \	        V\
        4      '       d   VP                  VP                  4       KS  \	        V\        4      '       d   VP                  V4       \	        V\        4      '       g   K  VP                  VP                  4       VP                  VP                  4       K  \        V4      # )zGet all shared libraries dependencies
This returns all shared libraries in the entire dependency tree. Those
are libraries needed at runtime which is different from the set needed
at link time, see get_dependencies() for that.
)r   r   
appendleftr  ru  rC   r  rF   rT  rI   
extendleftr  r  r  r   resultstackrw  s   &   rb   get_all_link_depsBuildTarget.get_all_link_deps  s     0:|+07		A{!.//  *!]++

1![))  0  !5!56F|ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s      (O ra   c                .   \        4       p\        4       pVP                  V P                  4       VP                  V P                  4       V'       d   VP                  4       pW19   d   K   \        V\        4      '       d   VP                  VP                  4       KS  \        V\        4      '       g   Kk  VP                  V4       VP                  VP                  4       VP                  VP                  4       K  W9  g   Q R4       h\        V4      # )a   Get all targets that have been linked with this one.

This is useful for cases where we need to analyze these links, such as
for module information.

This includes static libraries and static libraries linked with static
libraries. This differs from :method:`get_all_link_deps` in that it does
add static libs, and differs from `:method:`get_dependencies`, which
does not look for targets that are not directly linked, such as those
that are added with `link_whole`.

:returns: An immutable list of BuildTargets
zshould not have self)r   r   r  r  r  r  ru  rC   r  r  rI   rT  r  r  s   &   rb   get_all_linked_targets"BuildTarget.get_all_linked_targets  s     0:|+07**+001		A{!.//  *![))

1  0  !5!56!9#99!F|ra   c                    V ^8  d   QhRRRR/# r   r   rf   r   zT.Mapping[str, str]rY   )r   s   "rb   r   r    s     = =C =4G =ra   c                	$    V P                  V4      # r   ) get_transitive_link_deps_mappingr   r   s   &&rb   get_link_deps_mapping!BuildTarget.get_link_deps_mapping  s    44V<<ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r    s      s ?R ra   c                	    / pV P                    F7  pVP                  V4      pVP                  4       pVP                  V4       TpK9  	  V# r   )r  r  r  r  )r   r   r  r  mapping
result_tmps   &&    rb   r  ,BuildTarget.get_transitive_link_deps_mapping  sL    #%""A--f5G Jf%F # ra   c                   V ^8  d   QhRR/# r   r   zT.AbstractSet[str]rY   )r   s   "rb   r   r    s      &8 ra   c                	    \        4       pV P                   FW  p\        V\        4      '       g    VP	                  VP                  4       4       VP                  VP                  4       4       KY  	  V# r   )r   r  ru  rG   rT  r  r  get_link_dep_subdirs)r   r  r  s   &  rb   r   BuildTarget.get_link_dep_subdirs  sT    ",,""Aa//

1<<>*MM!0023 # ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r         9 9)X 9ra   c                	:    V P                   P                  4       R 3# )z{libdir})r>  
get_libdirr   s   &rb   r  #BuildTarget.get_default_install_dir      **,j88ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r            (L  ra   c                	    V P                   # r   rv   r   s   &rb   r   "BuildTarget.get_custom_install_dir      ra   c                   V ^8  d   QhRR/# r   r   zT.Optional['FileMode']rY   )r   s   "rb   r   r         ! !)? !ra   c                	    V P                   # r   rw   r   s   &rb   r  #BuildTarget.get_custom_install_mode  r  ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r    s     :N :N%@ :NT :Nra   c                	P   Wn         R V9   d   VR ,          V n        V P                  '       g    VP                  RR4      '       d   RV n        VP                  R/ 4      V n        VP                  R4      V P                  R&   VP                  R4      V P                  R&   \        VR	4      V n        V P                   F$  p\        V\        4      '       d   K  \        R
4      h	  V P                   FM  pRV9   g   VP                  R4      '       g   K#  \        P                  ! \        P                  ! R4      4       KO  	  V P                  VP                  R. 4      4       \        VR4      pV P!                  V4       \        VR4      pV P#                  V4       \%        VP                  R. 4      \        \&        34      V n        VP                  RR4      V n        \-        VP                  RR.4      4      V n        VP                  R. 4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  R. 4      V n        VP                  R4      pVe   W`n        RV n        VP                  R4      pVe   Wpn        RV n        VP                  RR4      V n         VP                  RR4      V n!        VP                  R/ 4      V n"        VP                  RR4      V n#        VP                  R 4      ;'       g    V PH                  V n%        R# )!re   rt   FTr   rh   rn  ri   cppr|   z$Link_args arguments must be strings.z
-Wl,-rpathz-rpathz                    Please do not define rpath with a linker argument, use install_rpath
                    or build_rpath properties instead.
                    This will become a hard error in a future Meson release.
                r}   rs   r   rv   rw   Nrz   rp   rx   r   rg   r   r   r   rr   rq   r   r   r   )&original_kwargsre   r  r  r  r   r|   ru  rf   r   
startswithr   ra  rb  rc  r  add_include_dirsadd_depsr   rR   rv   rw   r   rz   rp   rx   rg   r   r   r  r  r  rr   rq   r   r   r   r   )r   r  r  r8  inclistdeplistr   r   s   &&      rb   r  BuildTarget.process_kwargs  s   %'$*+=$>D!$$$Iu)E)E %)D!#ZZ(:B?

7+ **Y/(=Aa%%&'MNN   Aq ALL$:$:X__ .     	!!&**^R"@A "&*?@g&!&.9g (

="(E),d5"JJ~t<(MD6)JK!::mR8"(**_b"A!::mR8K4jj/"%K#'D jj/"%K#'D ,2JJ7UW[,\)%+ZZ0G%L"#)::.CR#H +1::6SUX+Y(!',?!@!M!MDIIra   c               (    V ^8  d   QhRRRRRRRR/# )	r   r  r   argzLiteral['pic']optionzLiteral['b_staticpic']r   rR   rY   )r   s   "rb   r   r  '  s1     F F'D F> F!7F<@Fra   c                	    R # r   rY   r   r  r  r  s   &&&&rb   _extract_pic_pieBuildTarget._extract_pic_pie&  s    BEra   c               (    V ^8  d   QhRRRRRRRR/# )	r   r  BT.Union[StaticLibraryKeywordArguments, ExecutableKeywordArguments]r  zLiteral['pie']r  zLiteral['b_pie']r   rR   rY   )r   s   "rb   r   r  +  s2     U U'i U,U6FUKOUra   c                	    R # r   rY   r  s   &&&&rb   r  r  *  s    QTra   c               (    V ^8  d   QhRRRRRRRR/# )	r   r  r  r  zLiteral['pic', 'pie']r  zLiteral['b_staticpic', 'b_pie']r   rR   rY   )r   s   "rb   r   r  .  s,      'i 3=\aera   c                	L   V P                   P                  V P                  ,          pVf   Q R4       hVR8X  d/   VP                  4       '       g   VP	                  4       '       d   R# VR8X  d   VP                  4       '       d   R# V P                  R,          V P                  R,          ,           pRVP                  4       ,           V9   g   RVP                  4       ,           V9   d-   \        P                  ! RV R	V R
V P                  : 24       R# \        V4      pVP                  V4      e	   W,          # W`P                   P                  P                  9   dE   V P                   P                  P!                  W4      p\#        V\$        4      '       g   Q R4       hV# R# )Nfor mypyr   Tr   rn  r  z-fz	Use the 'z' kwarg instead of passing '-fz' manually to F)r>  machinesr  	is_darwin
is_windows
is_androidr  lowerupperr   ra  r   r%   r  r
   rv  get_option_for_targetru  rR   )r   r  r  r  rh  	all_flagsr  vals   &&&&    rb   r  r  .  sE   
 %%d&6&67}(j(}%<Q[[]]allnn %<ALLNN OOC(4??5+AA	#))+*dSYY[.@I.MLL9SE)GuN[_[d[dZghif::c?&;""++444""++AA$JCc4((4*4(Jra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r  K  r  ra   c                	    V P                   # r   )r  r   s   &rb   get_filenameBuildTarget.get_filenameK  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r  N       # #O #ra   c                    V P                   # z|
The name of debuginfo file that will be created by the compiler

Returns None if the build won't create any debuginfo file
r  r   s   &rb   get_debug_filenameBuildTarget.get_debug_filenameN       """ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r  V  r  ra   c                	    V P                   # r   r  r   s   &rb   r  BuildTarget.get_outputsV  r   ra   c                    V ^8  d   QhRRRR/# )r   rr  rf   r   ry   rY   )r   s   "rb   r   r  Y  s     ) )s ){ )ra   c                	(    V P                   V,          # r   r  )r   rr  s   &&rb   get_extra_argsBuildTarget.get_extra_argsY  s    x((ra   c                   V ^8  d   QhRR/# r   r   OrderedSet[BuildTargetTypes]rY   )r   s   "rb   r   r  ]  s      "> ra   c                	    \        4       p\        P                  ! V P                  V P                  4       FT  pW!9  g   K  VP                  V4       \        V\        4      '       g   K4  VP                  WP                  4       R 7       KV  	  V# ))include_proc_macros)
r   rF  rG  r  r  rT  ru  rG   get_dependencies_recurser2  r   r  rw  s   &  rb   get_dependenciesBuildTarget.get_dependencies\  si     0:|!2!2D4K4KLA

1a//..v^^M].^	 M
 ra   c               (    V ^8  d   QhRRRRRRRR/# )r   r  r  include_internalsrR   r  r   r   rY   )r   s   "rb   r   r  k  s:     W W/K W`d W  CG W  TX Wra   c                	   T;'       d    V P                  4       pV P                   F  pWA9   d   K  V'       g   VP                  R 8X  d   K&  V'       g   VP                  4       '       g   VP                  V4       \	        V\
        4      '       g   Km  VP                  WV4       K  	  V P                   F  pVP                  WV4       K  	  R# )
proc-macroN)is_internalr  r   rT  ru  rG   r  r  )r   r  r
  r  rw  s   &&&& rb   r  $BuildTarget.get_dependencies_recursek  s    
 .DD$2B2B2D""A{&1+<+<+L 

1!]++**6FYZ # ((A&&vBUV )ra   c                	    V P                   # r   r  r   s   &rb   get_source_subdirBuildTarget.get_source_subdir}  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    r   ra   c                	    V P                   # r   r   r   s   &rb   r   BuildTarget.get_sources  r   ra   c                   V ^8  d   QhRR/# )r   r   r  rY   )r   s   "rb   r   r    s      M ra   c                	    V P                   # r   )r  r   s   &rb   get_objectsBuildTarget.get_objects  r   ra   c                   V ^8  d   QhRR/# )r   r   r  rY   )r   s   "rb   r   r    s      '? ra   c                	    V P                   # r   )r+  r   s   &rb   get_generated_sources!BuildTarget.get_generated_sources      ~~ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r           ra   c                	    V P                   # r   rt   r   s   &rb   r  BuildTarget.should_install  r   ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     = = =ra   c                	    \         ;QJ d4    R  V P                  P                  4        4       F  '       g   K   R# 	  R# ! R  V P                  P                  4        4       4      # )c              3  (   "   T F  qR Jx  K
  	  R # 5ir   rY   r'  s   & rb   r*  &BuildTarget.has_pch.<locals>.<genexpr>  s     <*;QD=*;s   TF)r  r  r$  r   s   &rb   has_pchBuildTarget.has_pch  sA    s<$((//*;<ss<s<s<$((//*;<<<ra   c                   V ^8  d   QhRR/# )r   r   zT.List['IncludeDirs']rY   )r   s   "rb   r   r    s     ! !"7 !ra   c                	    V P                   # r   )r  r   s   &rb   get_include_dirsBuildTarget.get_include_dirs  r  ra   c                	z  a  \        V4      pV EF  pVS P                  9   dO   VP                  4       '       d7   S P                  P                  V4       S P                  P	                  V4       Kc  \        V\        P                  4      '       Ed   S P                  VP                  4       S P                  P                  V 3R  lVP                   4       4       S P                  VP                  VP                  4       4       S P                  P                  VP                  4       S P                   P                  VP"                  4       S P$                  P                  VP&                  4       VP)                  4       '       g   VP+                  4       '       de   \        P                  ! R. VP)                  4       VP+                  4       . . . . . / . . . VP,                  4      pS P.                  P1                  V4       S P3                  VP4                  4       EM3\        V\        P6                  4      '       dh   VS P.                  9  d;   S P.                  P1                  V4       S P                  VP9                  4       4       S P3                  VP4                  4       M\        V\:        4      '       d'   \=        RVP,                   RS P,                   R24      h\?        VR4      '       d   VP@                  p\?        VR4      '       g   \?        VR4      '       d   \=        R4      h\=        R	\C        V4      PD                  : R
24      hVPF                  pR F3  pWT9   g   K  S PF                  V,          P                  WE,          4       K5  	  S P                  P	                  V4       EK  	  R# )c              3  L   <"   T F  qSP                   9  g   K  Vx  K  	  R # 5ir   )rp   )r(  rO  r   s   & rb   r*  'BuildTarget.add_deps.<locals>.<genexpr>  s     '`?atO_O_F_?s   $
$	undefinedzTried to use a build target z as a dependency of target z2.
You probably should put it in link_with instead.held_objectproject_args_frozenglobal_args_frozenzTried to use subproject object as a dependency.
You probably wanted to use a dependency declared in it instead.
Access it by calling get_variable() on the subproject object.z$Argument is of an unacceptable type z.
Must be either an external dependency (returned by find_library() or dependency()) or an internal dependency (returned by declare_dependency()).N)rX   rW   )$r   r  is_namedrZ  rT  ru  r   InternalDependencyr  r   rp   r<  r  rs   get_include_typer  r  	librariesr  whole_librariesget_compile_argsget_link_argsr   r  r   r  ext_deps
Dependencyr   rI   r   hasattrr1  rL  r[   r	  )r   depsr   extpartdep_d_featuresfeatures   f&    rb   r  BuildTarget.add_deps  s   t}Cdoo%<<>>OO**3/OO'',#|>>??''4  '''`3??'``%%c&=&=s?S?S?UV##CKK0!!((7''..s/B/BC''))S->->-@-@*==k>@>A>R>R>T>A>O>O>Q>@"b"bRTVXZ\^`>AhhHG &&--g6cll+C!8!899d000&&--c2++COO,=>cll+C--&)EchhZOjkoktktju vZ (Z [ [ 3..//C3 566'#G[:\:\* ,k l l ')MdSViN`N`Mc d@ (@ A A
 !^^N6,OOG,33N4KL 7 OO$s ra   c                   V ^8  d   QhRR/# )r   r   rn   rY   )r   s   "rb   r   r    s     " "#B "ra   c                	    V P                   # r   )r  r   s   &rb   get_external_depsBuildTarget.get_external_deps  s    !!!ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s      T ra   c                	    R # r  rY   r   s   &rb   r  BuildTarget.is_internal  r  ra   c                    V ^8  d   QhRRRR/# )r   rE  r   r   r   rY   )r   s   "rb   r   r    s     ( (4 ( (ra   c                	   V EF  p\        V\        \        34      '       gO   \        V\        P                  4      '       d    \        \        P                  ! R 4      4      h\        V: R24      hVP                  4       '       g   \        RV: R24      h\        V \        4      '       d?   V P                  '       d-   VP                  4       '       d   V P                  V.RR7       K  \        V \        4      '       d\   \        V\        4      '       dF   VP                  '       g4   RVP                   : RV P                   : R2pVR	,          p\        V4      hV P#                  V4       V P$                  P'                  V4       EK  	  R
# )a                          An external library was used in link_with keyword argument, which
                        is reserved for libraries built as part of this project. External
                        libraries must be passed using the dependencies keyword argument
                        instead, because they are conceptually "external dependencies",
                        just like those detected with the dependency() function.
                    z is not a target.zLink target 'z' is not linkable.T)promoted"Can't link non-PIC static library  into shared library . 9Use the 'pic' option to static_library to build with PIC.N)ru  rM   rC   r   ExternalLibraryr   rb  rc  r   r  rG   rt   r  r   rF   r   r   check_can_link_togetherr  r   )r   rE  rw  msgs   &&  rb   r  BuildTarget.link  s=   Aa&*;!<==a!=!=>>( : *   '!.?'@AA''))&qe;M'NOO$..4<<<AMMOO d3$..:a3O3OXYX]X]X]:166*DYZ^ZcZcYffhiRR&s++((+$$Q'/ ra   c               $    V ^8  d   QhRRRRRR/# )r   rE  r   rL  rR   r   r   rY   )r   s   "rb   r   r    s#     . .": .d .W[ .ra   c                	    V EFv  p\        V\        \        34      '       dI   VP                  4       '       g   \	        R V: R24      hVP                  4       '       d   \	        R4      hM\        V\        4      '       g   \	        V: R24      h\        V \        4      '       dF   VP                  '       g4   RVP                  : RV P                  : R2pVR,          p\	        V4      hV P                  V4       \        V \        4      '       dM   V P                  W24       V P                  '       d*   VP                  4        F  pV P                  VR4       K  	  V P                  P                  V4       EKy  	  R	# )
zCustom target z is not linkable.z<Can only link_whole custom targets that are static archives.z is not a static library.rM  rN  rO  rP  TN)ru  rB   rC   r  r   links_dynamicallyrG   rF   r   r   rR  _bundle_static_libraryrt   get_internal_static_librariesr  r   )r   rE  rL  rw  rS  libs   &&&   rb   r   BuildTarget.link_whole  s>   A!l,=>??++--*^A5@Q+RSS&&((*+ijj )=11&!.G'HIID-00:166*DYZ^ZcZcYffhiRR&s++((+$.. ++A8 <<< >>@33C>  A##**1-- ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r  	  s      /K ra   c                	<    \        4       pV P                  V4       V# r   )r   %get_internal_static_libraries_recurser   r  s   & rb   rY  )BuildTarget.get_internal_static_libraries  s    /9|226:ra   c                    V ^8  d   QhRRRR/# r   r  r  r   r   rY   )r   s   "rb   r   r    s      @ @<X @]a @ra   c                	(   V P                    FE  pVP                  4       '       g   K  W!9  g   K#  VP                  V4       VP                  V4       KG  	  V P                   F,  pVP                  4       '       g   K  VP                  V4       K.  	  R # r   )r  r  rT  r^  r  r  s   && rb   r^  1BuildTarget.get_internal_static_libraries_recurse  se    ""A}}1?

177? # ((A}}77? )ra   c               $    V ^8  d   QhRRRRRR/# )r   rw  zT.Union[BuildTargetTypes]rL  rR   r   r   rY   )r   s   "rb   r   r    s#     9 9(A 9T 9^b 9ra   c                	   V P                  4       '       d   V P                  P                  V4       R# \        V\        \
        34      '       g   VP                  4       '       dg   R VP                  : RV P                  : R2pV'       d5   VRV P                  : RVP                  : RVP                  : R2,          p\        V4      hV P                  P                  VP                  4       4       R# )z*Cannot link_whole a custom or Rust target z into a static library zY. Instead, pass individual object files with the "objects:" keyword argument if possible.z1 Meson had to promote link to link_whole because z is installed but not z', and thus has to include objects from z to be usable.N)
r2  r  r   ru  rB   rC   r   r   r  r  )r   rw  rL  rh  s   &&& rb   rX  "BuildTarget._bundle_static_library  s    >>##**1-L*;<== >affZG^_c_h_h^k lk kAI$))Vlmnmsmslv w??@vvjX Y"1%%LL 5 5 78ra   c                    V ^8  d   QhRRRR/# )r   rw  rJ   r   r   rY   )r   s   "rb   r   r  -  s     	F 	F)9 	Fd 	Fra   c           	     	Z   \        V\        4      ;'       d    VP                  4       pV P                  4       '       g0   V'       d(   \	        R VP
                  : RV P
                  : 24      hV P                  VP                  Jd   V'       d   VP                  R8w  d   RVP                   RVP
                   RV P                   RV P
                   R2	pV P                  P                  4       '       d   \	        VR,           4      h\        P                  ! VR	,           4       R
# R
# R
# )zTry to link Rust ABI library z with a non-Rust target r  zTried to mix a z library ("z
") with a z	 target ""z' This is not possible in a cross build.z This will fail in cross build.N)ru  rI   uses_rust_abir2  r   r   r  r   r>  rb  r   ra  )r   rw  links_with_rust_abirS  s   &&  rb   rR  #BuildTarget.check_can_link_together-  s    (K8NNQ__=N~~$7"%B166*Ldeienendq#rss1==0:MQRQbQbfrQr#AMM?+affXZPTP`P`OaajkoktktjuuvwC..00&s-V'VWWS#DDE Rs0ra   c               $    V ^8  d   QhRRRRRR/# )r   r  zT.Sequence['IncludeDirs']set_is_systemr   r   r   rY   )r   s   "rb   r   r  8  s#     ! !%> ! !jn !ra   c           
     	l   . pV F5  p\        V\        4      '       g   \        R 4      hVP                  V4       K7  	  Vf   RpVR8w  dL   VR8H  pV Uu. uF:  p\        VP	                  4       VP                  4       WVP                  4       4      NK<  	  ppV ;P                  V,          un        R# u upi )zAInclude directory to be added is not an include directory object.Npreservesystem)ru  r  r   r   r  r  r  r  )r   r  ro  idsar  r)  s   &&&    rb   r  BuildTarget.add_include_dirs8  s    %'Aa--&'jkkJJqM   &MJ&%1Inqrnqij;q||~q}}	KaKaKcdnqCrS  ss   A B1c                   V ^8  d   QhRR/# r   r   zT.List[T.Tuple[str, str, str]]rY   )r   s   "rb   r   r  E  s      ; ra   c                	    . # r   rY   r   s   &rb   get_aliasesBuildTarget.get_aliasesE  r  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r  H  s       ra   c                   . pV P                    FA  pVP                  f   K  VP                  V9  g   K&  VP                  VP                  4       KC  	  \        P                  ! V P
                  V P                  4       Fl  p\        V\        \        34      '       d   K!  VP                   F;  pVR8X  d   VP                  4       '       g   K"  WA9  g   K*  VP                  V4       K=  	  Kn  	  V# )aB  
Sometimes you want to link to a C++ library that exports C API, which
means the linker must link in the C++ stdlib, and we must use a C++
compiler for linking. The same is also applicable for objc/objc++, etc,
so we can keep using clink_langs for the priority order.

See: https://github.com/mesonbuild/meson/issues/1653
r$  )r  rr  r   rF  rG  r  r  ru  rB   rC   r#  rk  )r   r  r   link_targetrr  s   &    rb   get_langs_used_by_deps"BuildTarget.get_langs_used_by_depsH  s       %%C||#||5(S\\*	 & %??4+<+<d>U>UVK+6G'HII'11v%k.G.G.I.I(LL* 2 W ra   c                   V ^8  d   QhRR/# )r   r   r7   rY   )r   s   "rb   r   r  g  s     R Rx Rra   c           	     	Z   V P                   '       d    V P                  V P                   ,          pV# \         F+  pW P                  9   g   K   V P                  V,          pVu # 	  \        RV P                  : R24      h  \         d    \        R T P                  : RT R24      hi ; i)z2Could not get a prelinker linker for build target z$. Requires a compiler for language "&", but that is not a project language.z"Could not determine prelinker for r   )r~   r  r)   r#  rx  r   r   )r   r.  r8  	prelinkers   &   rb   get_prelinkerBuildTarget.get_prelinkerg  s    %%d&8&89DKANN"/ $ 2 21 5I !   A$))aPQQ   /(LTYYM Z==>C @../ //s   B)B*c                   V ^8  d   QhRR/# )r   r   z T.Tuple['Compiler', T.List[str]]rY   )r   s   "rb   r   r  w  s     /_ /_6V /_ra   c           	        V P                   '       d/   V P                  V P                   ,          pWP                  4       3# V P                  P                  P
                  V P                  ,          pV P                  4       p\         FB  pW@P
                  9   g	   WC9   g   K   W$,          pT P                  TP                  4      pYV3u # 	  \         F(  p V P                  V,          pWP                  4       3u # 	  \        RV P                  : 24      h  \         d    \        RT P                  : RT R24      hi ; i  \         d     K  i ; i)a{  
We use the order of languages in `clink_langs` to determine which
linker to use in case the target has sources compiled with multiple
compilers. All languages other than those in this list have their own
linker.
Note that Vala outputs C code, so Vala sources can use any linker
that can link compiled C. We don't actually need to add an exception
for Vala here because of that.
z0Could not get a dynamic linker for build target z". Requires a linker for language "r  )r~   r  language_stdlib_only_link_flagsr>  r
   r#  r  r~  r)   rx  r   r   get_used_stdlib_argsrr  AssertionError)r   r.  r  	dep_langsr8  linkerstdlib_argss   &      rb   $get_clink_dynamic_linker_and_stdlibs0BuildTarget.get_clink_dynamic_linker_and_stdlibsw  sT    %%d&8&89D==???
 ((11;;D<L<LM //1	 ANN"an/*-F ,0+D+DV__+U **   A))!,AACCC  OPTPYPY}]^^'   /(J499- X;;<# >../ //   s   $D#E)EEEc                    V ^8  d   QhRRRR/# )r   r~   rf   r   ry   rY   )r   s   "rb   r   r    s     
 
# 
+ 
ra   c                	d   V P                   P                  P                  V P                  ,          p\	        V P                  4      P                  V P                  4       4      p. pV FD  pWQ8w  g   K  WQ3V P                  9  g   K  VP                  W%,          P                  4       4       KF  	  V# r   )
r>  r
   r#  r  rF  unionr~  r  r<  r  )r   r~   r  	all_langsr  dls   &&    rb   r   BuildTarget.get_used_stdlib_args  s    ((11;;D<L<LM'--d.I.I.KL	#%B"':$BRBR'R ""=#4#T#T#VW  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r         ( (4 (ra   c                	     R V P                   9   # )r$  r~  r   s   &rb   r2  BuildTarget.uses_rust      ''ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     \ \t \ra   c                	P    V P                  4       ;'       d    V P                  R9   # )dylib>   rlibr  r  )r2  r   r   s   &rb   rk  BuildTarget.uses_rust_abi  s#    ~~[[D$8$8<[$[[ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     + +d +ra   c                	     R V P                   9   # )fortranr~  r   s   &rb   uses_fortranBuildTarget.uses_fortran  s    DNN**ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    r  ra   c                	     R V P                   9   # )rm  r~  r   s   &rb   r  BuildTarget.uses_vala  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     W W Wra   c                	N    V P                   R 8H  ;'       d    RV P                  9   # )r  swift)r   r#  r   s   &rb   uses_swift_cpp_interop"BuildTarget.uses_swift_cpp_interop  s$    //58VVW=VVra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     b b bra   c                    V P                  4       '       d   V P                  R,          pMV P                  4       w  rT;'       d    VP                  4       R9   # )a  
Check if the dynamic linker is MSVC. Used by Executable, StaticLibrary,
and SharedLibrary for deciding when to use MSVC-specific file naming
and debug filenames.

If at least some code is built with MSVC and the final library is
linked with MSVC, we can be sure that some debug info will be
generated. We only check the dynamic linker here because the static
linker is guaranteed to be of the same type.

Interesting cases:
1. The Vala compiler outputs C code to be compiled by whatever
   C compiler we're using, so all objects will still be created by the
   MSVC compiler.
2. If the target contains only objects, process_compilers guesses and
   picks the first compiler that smells right.
r$  >   r  xilinkoptlinklld-link)r2  r  r  get_linker_id)r   r  _s   &  rb   get_using_msvcBuildTarget.get_using_msvc  sN    & >>))&1HCCEKHaaH2248aaara   c                   V P                    EF=  p\        V\        4      '       g   K  VP                  '       d   K0  V P                  P
                  V P                  ,          P                  4       '       d'   \        RV P                   RVP                   R24      hV P                  P
                  V P                  ,          P                  4       '       d    \        V \        4      '       d
   RVn        K  \        P                  ! RV P                   RVP                   RVP                   RVP                   R2	4       RVn        EK@  	  R# )	zB
Warn if shared modules are linked with target: (link_with) #2865
ztarget z links against shared module z. This is not permitted on OSXTzj, which is incorrect.
             This will be an error in meson 2.0, so please use shared_library() for z7 instead.
             If shared_module() was used for z because it has references to undefined symbols,
             use shared_library() with `override_options: ['b_lundef=false']` instead.N)r  ru  SharedModuleforce_sonamer>  r  r  r  r   r   r  r   deprecation)r   r}  s   & rb   r   BuildTarget.check_module_linking  s(     ,,K+|44[=U=U=U##,,T-=-=>HHJJ(!$)),I+JZJZI[[yz| |%%..t/?/?@KKMMR\]acoRpRp 04K,$$wtyyk9VWbWgWgVh ioozoo  oA AHHSHXHXGY Zs	&s t 04K,% -ra   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   rY   )r   s   "rb   r   r    s     * *0J *t *ra   c                	(   VP                  R 4      pVf   R# \        V\        4      '       d~   \        P                  P                  V4      '       d   \        P                  ! V4      V n        M\        P                  ! V P                  P                  V P                  V4      V n        MU\        V\        4      '       d   W n        M8\        P                  ! VP                  4       VP                  4       4      V n        V P!                  V.4       R# )r   N)r  ru  rf   r,  r  isabsr   from_absolute_filer   r  r>  r  r   from_built_filer  r  r  )r   r  r  s   && rb   process_vs_module_defs_kw%BuildTarget.process_vs_module_defs_kw  s    zz*+<dC  ww}}T""&*&=&=d&C#&*&;&;D<L<L<W<WY]YdYdfj&k#d##"& #'"6"6t7H$J[J[J]"^D!!4&)ra   c               $    V ^8  d   QhRRRRRR/# )r   r  rd   rc  z$T.Literal['link_with', 'link_whole']r   zT.List[LibTypes]rY   )r   s   "rb   r   r    s(      .I Pt   zJ ra   c                	   V P                   P                  P                  P                  \	        R 4      4      pVR8X  d2   \        V \        4      '       d   RpM\        V \        4      '       d   RpVR8X  d   V P                  MV P                  p. p\        VP                  V. 4      4      V,            FR  p\        V\        \        34      '       d#   VP                  VP                  V4      4       KA  VP                  V4       KT  	  V# )default_both_librariesautostaticsharedr   )r>  r
   rv  rw  r%   ru  rG   rF   r  r  r   r  rM   BothLibrariesr   )r   r  rc  bl_type	self_libslib_listrZ  s   &&&    rb   r  #BuildTarget.extract_targets_as_list  s    ""++44BB9MeCfgf$.."D-00";>+;Md&7&7SWSjSj	6::c2./);;C#677 01$	 <
 ra   c                    V ^8  d   QhRRRR/# )r   lib_typeT.Literal['static', 'shared']r   rH   rY   )r   s   "rb   r   r    s      9 h ra   c                    V # zBase case used by BothLibrariesrY   r   r  s   &&rb   r  BuildTarget.get      ra   c                   V ^8  d   QhRR/# )r   r   zT.Tuple[str, ...]rY   )r   s   "rb   r   r    s     
 
&7 
ra   c                	   V P                   P                  P                  P                  \	        R 4      4      R8X  d   \        V P                  4       4      pM\        4       pVP                  R4       VP                  V P                  4       4       V P                  P                  V Uu. uF  q"P                  R4      NK  	  up4       \        V4      # u upi )layoutmirrorz	meson-outr  )r>  r
   rv  rw  r%   r   r  rT  r  /rpaths_for_non_system_absolute_shared_librariesr  r  tuple)r   r  r  s   &  rb   determine_rpath_dirs BuildTarget.determine_rpath_dirs  s    $$--;;Ih<OPT\\ 9 9 ;<F\FJJ{#dJJLM!!((V)LV((7*;V)LMV} *Ms   +Cc                    V ^8  d   QhRRRR/# )r   exclude_systemrR   r   zImmutableListProtocol[str]rY   )r   s   "rb   r   r  *  s     3 3d 3^x 3ra   c                	   \        4       pV P                  P                  4       p\        4       pV'       dA   V P                  P                  4        F"  pVP                  VP                  4       4       K$  	  V P                  4       p\        V P                  P                  4       V P                  P                  4       4      pV P                   EF  pVP                  R9  d   K  VP                   EFS  p	V	P                  R4      '       d   K  \        P                   P#                  V	4      '       g   KD  \        P                   P%                  V	4      w  rVP'                  R4      '       g
   RV9   g   K  W9   d   K  V'       d'   \        P                   P)                  V
4      V9   d   K  \+        W:4      '       dw   V
\-        V4      ^,           R p\        P                   P#                  V4      '       d   Q RV R24       hVP/                  \        P                   P1                  W|4      4       EKB  VP/                  V
4       EKV  	  VP3                  V P5                  VP                  4      4       EK  	  \6        P8                  ! V P:                  V P<                  4       F;  p\?        V\@        4      '       g   K  VP                  VPC                  V4      4       K=  	  \E        V4      # )library-z.so.Nzrel_to_src: z is absolute>   cmaker  	pkgconfig).dll.lib.sor   )#r   r>  get_source_dirrF  r#  r$  r  get_library_dirsget_external_rpath_dirsr   get_build_dirr  	type_namer|   r  r,  r  r  splitr(  r/  r   r   rT  r   difference_updateget_rpath_dirs_from_link_argsrF  rG  r  r  ru  rI   r  r  )r   r  pathssrcdirsystem_dirsccexternal_rpathsbuild_to_srcr   libpathlibdirlibname
rel_to_srcr  s   &&            rb   r  ;BuildTarget.rpaths_for_non_system_absolute_shared_libraries)  s)   !+!!002enn++-""2#6#6#89 . 668t//>>@#//==?A %%C}}$EE==%%c**ww}}W--"$''--"8 $$%FGG( ,277#3#3F#;{#J!&11!'Fa(8!9J!ww}}Z88aLT`:aa8IIbggll<DEIIf%; )> ##D$F$Fs}}$UVE &F !2!2D4K4KLA![))QNN~^_ M E{ra   c                   V ^8  d   QhRR/# )r   r   rF  rY   )r   s   "rb   r   r  _  s     8 8 8ra   c                	    . p\          F:  p WP                  P                  P                  V P                  V4      ,          pK<  	  V P                  V4      #   \
         d     K]  i ; ir   )r.   r>  r
   get_external_link_argsr  rx  r  )r   r  rf  s   &  rb   r  #BuildTarget.get_external_rpath_dirs_  se    +D((11HHIYIY[_`` ,
 11$77  s   6AA'&A'z-Wl,-rpath[=,]([^,]+)z-Wl,-R[,]?([^,]+)z-Wl,--just-symbols[=,]([^,]+)c                    V ^8  d   QhRRRR/# )r   r  ry   r   rF  rY   )r   s   "rb   r   r  v  s        ra   c                	   \        4       pV EF{  pVP                  R 4      '       g   K  V P                  P                  V4      pV'       d9   VP	                  ^4      P                  R4       F  pVP                  V4       K  	  V P                  P                  V4      pV'       d`   VP	                  ^4      P                  R4       F;  p\        P                  P                  V4      '       g   K*  VP                  V4       K=  	  V P                  P                  V4      pV'       g   EK   VP	                  ^4      P                  R4       F7  p\        P                  P                  V4      '       g   K*  \        RV R24      h	  EK~  	  V# )z-Wl,:z Invalid arg for --just-symbols, z is a directory.)rF  r  _rpath_regexmatchgroupr  rT  _runpath_regexr,  r  isdir_symbols_regexr   )clsr  dirsr  rpath_matchdirrunpath_matchsymbols_matchs   &&      rb   r  )BuildTarget.get_rpath_dirs_from_link_argsu  s.   5C>>&))**005K&,,Q/55c:CHHSM ;..44S9M(..q177<Cww}}S)) =  ..44S9M}(..q177<Cww}}S)),/OPSuTd-eff =! ( ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     	 	# 	ra   c                	    V P                   P                  V P                  ,          pVP                  4       '       d   R # VP	                  4       '       d   R# VP                  4       '       d   R# R# )r   r   r   r   )r>  r  r  	is_cygwinr  r  )r   rh  s   & rb   get_platform_scheme_name$BuildTarget.get_platform_scheme_name  sK    %%d&6&67;;==\\^^[[]]ra   )3r  r  r
  re   rg   r#  r	  r  r   r  r  r  rp   r  r+  rq   rr   r  rv   rw   rx   rz   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  cudaT)TFr  r   )[r[   r\   r]   r^   known_build_target_kwargsrC  r_   	frozensetr  rf  r  r3  r  r;  r  r  rB  r  r  r2  r\  ri  r  r1  r  r  r  r	   r  r  r  r  r  r  r   r  r  Toverloadr  r  r  r  r  r  r  r  r   r  r  r  r'  r+  r  rE  r  r  r   rY  r^  rX  rR  r  ry  r~  r  r  r  r2  rk  r  r  r  r  r  r  r  r  r  r  r  recompiler  r  r  classmethodr  r  r`   __classcell__r  s   @rb   rI   rI     s   ,L55"" 3<= 3K/ 
S$ S$j31@VpA
qC&)"  -^Z!xY
,$85 t . t @= t  t 9 !:Nx ZZF F ZZU U:#) t W$=!;%z"(4.2 t 
@9,	F!>R /_b
(\+(Wb440*$$
 t3 3j8 ::67L ZZ 45N ZZ @AN 2	 	ra   c                  2    ] tR tRtRtR R ltR R ltRtR# )	FileInTargetPrivateDiri  zRepresents a file with the path '/path/to/build/target_private_dir/fname'.
target_private_dir is the return value of get_target_private_dir which is e.g. 'subdir/target.p'.
c                   V ^8  d   QhRR/# )r   r0  rf   rY   )r   s   "rb   r   #FileInTargetPrivateDir.__annotate__        c ra   c                	    Wn         R # r   r0  )r   r0  s   &&rb   rf  FileInTargetPrivateDir.__init__      
ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r!           ra   c                	    V P                   # r   r$  r   s   &rb   r;  FileInTargetPrivateDir.__str__  r  ra   r$  N)r[   r\   r]   r^   r  rf  r;  r`   rY   ra   rb   r  r    s     ra   r  c                  `    ] tR tRtRtR R lt]R R l4       tR R ltR	 R
 lt	R R lt
RtR# )FileMaybeInTargetPrivateDiri  z1Union between 'File' and 'FileInTargetPrivateDir'c                   V ^8  d   QhRR/# )r   innerz%T.Union[File, FileInTargetPrivateDir]rY   )r   s   "rb   r   (FileMaybeInTargetPrivateDir.__annotate__  s      C ra   c                	    Wn         R # r   r.  )r   r.  s   &&rb   rf  $FileMaybeInTargetPrivateDir.__init__  r&  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r/    s        s  ra   c                	.    V P                   P                  # r   )r.  r0  r   s   &rb   r0  !FileMaybeInTargetPrivateDir.fname  s    zzra   c               $    V ^8  d   QhRRRRRR/# )r   r  rf   target_private_dirr   rY   )r   s   "rb   r   r/    s!     8 8C 8S 8S 8ra   c                	    \        V P                  \        4      '       d4   \        P                  P                  W P                  P                  4      # V P                  P                  V4      # r   )ru  r.  r  r,  r  r   r0  rel_to_builddir)r   r  r7  s   &&&rb   r9  +FileMaybeInTargetPrivateDir.rel_to_builddir  sG    djj"89977<< 2JJ4D4DEEzz)),77ra   c               $    V ^8  d   QhRRRRRR/# )r   r  rf   r  r   rY   )r   s   "rb   r   r/    s!     : :C :3 :3 :ra   c                	    \        V P                  \        4      '       d   \        R 4      hV P                  P	                  W4      # )zUnreachable code)ru  r.  r  RuntimeErrorabsolute_path)r   r  r  s   &&&rb   r>  )FileMaybeInTargetPrivateDir.absolute_path  s5    djj"899122zz''99ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r/    r(  ra   c                	    V P                   # r   r$  r   s   &rb   r;  #FileMaybeInTargetPrivateDir.__str__  r  ra   r1  N)r[   r\   r]   r^   r  rf  r  r0  r9  r>  r;  r`   rY   ra   rb   r,  r,    s2    ;    8
:
 ra   r,  c                      ] tR tRtRRRRRRRR /R R	 lltR
 R ltR R ltR R ltR R ltR R lt	RR R llt
RtR# )	Generatori  depfileNcaptureFdependsr   c               8    V ^8  d   QhRRRRRRRRRR	R
RRRRR/# )r   envr4   exe/T.Union['Executable', programs.ExternalProgram]	argumentsry   outputrE  r   rF  rR   rG  z$T.Optional[T.List[BuildTargetTypes]]r   rf   rY   )r   s   "rb   r   Generator.__annotate__  sU      K E' % *  ? ra   c               	|    Wn         W n        WPn        W`n        T;'       g    . V n        W0n        W@n        Wn        R # r   )r>  rJ  rE  rF  rG  arglistr  r   )	r   rI  rJ  rL  rM  rE  rF  rG  r   s	   &&&&&$$$$rb   rf  Generator.__init__  s5     18B 	ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rN    s     B B# Bra   c                	f    R pVP                  V P                  P                  V P                  4      # )z
<{0}: {1}>)r   r  r[   rJ  r7  s   & rb   r  Generator.__repr__  s&    t~~66AAra   c                   V ^8  d   QhRR/# )r   r   rK  rY   )r   s   "rb   r   rN    s      H ra   c                	    V P                   # r   )rJ  r   s   &rb   get_exeGenerator.get_exe  r  ra   c                    V ^8  d   QhRRRR/# r   innamerf   r   ry   rY   )r   s   "rb   r   rN    s        ra   c                	   \         P                  P                  V4      p\         P                  P                  V4      ^ ,          pV P                   Uu. uF$  qDP                  RV4      P                  RV4      NK&  	  ppV# u upi r   
@BASENAME@@PLAINNAME@)r,  r  basenamesplitextr  r  )r   r[  	plainnamer`  r)  basess   &&    rb   get_base_outnamesGenerator.get_base_outnames  sm    GG$$V,	77##I.q1^b^j^jk^jYZ<2::=)T^jk ls   *Bc                    V ^8  d   QhRRRR/# rZ  rY   )r   s   "rb   r   rN    s     ^ ^c ^k ^ra   c                	   V P                   f   \        R4      h\        P                  P	                  V4      p\        P                  P                  V4      ^ ,          pV P                   P                  RV4      P                  RV4      # )NzJTried to get dep name for rule that does not have dependency file defined.r^  r_  rE  r   r,  r  r`  ra  r  )r   r[  rb  r`  s   &&  rb   get_dep_outnameGenerator.get_dep_outname  sj    <<"#oppGG$$V,	77##I.q1||##L(;CCMS\]]ra   c                    V ^8  d   QhRRRR/# rZ  rY   )r   s   "rb   r   rN    s     k k# k+ kra   c                	   \         P                  P                  V4      p\         P                  P                  V4      ^ ,          pV P                   Uu. uF$  qDP                  RV4      P                  RV4      NK&  	  up# u upi r]  )r,  r  r`  ra  rP  r  )r   r[  rb  r`  r)  s   &&   rb   get_arglistGenerator.get_arglist  sf    GG$$V,	77##I.q1]a]i]ij]iXY		,199-S]ijjjs   *Bc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   rN  z.T.Iterable[T.Union[str, File, GeneratedTypes]]r   rf   preserve_path_fromr   r  zT.Optional[T.List[str]]rI   T.Optional[EnvironmentVariables]r   z'GeneratedList'rY   )r   s   "rb   r   rN    sD     ! !#Q !!!*9! #:! <	! HW	!ra   c                	   \        T TTVe   TM. Ve   TM	\        4       R7      pV EF  p\        V\        \        34      '       d_   VP
                  P                  V4       VP                  4        Uu. uF(  p\        P                  ! VP                  4       V4      NK*  	  p	pM\        V\         4      '       dX   V'       d   \        R4      hVP
                  P                  V4       VP                  4        Uu. uF  p\        V4      NK  	  p	pMF\        V\        4      '       d.   \        P                  ! V P                  P                   W'4      .p	MV.p	V	 F  pV'       dW   VP#                  V P                  P                   V P                  P$                  4      p
\'        W:4      '       g   \        R4      h\)        V4      pVP+                  WP                  4       K  	  EK  	  V# u upi u upi )N)r  rI  zZgenerator.process: 'preserve_path_from' is not allowed if one input is a 'generated_list'.zmgenerator.process: When using preserve_path_from, all input files must be in a subdirectory of the given dir.)rD   r"   ru  rB   rC   rG  rT  r  r   r  r  r   r  rf   r  r>  r  r>  	build_dirr   r,  add_file)r   rN  r   rp  r  rI  rM  erO  fsabs_fs   &&&&&&     rb   process_filesGenerator.process_files  s   
 %/%;z,@,BD A!l,=>??""1%GH}}W!d**1<<>1=WA}--%*  ,H  I  I""1%9:IA,Q/IAs##++D,<,<,G,GSTS%OOD,<,<,G,GIYIYIcIcdE)*<DD.  0_  `  `/2#3#34  * % X
 Js   4.G,;G1)rP  rF  rG  rE  r>  rJ  r   r  )r   NNN)r[   r\   r]   r^   rf  r  rW  rd  ri  rm  rx  r`   rY   ra   rb   rD  rD    sW     -1 "' BF )&B^k
! !ra   rD  c                      ] tR tRt$ RtR]R&   R]R&   R]R&   R	]R
&   R]R&   R R ltR R ltR R ltR R lt	R R lt
R R ltR R ltR R ltR R ltRtR # )!rD   i  z The output of generator.process.rD  	generatorrf   r   r   rp  ry   r  rq  rI  c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   GeneratedList.__annotate__  s     H Ht Hra   c                	   V P                   P                  V n        \        4       V n        . V n        . V n        / V n        . V n        . V n	        V P                  f   . V n
        V P                  f   \        4       V n        \        V P                   P                  \        P                  4      '       d   V P                   P                  P!                  4       '       g   \#        R4      hV P                   P                  P%                  4       p\&        P(                  P+                  V4      '       d2   V P                  P-                  \.        P0                  ! V4      4       R # R # R # )Nz4Tried to use not-found external program as generator)r{  rJ  r   rF  rG  
infilelistoutfilelistoutmapextra_dependsr   r  rI  r"   ru  r   ExternalProgramfoundr   get_pathr,  r  r  r   r   r  )r   r  s   & rb   rd  GeneratedList.__post_init__  s    NN&&	.1e?A(*HJ*,??"+-DO88-A-CDHdnn(((*B*BCC>>%%++--&']^^>>%%..0Dww}}T"" !!(()@)@)FG #	 Dra   c               (    V ^8  d   QhRRRRRRRR/# )r   infiler,  outfilesry   r>  r4   r   rY   )r   s   "rb   r   r}  1  s0      1L Xc r}   CN ra   c                	   . pVP                  VP                  VP                  4      p\        P                  P                  V P                  4      '       g   Q h\        P                  P                  WPP                  4      p\        P                  P                  V4      pV F1  pVP                  \        P                  P                  Wx4      4       K3  	  V# r   )r>  r  rs  r,  r  r  rp  r   dirnamer   r   )	r   r  r  r>  r  in_absrelpath_segmentofs	   &&&&     rb   add_preserved_path_segment(GeneratedList.add_preserved_path_segment1  s     %%k&<&<k>S>STww}}T445555ggoof&=&=>wws+BMM"'',,|89 ra   c               $    V ^8  d   QhRRRRRR/# )r   newfiler,  r>  r4   r   r   rY   )r   s   "rb   r   r}  ;  s#     ( ( ; (+ (Z^ (ra   c                	   V P                   P                  V4       V P                  P                  VP                  4      pV P
                  '       d   V P                  WV4      pV ;P                  V,          un        W0P                  V&   R # r   )	r  r   r{  rd  r0  rp  r  r  r  )r   r  r>  r  s   &&& rb   rt  GeneratedList.add_file;  sg    w'>>33GMMB"""66w+VHH$'Gra   c                   V ^8  d   QhRR/# )r   r   z#T.List[FileMaybeInTargetPrivateDir]rY   )r   s   "rb   r   r}  C  s      ? ra   c                	    V P                   # r   )r  r   s   &rb   
get_inputsGeneratedList.get_inputsC  r  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r}  F  s        [  ra   c                	    V P                   # r   )r  r   s   &rb   r  GeneratedList.get_outputsF  r  ra   c                    V ^8  d   QhRRRR/# )r   r  r,  r   ry   rY   )r   s   "rb   r   r}  I  s     % %(C % %ra   c                	(    V P                   V,          # r   )r  )r   r  s   &&rb   get_outputs_forGeneratedList.get_outputs_forI  s    {{8$$ra   c                   V ^8  d   QhRR/# )r   r   z'Generator'rY   )r   s   "rb   r   r}  L  s      { ra   c                	    V P                   # r   )r{  r   s   &rb   get_generatorGeneratedList.get_generatorL  r  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r}  O  s       ra   c                	    V P                   # r   r  r   s   &rb   r  GeneratedList.get_extra_argsO  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r}  R  r  ra   c                	    V P                   # r   r  r   s   &rb   r  GeneratedList.get_subdirR  r  ra   )	r   rG  rI  r  r  r  r   r  r  N)r[   r\   r]   r^   r  r_   rd  r  rt  r  r  r  r  r  r  r`   rY   ra   rb   rD   rD     sW     +K''	))H0( % ra   c                     a  ] tR tRt]tRtR V 3R lltR V 3R lltR V 3R llt	R	 R
 lt
R tR tR R ltR R ltR R ltR R ltR R ltR R ltRtV ;t# )
ExecutableiV  
executablec               @    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   r   r<   r  r   r   r  r  r  r  r  r>  r4   r#  r  r  r   rY   )r   s   "rb   r   Executable.__annotate__[  sn     / // / #	/
 '/ -/ !>/ )/ %/ // //ra   c                	  < V
P                  R R4      V n        V
P                  RR4      V n        \        SV `  WW4WVVWV
4
       V
P                  R4      ;'       g    RV n        V P                  V
RR4      V n        V
P                  R4      V n        V P                  V n	        RV n
        R	V n        V P                  V
4       R	# )
r   Fr   binr   consoler   b_pier   N)r  r   r   r  rf  r   r  r   implib_nameis_linkwithablewas_returned_by_find_programr   r  r   r   r   r   r  r   r  r  r>  r#  r  r  s   &&&&&&&&&&&rb   rf  Executable.__init__[  s     %jj)95A%zz*;UCz]d$	9#ZZ8EEI((@!::h/#22,1)04&&v.ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r  w  s     + +%@ +T +ra   c                	N   < V P                   '       d   \        SV `	  V4       R # R # r   )r   r  r  r   r  r  s   &&rb   r  Executable._set_vala_argsw  s#     G"6* ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   r  }  s     B0 B04 B0ra   c                	  < \         SV `  4        V P                  P                  V P                  ,          p\        V R 4      '       g   RV n        \        V R4      '       Eg@   VP                  4       '       g(   VP                  4       '       g   RV P                  9   d
   RV n
        EMVP                  P                  R4      '       g   VP                  R8X  d
   RV n
        EMRV P                  9   d7   V P                  R,          P                  4       P                  R	4      '       gH   R
V P                  9   d@   V P                  R
,          P                  4       P                  R	4      '       d
   RV n
        EM'RV P                  9   d7   V P                  R,          P                  4       P                  R4      '       gH   R
V P                  9   d@   V P                  R
,          P                  4       P                  R4      '       d
   RV n
        EMRV P                  9   d@   V P                  R,          P                  4       P                  R4      '       d
   RV n
        EM@RV P                  9   d'   V P                  R,          P                  4       R9   g8   R
V P                  9   d/   V P                  R
,          P                  4       R9   d	   RV n
        MRV P                  9   d'   V P                  R,          P                  4       R9   g8   R
V P                  9   d/   V P                  R
,          P                  4       R9   d	   RV n
        MTRV P                  9   d/   V P                  R,          P                  4       R8X  d	   RV n
        MVP                  4       V n
        V P                  V n        V P                  '       d#   V P                  V P                   ,           V n        V P                  '       d+   V ;P                   RV P                  ,           ,          un        V P                   V P"                  ^ &   RV n        RV n        V P(                  '       d   V P*                  ;'       g    V P                  R,           pVP                  4       '       g   VP                  4       '       d-   V P-                  4       '       d   V R2V n        MRV R2V n        VP                  4       ;'       d    RV P                  9   ;'       g1    V P/                  4       ;'       g    V P-                  4       ;'       d9    V P                  P0                  P2                  P5                  \7        R4      4      pV'       dI   V P                  p\9        V RR4      R8w  d   VRV P                  ,           ,          pVR,           V n        R# R# )r   r   r  r  rJ  wasm
emscriptenjsrn  armclangr  axfccrxabsxc16elfoutneftaskingr   Nz.exer  rZ  .arU   r  .pdb>   tic2000c6000>   mwccarmmwcceppc)r  r3  r>  r  r  r=  r   r  r  r#  r  rr  r  rm  get_exe_suffixr   r  r  import_filenamer  r   r  r  r2  r
   rv  rw  r%   r  )r   rq  implib_basenamecreate_debug_filer   r  s   &    rb   r3  Executable.post_init}  s+   ""++D,<,<= tX&&DKtX&&!!##w'8'8':':ddnn>T#**622gnn6T"'DNN3,?,F,F,H,S,ST^,_,_4>>)dnnU.C.J.J.L.W.WXb.c.c#'DNN3,?,F,F,H,S,STZ,[,[4>>)dnnU.C.J.J.L.W.WX^._._#'DNN3,?,F,F,H,S,STZ,[,[#'DNN3,?,F,F,HLd,d4>>)dnnU.C.J.J.LPh.h#'DNN3,?,F,F,HLc,c4>>)dnnU.C.J.J.LPg.g#'DNN3,?,F,F,HI,U#%446		;;; KK$--7DM;;;MMS4;;..M--Q  $" "..DD$))f2DO!!##w'8'8':':&&((.=->d+CD(-00A+DD(   U U'TT4>>+;TTt?R?R?TU U   ))22@@7AST	 	 
 99DtXu-6dkk))"&-D ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    r  ra   c                	:    V P                   P                  4       R 3# )z{bindir})r>  
get_bindirr   s   &rb   r  "Executable.get_default_install_dir  r  ra   c                    V P                   # )z,Human friendly description of the executabler  r   s   &rb   descriptionExecutable.description  s    yyra   c                	    R # )z@exerY   r   s   &rb   r]  Executable.type_suffix      ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r         $ $_ $ra   c                    V P                   # z
The name of the import library that will be outputted by the compiler

Returns None if there is no import library required for this platform
r  r   s   &rb   get_import_filenameExecutable.get_import_filename       ###ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    r  ra   c                    V P                   # r  r  r   s   &rb   r  Executable.get_debug_filename  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     $ $D $ra   c                	    V P                   # r   )r  r   s   &rb   r  Executable.is_linkable_target  s    ###ra   c                   V ^8  d   QhRR/# )r   r   z'ImmutableListProtocol[str]'rY   )r   s   "rb   r   r    s      9 ra   c                    V P                   # )zqProvides compatibility with ExternalProgram.

Since you can override ExternalProgram instances with Executables.
r  r   s   &rb   get_commandExecutable.get_command  s    
 ||ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     8 8# 8ra   c                j    \         P                  P                  V P                  V P                  4      # ),Provides compatibility with ExternalProgram.)r,  r  r   r   r  r   s   &rb   r  Executable.get_path  s    ww||DKK77ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s      t ra   c                    R# )r  TrY   r   s   &rb   r  Executable.found  s    ra   )r  r   r  r  r  r  r   r   r   r  r   r  r   )r[   r\   r]   r^   known_exe_kwargsrC  rX  rf  r  r3  r  r  r]  r  r  r  r  r  r  r`   r  r  s   @rb   r  r  V  s`    #LH/ /8+ +B0 B0H9$#$8 ra   r  c                     a  ] tR tRt]tRtR V 3R lltR V 3R lltR R lt	R	 R
 lt
R R ltR tR R ltR R ltR R ltRR R lltRtV ;t# )rG   i  zstatic libraryc               @    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   r   r<   r  r   r   r  r  r  r  r  r>  r4   r#  r  r  r   rY   )r   s   "rb   r   StaticLibrary.__annotate__  sz     E EE E #	E
 'E -E !>E )E %E /E 2Era   c                	  < V
P                  R R4      V n        V
P                  RR4      V n        \        SV `  WW4WVVWV
4
       V P                  V
RR4      V n        V P                  '       g   V P                  V
RR4      V n        R# R# )	r   Fr   r  r   b_staticpicr   r  N)r  r   r   r  rf  r  r   r   r  s   &&&&&&&&&&&rb   rf  StaticLibrary.__init__  s     zz)U3%zz*;VDz]d$	9((Fxxx,,VUGDDH ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   r  	  s      (  (4  (ra   c                	  <a  \         SS `  4        R S P                  9   d   \        R4      hS P	                  4       '       Ed   S P
                  R8X  dg   \        ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d'   \        RS P                   RS P
                   R	24      hS P
                  R
8X  d   S P                  R,          pRVP                  4       ,           R,           .pW!P                  ,          p\        P                  ! R. . V. . . . . / . . . R4      pS P                  P                  V4       S P                  4       w  rES P                  '       g   VS n        S P"                  '       g   VS n        S P                   S P                  ,           R,           S P$                  ,           S n        S P&                  S P(                  ^ &   R# )r  z&Static libraries not supported for C#.r  c              3  @   <"   T F  qSP                   9   x  K  	  R # 5ir   r  r(  rn  r   s   & rb   r*  *StaticLibrary.post_init.<locals>.<genexpr>	  s     5^o499nor  r   TFRust crate  type  does not allow spaces, periods or dashes in the library name due to a limitation of rustc. Replace them with underscores, for example	staticlibr$  z-Lz/self-containedr0  _rust_native_static_libsNr   r   )r  r3  r#  r   r2  r   r  r   get_target_libdirnative_static_libsr   r5  r  r   #determine_default_prefix_and_suffixr  r   r  r  r  r  )r   rustcr|   r  default_prefixdefault_suffixr  s   f     rb   r3  StaticLibrary.post_init	  s   4>>!"#KLL>>##v-##5^o5^###5^o5^2^2^&TYYKvdFZFZE[ \T (T U U ##{2 v.!E$;$;$==@QQR	555	 33KR46BBBPRTV4NP ""))!,)-)Q)Q)S&###(DK###(DKdii/#5C--Qra   c                   V ^8  d   QhRR/# )r   r   r   rY   )r   s   "rb   r   r  )	  s     &  & 5F & ra   c                	"   V P                   P                  P                  V R 4      p\        V\        4      '       g   Q R4       hVR8X  d!   V P                  4       p\        V,          w  r4MRpRp\        V R4      '       g   Rp\        V R4      '       Egy   V P                  4       '       d-   V P                  R8X  d   RpW43# V P                  R8X  d   R	pW43# V P                   P                  V P                  ,          P                  4       '       dD   V P                   P                  P                  P                  \        R
4      4      '       d   RpW43# R	pRV P                   9   d   V P                   R,          P#                  4       R8X  d   V P$                  '       gn   \        RV P&                  V P                  4      pV P                   P                  P                  W4      p\        V\(        4      '       g   Q R4       hV'       d   RpW43# )namingschemer  platformr   r   rZ  r  r  r	  rt  
os2_emxomfrn  r  b_ltoma)r>  r
   r  ru  rf   r  r   r=  r2  r   r  r  is_os2rv  rw  r%   r#  rm  r   r   rR   )r   scheme
schemenamer   r  rc  r  s   &      rb   r  1StaticLibrary.determine_default_prefix_and_suffix)	  s   !!**@@~V&#&&2
2&Z668J9*ENFFFF tX&&FtX&&~~''61#F  ))[8 F  !!**4+;+;<CCEE$JZJZJcJcJlJlJzJz  |E  FR  |S  KT  KT  $..(T^^C-@-G-G-IY-V_c_k_k_k#GT__d>N>NOC((11GGRA%a..:
:.!%ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r  Q	        C 4G ra   c                	    / # r   rY   r  s   &&rb   r  #StaticLibrary.get_link_deps_mappingQ	  r  ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r  T	       H H)X Hra   c                	:    V P                   P                  4       R 3# )z{libdir_static})r>  get_static_lib_dirr   s   &rb   r  %StaticLibrary.get_default_install_dirT	      2246GGGra   c                	6    V P                  4       '       d   R # R# )z@rlibz@sta)rk  r   s   &rb   r]  StaticLibrary.type_suffixW	  s    ,,..w:F:ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r  Z	        D ra   c                	    R # r  rY   r   s   &rb   r   StaticLibrary.is_linkable_targetZ	      ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r  ]	  s        T  ra   c                	$    V P                   '       * # r   r!  r   s   &rb   r  StaticLibrary.is_internal]	  s    <<ra   c                    V ^8  d   QhRRRR/# )r   shared_libraryrF   r   r   rY   )r   s   "rb   r   r  `	       & & &4 &ra   c                	^    \         P                   ! V4      V n        R V P                  n        R # r   r  r
  )r   r4  s   &&rb   
set_sharedStaticLibrary.set_shared`	      		.1!%ra   c               $    V ^8  d   QhRRRRRR/# r   r  r  r  rR   r   rH   rY   )r   s   "rb   r   r  d	  #      9 d W_ ra   c                	    T pVR 8X  d   V P                   ;'       g    T pV'       d1   V P                   Uu. uF  qDP                  VR4      NK  	  upVn        V# u upi )r  Tr
  r  r  r   r  r  r  rw  s   &&&  rb   r  StaticLibrary.getd	  V    x]]**dFBFBSBS"TBSQ554#8BS"TF #U   A)r
  r  r   r   r   r   r   r  r  )r[   r\   r]   r^   known_stlib_kwargsrC  rX  rf  r3  r  r  r  r]  r  r  r8  r  r`   r  r  s   @rb   rG   rG     sS    %LHE E( (  (D& PH; & ra   c                     a  ] tR tRt]tRtRtR V 3R lltR V 3R llt	R R	 lt
R
 R ltR R ltR tR V 3R lltR R ltR R ltR R ltR tR R ltR R ltRR R lltRtV ;t# ) rF   il	  zshared libraryTc               <    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   rf   r   r   r<   r  r   r   r  r  r  r  r  r>  r4   r#  r  rY   )r   s   "rb   r   SharedLibrary.__annotate__t	  sd     9 99 9 #	9
 '9 -9 !>9 )9 %9 /9ra   c                	   < R V n         R V n        R V n        R V n        R V n        R V n        R V n        RV n        V
P                  RR4      V n	        \        SV `-  WW4WVVWV
4
       R # )NFr   r  )r   	ltversionr   r   r   r  r  shared_library_onlyr  r   r  rf  r  s   &&&&&&&&&&&rb   rf  SharedLibrary.__init__t	  sq     +/*.>B"*.#"#( %zz*;WEz]d$	9ra   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   rH  	  s     # #4 #ra   c                	  <a  \         SS `  4        S P                  4       '       dx   S P                  R 8w  dg   \        ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d'   \        RS P                   RS P                   R24      h\        S R4      '       g   RS n        \        S R	4      '       g   RS n	        R
S n
        S P                  4        R# )cdylibc              3  @   <"   T F  qSP                   9   x  K  	  R # 5ir   r  r  s   & rb   r*  *SharedLibrary.post_init.<locals>.<genexpr>	  s     7`P_1TYYP_r  TFr  r  r  r   Nr  {0.prefix}{0.name}.{0.suffix}r  )r  r3  r2  r   r  r   r   r=  r   r  basic_filename_tpldetermine_filenames)r   r  s   frb   r3  SharedLibrary.post_init	  s    >>##x/CC7`P_7`CCC7`P_7`4`4`&TYYKvdFZFZE[ \T (T U U tX&&DKtX&&DK"A  "ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   rH  	  s     
 
C 
4G 
ra   c                	*   / pV P                  V4      p\        V 4      pWC9  d^   V P                  4       pV P                  4       w  p p\        P
                  P                  W^ ,          V4      pVP                  WH/4       VP                  V4       V# ra  )r  r   r  r  r,  r  r   r  )	r   r   r  mappingsoldr0  r  r  news	   &&       rb   r  #SharedLibrary.get_link_deps_mapping	  s    #%88@1$7%%'E 002MGQ'',,vqz59CMM3*%ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   rH  	  r$  ra   c                	:    V P                   P                  4       R 3# )z{libdir_shared})r>  get_shared_lib_dirr   s   &rb   r  %SharedLibrary.get_default_install_dir	  r(  ra   c                   V ^8  d   QhRR/# )r   r   z!T.Tuple[str, str, str, str, bool]rY   )r   s   "rb   r   rH  	  s     kV kV'H kVra   c                	|   V P                   P                  P                  V R 4      p\        V\        4      '       g   Q R4       hVR8X  d"   V P                  4       p\        V,          w  r4pMRpRpRpV P                  pRpRpV P                  V n        RpRV P                  9   d   RpRpRpR	pEMV P                   P                  V P                  ,          P                  4       '       d   Ve   TMRpV P                  4       '       dD   Ve   TMRpR
pV P                   P                  P                  P                  \!        R4      4      pMV P#                  4       '       dS   Ve   TMRpVe   TMRpRV,           pV P                   P                  P                  P                  \!        R4      4      pMVe   TMRpVe   TMRpRV,           pV P$                  '       d   RpEMVRpEMRV P                   P                  V P                  ,          P'                  4       '       dS   RpRpVe   TMRpV P(                  e   V P(                  MRp	V	R,           V,           pV P$                  '       d   RpEMRpEMV P                   P                  V P                  ,          P+                  4       '       d+   Ve   TMRpVe   TMRpV P$                  '       d   RpEMdRpEM`V P                   P                  V P                  ,          P-                  4       '       d   Ve   TMRpVe   TMRpRpEMV P                   P                  V P                  ,          P/                  4       '       d   Ve   TMRpVe   TMRpVfC   V P                   P                  P                  P                  \!        R4      4      '       d   RMRpRV,           pV P0                  '       d   RMRpV P$                  '       d
   VR,          pVR,          pM<Ve   TMRpVe   TMRpV P2                  '       d   RpMV P$                  '       d   RpMRpW4WhV3# )r  r  r  NFr  r   dllrR  Tz{0.prefix}{0.name}.dll.librU   rZ  z{0.prefix}{0.name}.z.dll.az{0.prefix}{0.name}z+{0.prefix}{0.name}-{0.soversion}.{0.suffix}cygz{0.name}r  z+{0.prefix}{0.name}.{0.soversion}.{0.suffix}sor  z_dll.libz_dll.az{0.shortname}z{0.soversion}z.{0.suffix}z+{0.prefix}{0.name}.{0.suffix}.{0.ltversion}z+{0.prefix}{0.name}.{0.suffix}.{0.soversion})r>  r
   r  ru  rf   r  r   rS  filename_tplr#  r  r  r  r2  rv  rw  r%   r  r   r  r   r  r  r  r   rJ  )
r   r  r  r   r  import_suffixre  r  import_filename_tplimport_prefixs
   &         rb   determine_naming_info#SharedLibrary.determine_naming_info	  s   !!**@@~V&#&&2
2&Z668J,H,T)FMFF M..!! 33" 4>>!FF:L $ &&t'7'78CCEE%1VuF~~#)#52&B#$($4$4$=$=$F$F$T$TU^_fUg$h!$$&&#)#521>1JPU&;m&K#$($4$4$=$=$F$F$T$TU^_fUg$h! $*#551>1JPX&:]&J#~~~L>&&t'7'78BBDDF F-:-FMHM+/;;+BDKKM"/*"<}"L~~~L>&&t'7'78BBDD%1VuF%1VwF~~~L  ?&&t'7'78CCEE%1VuF%1VtF:L&&t'7'78??AA%1VrF%1VuF$.2.>.>.G.G.P.P.^.^_hiu_v.w.w
  ~F"6"F.2nnn?BVL~~~/M)L%1VuF%1VtF~~~LL  ?CTUUra   c                   V P                  4       w  rr4pV P                  f   Wn        V P                  f   W n        W0n        V P                  P	                  V 4      V n        V P                  P                  V P                  ,          P                  4       '       d   \        P                  P                  V P
                  4      ^ ,          p\        V4      ^8  dF   VR,          pV P                  '       d+   VR\        V P                  4      )  V P                  ,           pRP	                  W`P                  4      V n        V'       d   VP	                  V 4      V n        V P
                  V P                   ^ &   V'       d?   \        P                  P                  V P
                  4      ^ ,          R,           V n        R# R# )a1  
See https://github.com/mesonbuild/meson/pull/417 for details.

First we determine the filename template (self.filename_tpl), then we
set the output filename (self.filename).

The template is needed while creating aliases (self.get_aliases),
which are needed while generating .so shared libraries for Linux.

Besides this, there's also the import library name (self.import_filename),
which is only used on Windows and OS/2 since on that platform the linker uses a
separate library called the "import library" during linking instead of
the shared library (DLL).
N:N   Nz{}.{}r  )ri  r   r  re  r   r  r>  r  r  r  r,  r  ra  r   r   r  r  r  )r   r   r  re  rg  r  r   s   &      rb   rT  !SharedLibrary.determine_filenames
  sD    PTOiOiOkL;L;; K;; K())006$$T%5%56==??77##DMM215D4y1}Bx>>> 5#dnn"5!56GD#NN4=DM#6#=#=d#CD  --Q"$''"2"24=="A!"Dv"MD ra   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   rY   )r   s   "rb   r   rH  B
  s     1 1%B 1t 1ra   c                	f  < \         SV `  V4       V P                  P                  V P                  ,          P                  4       '       g   VP                  R 4      V n        VP                  R4      V n        V P                  f6   V P                  e(   V P                  P                  R4      ^ ,          V n        VP                  R4      V n
        V P                  f,   V P                  e   V P                  V P                  3V n
        V P                  V4       VP                  R4      V n        R# )r   r   Nr   r   r   )r  r  r>  r  r  r  r  rJ  r   r  r   r  r   r  s   &&rb   r  SharedLibrary.process_kwargsB
  s    v&(()9)9:EEGG#ZZ	2DN#ZZ4DN~~%$..*D "&!5!5c!:1!=#)::.?#@D ##+0J(,'G$ 	&&v.  K0ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rH  Z
  r  ra   c                    V P                   # r  r  r   s   &rb   r  !SharedLibrary.get_import_filenameZ
  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rH  b
  r  ra   c                    V P                   # r  r  r   s   &rb   r   SharedLibrary.get_debug_filenameb
  r  ra   c                   V ^8  d   QhRR/# rw  rY   )r   s   "rb   r   rH  j
  s      ; ra   c                J   . pV P                   R9  g   V P                  '       g   V# V P                   R8X  d   V P                  '       d   V P                  V P                  8w  di   V P                  P	                  RR4      pVP                  V 4      pV P                  ^ ,          ;'       g    RpVP                  W0P                  V34       MV P                  pV P                  ^ ,          ;'       g    RpVP                  V P                  P                  V 4      W434       V# )z
If the versioned library name is libfoo.so.0.100.0, aliases are:
* libfoo.so.0 (soversion) -> libfoo.so.0.100.0
* libfoo.so (unversioned; for linking) -> libfoo.so.0
Same for dylib:
* libfoo.dylib (unversioned; for linking) -> libfoo.0.dylib
rd  rJ  r   runtimer0  )rd  r  )
r  r   rJ  re  r  r   rz   r   r  rS  )r   aliases	alias_tplltversion_filenametags   &    rb   ry  SharedLibrary.get_aliasesj
  s     35 ;;o-T^^^N
 ;;$4>>>dnn6V))11+{KI!*!1!1$!7""1%22CNN.sCD "& q!,,W//66t<>PVWra   c                	    R # )z@sharY   r   s   &rb   r]  SharedLibrary.type_suffix
  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   rH  
  r,  ra   c                	    R # r  rY   r   s   &rb   r   SharedLibrary.is_linkable_target
  r/  ra   c                    V ^8  d   QhRRRR/# )r   static_libraryrG   r   r   rY   )r   s   "rb   r   rH  
  r5  ra   c                	^    \         P                   ! V4      V n        R V P                  n        R # r   r7  )r   r  s   &&rb   
set_staticSharedLibrary.set_static
  r:  ra   c               $    V ^8  d   QhRRRRRR/# r<  rY   )r   s   "rb   r   rH  
  r=  ra   c                	    T pVR 8X  d   V P                   ;'       g    T pV'       d1   V P                   Uu. uF  qDP                  VR4      NK  	  upVn        V# u upi )r  Tr?  r@  s   &&&  rb   r  SharedLibrary.get
  rB  rC  )rS  r
  r   r  r  re  r  rJ  r   r   rK  r   r   r  r   r  )r[   r\   r]   r^   known_shlib_kwargsrC  rX  aix_so_archiverf  r3  r  r  ri  rT  r  r  r  ry  r]  r  r  r  r`   r  r  s   @rb   rF   rF   l	  su    %LH N9 98# # 
HkVZ$NL1 10$#@& ra   c                  F   a  ] tR tRt]tRtRtR V 3R lltR R lt	Rt
V ;t# )	r  i
  zshared moduleFc               <    V ^8  d   QhRRRRRRRRRR	R
RRRRRRR/	# rG  rY   )r   s   "rb   r   SharedModule.__annotate__
  sd     " "" " #	"
 '" -" !>" )" %" /"ra   c                	   < R V
9   d   \        R4      hRV
9   d   \        R4      h\        SV `	  WW4VWgWV
4
       RV n        R# )r   z2Shared modules must not specify the version kwarg.r   z4Shared modules must not specify the soversion kwarg.FN)r   r  rf  r  r  s   &&&&&&&&&&&rb   rf  SharedModule.__init__
  sR      !UVV&  !WXXz+kf	V "ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r  
  s     N N)X Nra   c                	:    V P                   P                  4       R 3# )z{moduledir_shared})r>  get_shared_module_dirr   s   &rb   r  $SharedModule.get_default_install_dir
  s    5579MMMra   )r  )r[   r\   r]   r^   known_shmod_kwargsrC  rX  r  rf  r  r`   r  r  s   @rb   r  r  
  s*    %LH N" ",N Nra   r  c                  R    ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltRt	R# )r  i
  c               (    V ^8  d   QhRRRRRRRR/# )	r   r  rF   r  rG   preferred_libraryzLiteral['shared', 'static']r   r   rY   )r   s   "rb   r   BothLibraries.__annotate__
  s*     1 1} 1m 1Xs 1x| 1ra   c                	`    W0n         Wn        W n        V P                  P                  V n        R # r   _preferred_libraryr  r  r   )r   r  r  r  s   &&&&rb   rf  BothLibraries.__init__
  s#    "3++00ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r  
  s     Z Z# Zra   c                	`    R \        V P                  4       R\        V P                  4       R2# )z<BothLibraries: static=z	; shared=>)reprr  r  r   s   &rb   r  BothLibraries.__repr__
  s,    (dkk):(;9T$++EVDWWXYYra   c                    V ^8  d   QhRRRR/# )r   r  r  r   %T.Union[StaticLibrary, SharedLibrary]rY   )r   s   "rb   r   r  
  s     ) )9 )>c )ra   c                	n    VR 8X  d   V P                   # VR8X  d   V P                  # V P                  4       # )r  r  )r  r  get_default_objectr  s   &&rb   r  BothLibraries.get
  s5    x;;x;;&&((ra   c                   V ^8  d   QhRR/# )r   r   r  rY   )r   s   "rb   r   r  
  s     } }$I }ra   c                	    V P                   R 8X  d   V P                  # V P                   R8X  d   V P                  # \        RV P                    R24      h)r  r  zself._preferred_library == "z#" is neither "shared" nor "static".)r  r  r  r!   r   s   &rb   r   BothLibraries.get_default_object
  sO    ""h.;;$$0;;">t?V?V>WWz {||ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r  
  s     2 2 2ra   c                	>    V P                  4       P                  4       # r   )r  rm  r   s   &rb   rm  BothLibraries.get_id
  s    &&(//11ra   r  N)
r[   r\   r]   r^   rf  r  r  r  rm  r`   rY   ra   rb   r  r  
  s"    1Z)}2 2ra   r  c                  B    ] tR tRt$ R]R&   R]R&   R]R&   R R	 ltR
tR# )CommandBasei
  ro   r   z,T.List[T.Union[BuildTarget, 'CustomTarget']]r   rf   r   c                    V ^8  d   QhRRRR/# )r   cmdzJT.Sequence[T.Union[str, File, programs.ExternalProgram, BuildTargetTypes]]r   zOT.List[T.Union[str, File, BuildTarget, CustomTarget, programs.ExternalProgram]]rY   )r   s   "rb   r   CommandBase.__annotate__
  s      #m [ra   c           	     	   \        V4      p. pV EFZ  p\        V\        4      '       d   VP                  V4       K-  \        V\        4      '       d/   V P
                  P                  V4       VP                  V4       Kq  \        V\        P                  4      '       d   VP                  4       '       g   \        R 4      hVP                  4       p\        P                  P                  V4      '       d0   V P
                  P                  \        P                  ! V4      4       VP                  V4       EK*  \        V\        \         34      '       d0   V P"                  P                  V4       VP                  V4       EKu  \        V\$        4      '       d   \&        P(                  ! RRV P*                  4       V P"                  P                  VP,                  4       W P/                  \        P0                  ! VP3                  4       VP5                  4       4      4      ,          pEK  \        V\6        4      '       d   W P/                  V4      ,          pEKM  \        RV: R24      h	  V# )z4Tried to use not-found external program in "command"z&CustomTargetIndex for command argumentz0.60z	Argument z in "command" is invalid)r   ru  rf   r   r   r   r   r  r  r   r  r,  r  r  r  rI   rB   r   rC   r/   rM  r   r  flatten_commandr  r  r  r  )r   r  	final_cmdrn  r  s   &&   rb   r  CommandBase.flatten_command
  s   clMO	A!S!!  #At$$!!((+  #Ax7788wwyy*+abbzz|77==&& %%,,T-D-DT-JK  #A\:;;!!((+  #A011%%&NPVX\XgXgh!!((211$2F2Fq||~WXWeWeWg2hii	At$$11!44	&1%7O'PQQ5 6 ra   rY   N)r[   r\   r]   r^   r_   r  r`   rY   ra   rb   r  r  
  s    >>O ra   r  c                  b    ] tR tRtRtRtRR R lltR R ltR R	 ltR
 R lt	RR R llt
RtR# )CustomTargetBasei  zBase class for CustomTarget and CustomTargetIndex

This base class can be used to provide a dummy implementation of some
private methods to avoid repeating `isinstance(t, BuildTarget)` when dealing
with custom targets.
r   c               $    V ^8  d   QhRRRRRR/# )r   r  r  r
  rR   r   r   rY   )r   s   "rb   r   CustomTargetBase.__annotate__  s$      /K `d pt ra   c                	    R # r   rY   )r   r  r
  s   &&&rb   r  )CustomTargetBase.get_dependencies_recurse      ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s      /K ra   c                	    \        4       # r   r   r   s   &rb   rY  .CustomTargetBase.get_internal_static_libraries  
    |ra   c                    V ^8  d   QhRRRR/# rb  rY   )r   s   "rb   r   r    s      <X ]a ra   c                	    R # r   rY   r_  s   &&rb   r^  6CustomTargetBase.get_internal_static_libraries_recurse  r  ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s      (O ra   c                	    . # r   rY   r   s   &rb   r  'CustomTargetBase.get_all_linked_targets  r  ra   c               $    V ^8  d   QhRRRRRR/# r<  rY   )r   s   "rb   r   r    s#      9 d W_ ra   c                    V # r  rY   )r   r  r  s   &&&rb   r  CustomTargetBase.get  r  ra   rY   Nr  r  )r[   r\   r]   r^   r  r   r  rY  r^  r  r  r`   rY   ra   rb   r  r    s,     O ra   r  c            $        a  ] tR tRtR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 V 3R llltR R ltR tR R ltR  R! lt	R" t
R# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 tR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= ltR> tR? R@ ltRA RB ltRC tRD RE ltRF tRG tRH t RI RJ lt!RKt"V ;t## )LrB   i  customrS  Fre   NrF  r  r   r  rE  rI  feedrt   rv   rw   rz   rspableabsolute_pathsbackendr  z#Generating {} with a custom commandrT  r   c          2     |    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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   rf   r   r>  r4   commandzYT.Sequence[T.Union[str, BuildTargetTypes, GeneratedList, programs.ExternalProgram, File]]r   zkT.Sequence[T.Union[str, File, BuildTargetTypes, ExtractedObjects, GeneratedList, programs.ExternalProgram]]r  ry   rS  rR   re   r   rF  r  r   z$T.Optional[T.Sequence[FileOrString]]r  z3T.Optional[T.Sequence[T.Union[str, SourceOutputs]]]rE  rI  rq  r  rt   rv   z0T.Optional[T.List[T.Union[str, Literal[False]]]]rw   zT.Optional[FileMode]rz   r   r  r  r  zT.Optional['Backend']r  rT  rY   )r   s   "rb   r   CustomTarget.__annotate__  s    = =&== != *	=
6=?= &= &*= $4= =  !="  D#=$ !T%=& *'=( 7)=* +=, -=. O/=0  41=2 B3=4 5=6 "&7=8 09=: ";=<  #==ra   c               	  < \         SV `  WVR \        P                  VVVVR7	       \	        V4      V n        \        V\        \        VV4      . 4      4      V n	        V	e   T	MTV n
        Wn        Wn        \	        T;'       g    . 4      V n        . V n        V P                  V4      V n        Wn        T;'       g    \%        4       V n        \	        T;'       g    . 4      V n        VV n        \	        T;'       g    . 4      V n        VV n        \1        V\3        V P                  4      4      V n        V'       d   TMV P                  ^ ,          V n        VV n        VV n        VV n        R# )Fr  N)r  rf  r   HOSTr  r   r   r   get_sources_string_namesr  re   rF  r  r   r   r  r  rE  r"   rI  r  r  rv   rw   r   r   rz   r   r  r  r  )r   r   r   r   r>  r  r   r  rS  re   rF  r  r   r  rE  rI  r  rt   rv   rw   rz   r  r  r  r  rT  r  s   &&&&&&&&$$$$$$$$$$$$$$$$$$rb   rf  CustomTarget.__init__  sD   B 	z5-:L:Lk "4\ 	 	SG}(1(': 5E4P 0V] !3!34HJ++G400.0!-"5"526	 1 1r2(/S=NO Ddll1o	& - ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r  ^  s      )X ra   c                	    R# )N)NNrY   r   s   &rb   r  $CustomTarget.get_default_install_dir^  s    ra   c                	    R pVP                  V P                  P                  V P                  4       V P                  4      # r6  r   r  r[   rm  r  r7  s   & rb   r  CustomTarget.__repr__a  s.    #t~~66t||TTra   c                   V ^8  d   QhRR/# )r   r   z#T.List[T.Union[SourceOutputs, str]]rY   )r   s   "rb   r   r  e  s     	 	)L 	ra   c                	h   . pVP                  V P                  4       VP                  V P                  4       V P                   Fi  p\	        V\
        4      '       d   VP                  VP                  4       K6  \	        V\        P                  4      '       d   KX  VP                  V4       Kk  	  V# r   )
r<  r   r  r   ru  rC   r   r  r   r  )r   r>  rn  s   &  rb   get_target_dependencies$CustomTarget.get_target_dependenciese  s|    46D%%&D&&'A!.//AHH%8#;#;<<A	 
 ra   c                   V ^8  d   QhRR/# )r   r   z+T.Set[T.Union[BuildTarget, 'CustomTarget']]rY   )r   s   "rb   r   r  p  s      2] ra   c                   \        4       pV P                  4       pV Fc  p\        V\        4      '       d   VP	                  V4       K,  \        V\
        4      '       g   KD  VP                  VP                  4       4       Ke  	  V# )aZ  
Recursively fetch the build targets that this custom target depends on,
whether through `command:`, `depends:`, or `sources:` The recursion is
only performed on custom targets.
This is useful for setting PATH on Windows for finding required DLLs.
F.ex, if you have a python script that loads a C module that links to
other DLLs in your project.
)rF  r  ru  rI   rT  rB   r   get_transitive_build_target_deps)r   bdepsr>  r  s   &   rb   r  -CustomTarget.get_transitive_build_target_depsp  se     >AU++-A![))		!A|,,Q??AB	 
 ra   c                	    V P                   # r   r   r   s   &rb   r  CustomTarget.get_dependencies  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    r  ra   c                	    V P                   # r   r!  r   s   &rb   r  CustomTarget.should_install  r   ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    r  ra   c                	    V P                   # r   r  r   s   &rb   r   #CustomTarget.get_custom_install_dir  r  ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    r  ra   c                	    V P                   # r   r  r   s   &rb   r  $CustomTarget.get_custom_install_mode  r  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r    r  ra   c                	    V P                   # r   r  r   s   &rb   r  CustomTarget.get_outputs  r   ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s      c ra   c                	(    V P                   ^ ,          # ra  r  r   s   &rb   r  CustomTarget.get_filename  s    ||Ara   c                   V ^8  d   QhRR/# )r   r   zcT.List[T.Union[str, File, BuildTarget, GeneratedTypes, ExtractedObjects, programs.ExternalProgram]]rY   )r   s   "rb   r   r    s        A ra   c                	    V P                   # r   r   r   s   &rb   r   CustomTarget.get_sources  r   ra   c                   V ^8  d   QhRR/# r   r   zT.List[GeneratedList]rY   )r   s   "rb   r   r    s      %: ra   c                	    . pV P                    F,  p\        V\        4      '       g   K  VP                  V4       K.  	  V# r   )r   ru  rD   r   )r   genlistsrn  s   &  rb   get_generated_lists CustomTarget.get_generated_lists  s5    *,A!]++"  ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s     * *'< *ra   c                	"    V P                  4       # r   )r  r   s   &rb   r  "CustomTarget.get_generated_sources  s    ''))ra   c                	   V P                   f   \        R4      hV'       dy   \        P                  P	                  V^ ,          4      p\        P                  P                  V4      ^ ,          pV P                   P                  RV4      P                  RV4      # RV P                   9   g   RV P                   9   d   \        R4      hV P                   # )NzOTried to get depfile name for custom_target that does not have depfile defined.r^  r_  zKSubstitution in depfile for custom_target that does not have an input file.rh  )r   infilenamesrb  r`  s   &&  rb   ri  CustomTarget.get_dep_outname  s    <<"#tuu((Q8Iww''	215H<<''h?GGW`aat||+}/L&'tuu<<ra   c                    V ^8  d   QhRRRR/# )r   rM  rf   r   rR   rY   )r   s   "rb   r   r    s        ra   c                	v    VP                  R4      '       d   R# \        P                  ! RV4      '       d   R# R# )r  Tz\.so(\.\d+)*$F)r  r  r  r  r   )r(  r  search)r   rM  s   &&rb   is_linkable_outputCustomTarget.is_linkable_output  s-    ??BCC99%v..ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     8 8D 8ra   c                	~    \        V P                  4      ^8w  d   R# V P                  V P                  ^ ,          4      # )r|  F)r   r  r  r   s   &rb   r  CustomTarget.is_linkable_target  s/    t||!&&t||A77ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r         ) )4 )ra   c                z    \         P                  P                  V P                  ^ ,          4      R,          pVR9  # zWhether this target links dynamically or statically

Does not assert the target is linkable, just that it is not shared

:return: True if is dynamically linked, otherwise False
   r  r  )r,  r  ra  r  r   sufs   & rb   rW  CustomTarget.links_dynamically  s0     ggt||A/3.((ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r    r   ra   c                	    / # r   rY   r  s   &&rb   r  "CustomTarget.get_link_deps_mapping  r  ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s      &8 ra   c                	    \        4       # r   r  r   s   &rb   r  !CustomTarget.get_link_dep_subdirs  r  ra   c                	    . # r   rY   r   s   &rb   r  CustomTarget.get_all_link_deps  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     F FT Fra   c                    \        V P                  4      ^8w  d   R# \        W P                  ^ ,          4      P                  4       # )z9
Returns True if this is a not installed static library.
F)r   r  rC   r  r   s   &rb   r  CustomTarget.is_internal  s4     t||! ||A7CCEEra   c                   V ^8  d   QhRR/# r   r   z(T.List[T.Union[str, 'ExtractedObjects']]rY   )r   s   "rb   r   r    s     " "%M "ra   c                	"    V P                  4       # r   )r  r   s   &rb   r   CustomTarget.extract_all_objects  s    !!ra   c                	    R # )z@cusrY   r   s   &rb   r]  CustomTarget.type_suffix  r  ra   c                    V ^8  d   QhRRRR/# )r   indexr   r   z'CustomTargetIndex'rY   )r   s   "rb   r   r    s     < < <)< <ra   c                	:    \        W P                  V,          4      # r   )rC   r  r   r-  s   &&rb   __getitem__CustomTarget.__getitem__  s     ||E':;;ra   c                	    \         hr   r  )r   r-  ro  s   &&&rb   __setitem__CustomTarget.__setitem__  r  ra   c                	    \         hr   r  r/  s   &&rb   __delitem__CustomTarget.__delitem__  r  ra   c              #  	N   "   V P                    F  p\        W4      x  K  	  R # 5ir   )r  rC   )r   r  s   & rb   __iter__CustomTarget.__iter__  s     A#D,, s   #%c                   V ^8  d   QhRR/# )r   r   r   rY   )r   s   "rb   r   r    s     ! ! !ra   c                	,    \        V P                  4      # r   )r   r  r   s   &rb   __len__CustomTarget.__len__  s    4<<  ra   )r  re   rF  r  r  r   r   rE  r  rI  r  r  rv   rw   rz   r   r  r  r   )$r[   r\   r]   r^   rX  rf  r  r  r  r  r  r  r   r  r  r  r   r  r  ri  r  r  rW  r  r  r  r  r  r]  r0  r3  r6  r9  r=  r`   r  r  s   @rb   rB   rB     sc   H= -2= 7;= "'=  "'!=" GK#=$ W[%=& -1'=( :>)=* $+=, "'-=. RV/=0 7;1=2 EI3=4 "'5=6 ).7=8 379=: %J;=< &(== =~U	$! !*
 8
)F"<""-! !ra   c                  Z   a  ] tR tRtRtRtR V 3R lltR R ltR R	 ltR
 R lt	Rt
V ;t# )CompileTargeti  zp
Target that only compile sources without linking them together.
It can be used as preprocessor, or transpiler.
r  c               H    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RR/# )r   r   rf   r   r   r>  r4   r   r  output_templr  r7   r  r6   compile_argsry   rs   rV   r   rn   rG  r   rY   )r   s   "rb   r   CompileTarget.__annotate__  s     !D !D!D!D !!D *	!D
 2!D  #!D $!D "!D  +!D ':!D  ?!D 3!Dra   c                	  < VP                  4       V/pR RRVP                  V	/RV
RV/p\        SV `  WW7P                  VR. WMV4
       Wn        Wpn        W`n        . V n        / V n	        \        T;'       g    . 4      V n        V P                   F  pV P                  V4       K  	  V P                   FR  pVP                  4        F;  pVP!                  V VV4      pV P                  \"        P$                  ! V4      4       K=  	  KT  	  R# )re   Fr{   rs   r   N)r  rr  r  rf  r  r  r  rB  r  sources_mapr  rG  r   _add_outputr+  r  get_target_generated_dirr   from_built_relative)r   r   r   r   r>  r   rB  r  r  rC  rs   r   rG  r#  r  rO  r  r  rel_srcr  s   &&&&&&&&&&&&&      rb   rf  CompileTarget.__init__  s     **,h7	h//>!#6L	
 	z3G3G $KF	L (.0GMMr*AQ nnF'')!::4K  !9!9'!BC * %ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rD    s      S ra   c                	    R # )z@compilerY   r   s   &rb   r]  CompileTarget.type_suffix  s    ra   c                    V ^8  d   QhRRRR/# )r   rO  r   r   r   rY   )r   s   "rb   r   rD    s        T  d  ra   c                	N   \         P                  P                  VP                  4      p\         P                  P	                  V4      ^ ,          pV P
                  P                  RV4      P                  RV4      pV P                  P                  V4       W@P                  V&   R# )r   r^  r_  N)
r,  r  r`  r0  ra  rB  r  r  r   rF  )r   rO  rb  r`  rO  s   &&   rb   rG  CompileTarget._add_output  sy    GG$$QWW-	77##I.q1%%lH=EEmU^_Ara   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   rD     s      | ra   c           
     	    . pV P                    F>  pYP                  4        Uu. uF  p\        R VP                  V4      NK  	  up,          pK@  	  V# u upi r  )rG  r  r   r   )r   gen_headersr   rO  s   &   rb   get_generated_headers#CompileTarget.get_generated_headers   sN    $&<<C?PQ?P!Dszz15?PQQK   Rs    A)r  rG  r  rB  r  rF  )r[   r\   r]   r^   r  rX  rf  r]  rG  rU  r`   r  r  s   @rb   r@  r@    s0    
 H!D !DF  ra   r@  c                     a  ] tR tRtRtRR V 3R llltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltRtV ;t# )	RunTargeti&  runc               8    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  zJT.Sequence[T.Union[str, File, BuildTargetTypes, programs.ExternalProgram]]r   zT.Sequence[AnyTargetType]r   r   r>  r4   rI  rq  default_envrR   rY   )r   s   "rb   r   RunTarget.__annotate__*  sU     ' 'S 'd'8' ' !	'
 *' 7' #'ra   c	                	   < \         S	V `  WVR \        P                  V4       W0n        . V n        V P                  V4      V n        R V n        Wpn	        Wn
        R# )FN)r  rf  r   r>  r   r   r  r  r  rI  r[  )
r   r   r  r   r   r   r>  rI  r[  r  s
   &&&&&&&&&rb   rf  RunTarget.__init__*  sS     	z5-:M:M{[(++G4#&ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r\  ;  s     X X# Xra   c                	    R pVP                  V P                  P                  V P                  4       V P                  ^ ,          4      # r6  r  r7  s   & rb   r  RunTarget.__repr__;  s3    #t~~66t||TUWWra   c                   V ^8  d   QhRR/# )r   r   r   rY   )r   s   "rb   r   r\  ?  s     ! !": !ra   c                	    V P                   # r   r   r   s   &rb   r  RunTarget.get_dependencies?  r  ra   c                   V ^8  d   QhRR/# )r   r   zT.List[GeneratedTypes]rY   )r   s   "rb   r   r\  B  s      '= ra   c                	    . # r   rY   r   s   &rb   r  RunTarget.get_generated_sourcesB  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r\  E  s      \ ra   c                	    . # r   rY   r   s   &rb   r   RunTarget.get_sourcesE  r  ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r\  H  r  ra   c                	    R # r  rY   r   s   &rb   r  RunTarget.should_installH  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r\  K  r  ra   c                	    V P                   # r   r  r   s   &rb   r  RunTarget.get_filenameK  r  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r\  N  s     e e[ era   c                	    \        V P                  \        4      '       d   V P                  .# \        V P                  \        4      '       d   V P                  # \	        R 4      h)zBRunTarget: self.name is neither a list nor a string. This is a bug)ru  r   rf   r  r=  r   s   &rb   r  RunTarget.get_outputsN  sF    dii%%II;		4((99cddra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r\  V        S ra   c                	    R # )z@runrY   r   s   &rb   r]  RunTarget.type_suffixV  r  ra   )r  r  r[  r   r   rI  )NT)r[   r\   r]   r^   rX  rf  r  r  r  r   r  r  r  r]  r`   r  r  s   @rb   rX  rX  &  sA    H' '"X!e ra   rX  c                  8   a  ] tR tRtRtR V 3R lltR tRtV ;t# )AliasTargetiY  aliasc          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   r   rf   r   zT.Sequence[Target]r   r   r>  r4   rY   )r   s   "rb   r   AliasTarget.__annotate__]  s:     R RS R0B RR*-R<GRra   c                	,   < \         SV `  V. W#WE4       R # r   )r  rf  )r   r   r   r   r   r>  r  s   &&&&&&rb   rf  AliasTarget.__init__]  s    r<Qra   c                	n    R pVP                  V P                  P                  V P                  4       4      # )z	<{0} {1}>)r   r  r[   rm  r7  s   & rb   r  AliasTarget.__repr__a  s(    t~~66FFra   rY   )	r[   r\   r]   r^   rX  rf  r  r`   r  r  s   @rb   ry  ry  Y  s     HR RG Gra   ry  c                     a  ] tR tRt]tRtRtR V 3R lltR R lt	R R	 lt
R
 tR R ltR tR tR R ltR R ltRtV ;t# )Jarie  jarr   c               8    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   zT.List[SourceOutputs]r  zT.Optional['StructuredSources']r>  r4   r#  r  rY   )r   s   "rb   r   Jar.__annotate__k  sR     ` `S `# `3 `] `/`Ed`'2`?V`ra   c                	,  < \         SV `  WW4WVVWV
4
       V P                   F)  pVP                  R 4      '       d   K  \	        RV R24      h	  V P
                   F(  p\        V\        4      '       d   K  \	        RV R24      h	  V P                  '       d   \	        R4      hV P                  R,           V n
        V P                  .V n        V P                  R,          V n        V
P                  RR	4      V n        V
P                  R
R4      V n        R# )z.javazJar source z is not a java file.zLink target z is not a jar target.z5structured sources are not supported in Java targets.z.jarr  r   r   r   N)r  rf  r   r(  r   r  ru  r  r  r   r  r  r  	java_argsr  r   r   )r   r   r   r   r  r   r  r  r>  r#  r  r  rw  r  s   &&&&&&&&&&&  rb   rf  Jar.__init__k  s     	z]d$	9A::g&&&QC7K'LMM  ""Aa%%&aS8M'NOO # """"#Z[[		F*0 **\26=CZZHXZ^=_ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s       ra   c                	    V P                   # r   )r   r   s   &rb   get_main_classJar.get_main_class  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    ru  ra   c                	    R # )z@jarrY   r   s   &rb   r]  Jar.type_suffix  r  ra   c                	    V P                   # r   )r  r   s   &rb   get_java_argsJar.get_java_args  r  ra   c                   V ^8  d   QhRR/# )r   r   r  rY   )r   s   "rb   r   r    s     # #$A #ra   c                	    V P                   # r   )r   r   s   &rb   get_java_resourcesJar.get_java_resources  r   ra   c                	    R # r   rY   r   s   &rb   r  Jar.validate_install  rZ  ra   c                	    R # r  rY   r   s   &rb   r  Jar.is_linkable_target  r/  ra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r    s      K ra   c                	J   V P                    Uu. uF?  p\        P                  P                  VP	                  4       VP                  4       4      NKA  	  pp\        P                  P                  V4      pV'       d"   R \        P                  P                  V4      .# . # u upi )z-cp)r  r,  r  r   r  r  pathsep)r   r8  cp_paths	cp_strings   &   rb   get_classpath_argsJar.get_classpath_args  sr    LPL]L]^L]qBGGLL1ABL]^JJOOH-	2::??8455		 _s   AB c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s     : :)X :ra   c                	:    V P                   P                  4       R 3# )z{jardir})r>  get_jar_dirr   s   &rb   r  Jar.get_default_install_dir  s    ++-z99ra   )r  r  r   r   r  )r[   r\   r]   r^   known_jar_kwargsrC  rX  r   rf  r  r]  r  r  r  r  r  r  r`   r  r  s   @rb   r  r  e  sK    #LHO` `(#: :ra   r  c                  L   ] tR tRt$ RtRtR]R&   R]R&   R]R	&   R
 R lt]R R l4       t	]R R l4       t
]R R l4       tR tR R ltR R ltR R ltR R ltR R ltR R ltR tR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2tR3# )4rC   i  zA special opaque object returned by indexing a CustomTarget. This object
exists in Meson, but acts as a proxy in the backends, making targets depend
on the CustomTarget it's derived from, but only adding one source file to
the sources.
r  zT.ClassVar[str]rX  z$T.Union[CustomTarget, CompileTarget]r  rf   rM  c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   CustomTargetIndex.__annotate__  s     3 3t 3ra   c                	<    V P                   P                  V n        R # r   )r  r  r   s   &rb   rd  CustomTargetIndex.__post_init__  s    ;;22ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     4 4c 4ra   c                	N    V P                   P                   R V P                   R2# )[])r  r   rM  r   s   &rb   r   CustomTargetIndex.name  s$    ++""#1T[[M33ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     ( (l (ra   c                	.    V P                   P                  # r   )r  r   r   s   &rb   r   CustomTargetIndex.depend_files  s    {{'''ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     " " "ra   c                	.    V P                   P                  # r   )r  r   r   s   &rb   r   CustomTargetIndex.subdir  s    {{!!!ra   c                	N    R P                  V P                  V P                  4      # )z<CustomTargetIndex: {!r}[{}]>)r   r  rM  r   s   &rb   r  CustomTargetIndex.__repr__  s    .55dkk4;;OOra   c                   V ^8  d   QhRR/# ri  rY   )r   s   "rb   r   r    s      [ ra   c                	    V P                   .# r   rM  r   s   &rb   r  CustomTargetIndex.get_outputs  s    }ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     ( (C (ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  CustomTargetIndex.get_subdir  s    {{%%''ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     . .# .ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  "CustomTargetIndex.get_build_subdir  s    {{++--ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r         * *c *ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  CustomTargetIndex.get_builddir      {{''))ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    r"  ra   c                	    V P                   # r   r  r   s   &rb   r  CustomTargetIndex.get_filename  r  ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     $ $ $ra   c                	6    V P                   P                  4       # r   )r  rm  r   s   &rb   rm  CustomTargetIndex.get_id  s    {{!!##ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  #CustomTargetIndex.get_all_link_deps  s    {{,,..ra   c                    V ^8  d   QhRRRR/# r  rY   )r   s   "rb   r   r    s     9 9C 94G 9ra   c                	8    V P                   P                  V4      # r   )r  r  r  s   &&rb   r  'CustomTargetIndex.get_link_deps_mapping  s    {{0088ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s     2 2&8 2ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  &CustomTargetIndex.get_link_dep_subdirs  s    {{//11ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     ; ;D ;ra   c                	L    V P                   P                  V P                  4      # r   )r  r  rM  r   s   &rb   r  $CustomTargetIndex.is_linkable_target  s    {{--dkk::ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    r  ra   c                l    \         P                  P                  V P                  4      R,          pVR9  # r  )r,  r  ra  rM  r  s   & rb   rW  #CustomTargetIndex.links_dynamically  s,     ggt{{+B/.((ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     , , ,ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r   CustomTargetIndex.should_install  s    {{))++ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     C CT Cra   c                    \         P                  P                  V P                  4      R,          pVR9   ;'       d    V P	                  4       '       * # )z8
Returns True if this is a not installed static library
r  r  )r,  r  ra  rM  r  r  s   & rb   r  CustomTargetIndex.is_internal  s@     ggt{{+B/n$BBT-@-@-B)BBra   c                   V ^8  d   QhRR/# r'  rY   )r   s   "rb   r   r    s     1 1%M 1ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  %CustomTargetIndex.extract_all_objects  s    {{..00ra   c                   V ^8  d   QhRR/# r  rY   )r   s   "rb   r   r    s     4 4(L 4ra   c                	6    V P                   P                  4       # r   )r  r   r   s   &rb   r   (CustomTargetIndex.get_custom_install_dir  s    {{1133ra   c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    r  ra   c                	6    V P                   P                  4       # r   )r  r  r   s   &rb   r  CustomTargetIndex.get_basename  r  ra   )r  N)r[   r\   r]   r^   r  rX  r_   rd  r  r   r   r   r  r  r  r  r  r  rm  r  r  r  r  rW  r  r  r  r   r  r`   rY   ra   rb   rC   rC     s     !)Ho(00K3 4 4 ( ( " "P(.*$/92;),C14* *ra   c                  n   a  ] tR tRtRR V 3R llltR R ltR R ltR R	 ltR
 R ltR R lt	Rt
V ;t# )ConfigurationDatai  c                   V ^8  d   QhRR/# )r   initial_valueszyT.Optional[T.Union[T.Dict[str, T.Tuple[T.Union[str, int, bool], T.Optional[str]]], T.Dict[str, T.Union[str, int, bool]]]]rY   )r   s   "rb   r   ConfigurationData.__annotate__  s         (  ra   c           	     	   < \         SV `  4        V'       d@   VP                  4        UUu/ uF"  w  r#T\        V\        4      '       d   TMVR 3bK$  	  uppM/ V n        RV n        R # u uppi )NF)r  rf  rt  ru  r  r$  used)r   r  r  r  r  s   &&  rb   rf  ConfigurationData.__init__  s_     	`n^EYEYE[\E[TQQZ5))4y8E[\tv 		 ]s   (A'c                   V ^8  d   QhRR/# r   rY   )r   s   "rb   r   r    s     ! !# !ra   c                	,    \        V P                  4      # r   )r  r$  r   s   &rb   r  ConfigurationData.__repr__      DKK  ra   c                    V ^8  d   QhRRRR/# )r   ro  rf   r   rR   rY   )r   s   "rb   r   r    s     $ $# $$ $ra   c                	    WP                   9   # r   r$  rq  s   &&rb   __contains__ConfigurationData.__contains__  s    ##ra   c                   V ^8  d   QhRR/# r@  rY   )r   s   "rb   r   r    s     ! !$ !ra   c                	,    \        V P                  4      # r   )rR   r$  r   s   &rb   rB  ConfigurationData.__bool__  r  ra   c                    V ^8  d   QhRRRR/# )r   r   rf   r   z1T.Tuple[T.Union[str, int, bool], T.Optional[str]]rY   )r   s   "rb   r   r    s     ! ! ! Q !ra   c                	(    V P                   V,          # r   r  r  s   &&rb   r  ConfigurationData.get  s    {{4  ra   c                   V ^8  d   QhRR/# )r   r   zT.Iterator[str]rY   )r   s   "rb   r   r    s     " "o "ra   c                	6    V P                   P                  4       # r   )r$  r  r   s   &rb   r  ConfigurationData.keys  s    {{!!ra   )r  r$  r   )r[   r\   r]   r^   rf  r  r  rB  r  r  r`   r  r  s   @rb   r  r    s+       !$!!" "ra   r  c                  >    ] tR tRtR R ltR R ltR
R R lltR	tR# )OverrideExecutablei  c                    V ^8  d   QhRRRR/# )r   r  r  r   rf   rY   )r   s   "rb   r   OverrideExecutable.__annotate__  s        :    ra   c                	    Wn         W n        R # r   _executable_version)r   r  r   s   &&&rb   rf  OverrideExecutable.__init__  s    %ra   c                    V ^8  d   QhRRRR/# )r   r   rf   r   zT.AnyrY   )r   s   "rb   r   r    s     * * * *ra   c                	D    \         P                  V R 4      p\        W!4      # )r  )rh  __getattribute__r  )r   r   r  s   && rb   __getattr__OverrideExecutable.__getattr__  s    --dMB{))ra   Nc                    V ^8  d   QhRRRR/# )r   interpreterzT.Optional[Interpreter]r   rf   rY   )r   s   "rb   r   r    s      '> # ra   c                	    V P                   # r   )r  )r   r  s   &&rb   get_versionOverrideExecutable.get_version  r  ra   r
  r   )r[   r\   r]   r^   rf  r  r  r`   rY   ra   rb   r  r    s     * ra   r  c                      ] tR tR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]R&   R R lt	Rt
R
# )Datai  ro   r   rf   rv   r  r   rw   r   Nry   renamer   rz   	data_typer   r   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   Data.__annotate__+  s     L Lt Lra   c                	    V P                   fK   V P                   Uu. uF,  p\        P                  P	                  VP
                  4      NK.  	  upV n         R # R # u upi r   )r  r   r,  r  r`  r0  )r   rO  s   & rb   rd  Data.__post_init__+  sA    ;;>BllKl277++AGG4lKDK Ks   2A)r  )r[   r\   r]   r^   r_   r  rz   r  r   rd  r`   rY   ra   rb   r  r    sT    OFK#'K'Is(,O%,L Lra   r  c                  Z    ] tR tRt$ R]R&   R]R&   R]R&   R]R&   RtR]R	&   R
 R ltRtR# )SymlinkDatai/  rf   r  r   rv   r   Nr   rz   c                   V ^8  d   QhRR/# r)  rY   )r   s   "rb   r   SymlinkData.__annotate__7  s     M Mt Mra   c                	    V P                   \        P                  P                  V P                   4      8w  d   \	        R V P                    R24      hR# )zLink name is "zX", but link names cannot contain path separators. The dir part should be in install_dir.N)r   r,  r  r`  r   r   s   &rb   rd  SymlinkData.__post_init__7  sK    99((33"^DII; ?L $L M M 4ra   rY   )r[   r\   r]   r^   r_   rz   rd  r`   rY   ra   rb   r!  r!  /  s-    K
IO#'K'M Mra   r!  c                  J    ] tR tRt$ R]R&   R]R&   R]R&   R]R	&   R]R
&   RtR# )	TestSetupi<  ry   exe_wrapperrR   gdbr   timeout_multiplierr"   rI  exclude_suitesrY   NrZ   rY   ra   rb   r'  r'  <  s    	I	ra   r'  c                   . pV  F  p\        V\        4      '       d   VP                  V4       K,  \        V\        \        \
        \        34      '       d   W#P                  4       ,          pKj  \        V\        4      '       d   W!P                  V4      ,          pK  \        V\        4      '       d   VP                  VP                  4       K  \        RV: 24      h	  V# )zk
For the specified list of @sources which can be strings, Files, or targets,
get all the output basenames.
zUnknown source type: )ru  rf   r   rI   rB   rC   rD   r  rK   determine_ext_objsr   r0  r  )r   r  namesr  s   &&  rb   r  r  D  s    
 EaLLOK7H-XYY]]_$E+,,//22E4  LL! #8!>??  Lra   c                    V ^8  d   QhRRRR/# )r   rs  rf   r   r<  rY   )r   s   "rb   r   r   W  s     J JC JE Jra   c                    \         P                  P                  V R R4      p \        VR\        4      p\
        P                  ! V 4      VP                  n        V#   \         d    \        RT: R24      hi ; i)zmeson-privatez	build.datz
Build datazNo such build data file as r   )
r,  r  r   r#   r<  r
   loadr>  FileNotFoundErrorr   )rs  r  bs   &  rb   r1  r1  W  sl    ww||IDHJ,6!)y!9 J:8,aHIIJs   7A A7c               $    V ^8  d   QhRRRRRR/# )r   objr<  r  rf   r   r   rY   )r   s   "rb   r   r   b  s!     ) )e )s )t )ra   c                ,   V P                   P                  pR V P                   n         \        VR4      ;_uu_ 4       p\        P                  ! W4       R R R 4       W P                   n        R #   + '       g   i     L"; i  Y P                   n        i ; i)Nwb)r>  r
   openpickledump)r5  r  cdatarO  s   &&  rb   saver<  b  sd    OO$$E#COO)(D!!QKK " $)  "! $) s"   B A.B .A>	9B B)rB   rC   rD   )rF   rG   rB   rC   )rI   rB   rC   )rM   rC   )r  rZ  r  r  rO  r	  r  )rZ  rt  )r   rZ  )rZ  rd  r   )r   rb  zdll.lib)rZ  r  r   )rc  rb  zdll.a>   rj   rm   rk   rl   >   r   r   r   >   r   gui_apprt   r  r   r|   r   r   rg   rp   rv   rz   r   r   rT  r   rw   r}   rx   r~   r   re   r   rs   rq   rr   >   r   r   r   r   r   >   r   r   r   r   r   r   >   r   r   r   )__conditional_annotations__
__future__r   collectionsr   r   r   dataclassesr   r   	functoolsr	   r  r  r  rF  r-  r,  r9  r  rb  typingr  r   r
   r   r   r   mesonlibr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   optionsr%   r#  r&   r'   r(   r)   r*   r+   r,   r-   r.   interpreterbaser/   r0   TYPE_CHECKINGtyping_extensionsr1   r2   r3   r>  r4   _typingr5   backend.backendsr6   r7   interpreter.interpreterr8   r9   interpreter.interpreterobjectsr:   r;   r<   linkers.linkersr=   r>   r?   r@   mparserrA   UnionrE   r_   rH   rJ   rf   rL   rN   rO   rQ   rd   r   r   r   r   r   r   
pch_kwargslang_arg_kwargsvala_kwargsrust_kwargs	cs_kwargsswift_kwargsbuildtarget_kwargsr  r  r  r  rD  r  r   r   r   r   r   r  r  r  r   r<  r  rK   r5  ABCMetarM   rI   r  r,  rD  rD   r  rG   rF   r  r  r  r  rB   r@  rX  ry  r  rC   r  r  r  r!  r'  r  r1  r<  )rf  r>  s   0@rb   <module>rX     s   # " 7 7 (  
    	  	               ;?????(.)#C=+-II! !(\ ]NI]''"ghHih"#''*\"]i]WWS&2DFV%VWKW ww'DEM9E&'ijM9j,I ,+ iu + ZL%@ LL'B% L(DE (C5  L{ll	C ?  %"%	H D  y!
.;<mdV5>m<    7 "78)$	-/BC <   	
    -/xx .  2H  H .2BJ1OO .1OO #|5E&FF 	 4 	~ 	 e  
 e(n ( (6 e.  " e(~ ( ( e- - - e
 
 
,U: U:n e$. $ $L e/T~ /T /Td e5!& & "&R eT^s{{ T Tl]& ]@%	 	 .N Nb eDN D DNU Up|K ||nK nd	N= NB2% 26% %N 4N!6+[ N!`9K 9v1 1f
G) 
G5:+ 5:n eX*(. X* X*v" "2
 
 eL> L L e
M. 
M 
M e     &J)Wf =s   T