
    <h}             
         S SK Jr  S SKrS SKrS SKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSK J!r!J"r"  SSK	J#r#  SSK$J%r%  SSK&J'r'J(r(J)r)J*r*J+r+  SSK&J,r,J-r-J.r.J/r/J0r0J1r1  SSK&J2r2J3r3J4r4J5r5  SSK&J6r6J7r7  SSK&J8r8J9r9J:r:J;r;  SSK&J<r<J=r=  SSK&J>r>  SSK?J@r@JArAJBrBJCrCJDrD  SSKEJFrF  SSKJGrH  SSKJIrJ  SS KKJLrL  SS!KMJNrN  SS"KGJOrOJPrPJQrQJRrRJSrSJTrT  SS#KUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprpJqrqJrrrJsrsJtrtJuruJvrvJwrwJxrxJyryJzrzJ{r{J|r|J}r}J~r~JrJrJrJrJrJr  SS$KJr  S S%KJr  S S&KJr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr\GR,                  (       Ga  S S'KJr  SS(KJr  SS)KJr  SS*KJrJrJr  SS+KJr  SS,K Jr  SS-KUJr  \GRH                  \GRJ                  \GRL                  \GRN                  \GRP                  \GRR                  \GRT                  \GRL                  \GRV                  \4	   r\GRH                  \GRJ                  \GRL                  \GRN                  \GRR                  \GRT                  \GRV                  \GRL                  \GR\                  4   r\GRH                  \GR`                  \GRb                  \GR\                  4   r\GRf                  \GRH                  \!\GRh                  \4   /\4   r\GRl                  " S.\PS/9rS=S0 jr " S1 S25      r\GRt                  \GRv                  -  \GRx                  S31-
   V s1 s H  o  S43iM	     sn -  \GRx                  S31-
   V s1 s H  o  S53iM	     sn -  r\\GR|                  -  \GR~                  -  S61-  r " S7 S8\5      r1 S9krS:r " S; S<\(\5      rgs  sn f s  sn f )>    )annotationsN   )mparser)environment)coredata)dependencies)mlog)options)build)	compilers)	envconfig)wrapWrapMode)mesonlib)EnvironmentVariablesExecutableSerialisationMesonBugExceptionMesonExceptionHoldableObjectFileModeMachineChoiceis_parent_pathlistifyextract_as_listhas_path_seppath_is_in_root
PerMachine)	OptionKey)ExternalProgramNonExistingExternalProgram)
Dependency)DepFile)ContainerTypeInfoInterpreterBase	KwargInfotyped_kwargstyped_pos_args)	noPosargsnoKwargspermittedKwargsnoArgsFlatteningnoSecondLevelHolderResolvingunholder_return)InterpreterExceptionInvalidArgumentsInvalidCodeSubdirDoneRequest)DisablerdisablerIfNotFound)
FeatureNewFeatureDeprecatedFeatureBrokenFeatureNewKwargs)ObjectHolderContextManagerObject)stringifyUserArguments)ExtensionModuleModuleObjectMutableModuleObjectNewExtensionModuleNotFoundExtensionModule)optname_regex   )interpreterobjects)compiler)	MesonMain)DependencyFallbacksHolder)SubprojectHolderTest
RunProcessextract_required_kwargextract_search_dirsNullSubprojectInterpreter)/BUILD_TARGET_KWS
COMMAND_KWCT_BUILD_ALWAYSCT_BUILD_ALWAYS_STALECT_BUILD_BY_DEFAULTCT_INPUT_KWCT_INSTALL_DIR_KW_EXCLUSIVE_EXECUTABLE_KWSEXECUTABLE_KWSJAR_KWSLIBRARY_KWSMULTI_OUTPUT_KW	OUTPUT_KWDEFAULT_OPTIONSDEPENDENCIES_KWDEPENDENCY_KWS
DEPENDS_KWDEPEND_FILES_KW
DEPFILE_KWDISABLER_KWD_MODULE_VERSIONS_KWENV_KWENV_METHOD_KWENV_SEPARATOR_KWINCLUDE_DIRECTORIES
INSTALL_KWINSTALL_DIR_KWINSTALL_MODE_KWINSTALL_FOLLOW_SYMLINKSLINK_WITH_KWLINK_WHOLE_KWCT_INSTALL_TAG_KWINSTALL_TAG_KWLANGUAGE_KW	NATIVE_KWPRESERVE_PATH_KWREQUIRED_KWSHARED_LIB_KWSSHARED_MOD_KWSDEPENDENCY_SOURCES_KWSOURCES_VARARGSSTATIC_LIB_KWSVARIABLES_KWTEST_KWSNoneTypein_set_validatorenv_convertor_with_method)
primitives)Path)Enum)Literal)kwargs)Backend)InterpreterObjectTYPE_varTYPE_kwargs)
OptionDict)OverrideProgram)SourcesVarargsType	TestClass)boundc                    [        U [        5      (       a3  [        U 5      S:w  a  g[        U S   [        R                  5      (       d  gg )NrA   z,when passed as array must have a length of 1r   z(when passed as array must contain a File)
isinstancelistlenr   File)values    ڃ/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/interpreter/interpreter.py_project_version_validatorr      s8    %u:?AE!Hhmm44=    c                  @    \ rS rSrSS jr      S	S jrS rS rSrg)
Summary   c                h    Xl         X l        [        R                  " [        5      U l        SU l        g Nr   )project_nameproject_versioncollectionsdefaultdictdictsectionsmax_key_len)selfr   r   s      r   __init__Summary.__init__   s(    (.#//5r   c                   UR                  5        GHG  u  pgX`R                  U   ;   a  [        SU< SU< 35      e/ n[        U5       GH  n	[	        U	[
        5      (       ag  U(       aD  UR                  U	(       a  [        R                  " S5      O[        R                  " S5      5        Md  UR                  U	(       a  SOS5        M  [	        U	[        [        45      (       a  UR                  [        U	5      5        M  [	        U	[        [        45      (       a:  [        R                  " SSU5        UR                  U	R!                  5       5        GM  [	        U	["        5      (       a@  [        R                  " S	S
U5        UR                  [        R                  " S5      5        GMa  [	        U	[$        R&                  5      (       a:  [        R                  " SSU5        UR                  U	R)                  5       5        GM  Sn
[        U
R+                  X5      5      e   X4U R                  U   U'   [-        U R.                  [1        U5      5      U l        GMJ     g )NzSummary section z already have key YESNOtruefalsez)dependency or external program in summary0.57.0zdisabler in summary0.64.0zfeature option in summary0.58.0ztSummary value in section {!r}, key {!r}, must be string, integer, boolean, dependency, disabler, or external program)itemsr   r.   r   r   boolappendr	   greenredstrintr   r!   r4   
single_usesummary_valuer2   r
   
UserOptionprintable_valueformatmaxr   r   )r   sectionvaluesbool_ynlist_sep
subprojectkvformatted_valuesims              r   add_sectionSummary.add_section   s   LLNDAMM'***-=g[HZ[\Z_+`aa!QZa&&(//Q

50ADHHUYN[(//!IC:..$++CF3OZ#@AA))*UW_akl$++AOO,=>8,,))*?:V$++DHHTN;7#5#566))*ExQ[\$++A,=,=,?@ OA.qxx/CDD'  ( *:(DDMM'"1%"4#3#3SV<D3 #r   c                   [         R                  " U R                  [         R                  " U R                  5      5        U R
                  R                  5        H  u  p[         R                  " S5        U(       a+  [         R                  " S[         R                  " U5      5        UR                  5        Hl  u  p4Uu  pEU R                  [        U5      -
  nU(       a  SOSn[         R                  " SUSU-  -   S-   US9  U R                  S-   nU R                  XEU5        Mn     M     [         R                  " S5        g )N  z   :)end   )r	   logr   normal_cyanr   r   r   boldr   r   
dump_value)	r   r   r   r   r   r   paddingr   indents	            r   dumpSummary.dump   s    ""D$4$4T5I5I$JK#}}224OGHHRLdii01**SV3cB!cGm"3c"9sC))A-V4 '	  5 	r   c                   SSU-  -   nUc  [         R                  " XSS.6  g [        R                  " 5       R                  n/ nUnUR                  5       U-   nU HX  n[        U5      [        U5      -   n	U(       a"  Xy-   U:  a  [         R                  " XbUS.6  Un/ nUR                  U5        Xy-  nMZ     [         R                  " XbSS.6  g )N
r   F)sepdisplay_timestamp)r   r   )r	   r   shutilget_terminal_sizecolumnsrstripr   r   )
r   arrr   r   	lines_sepmax_lenlineline_lenr   v_lens
             r   r   Summary.dump_value   s    3<'	HHcEB**,44OO%	1	AFS]*E(72$)<!KKNH  	$>r   )r   r   r   r   N)r   r   r   r   )r   r   r   T.Dict[str, T.Any]r   r   r   T.Optional[str]r   r   returnNone)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__ r   r   r   r      s.    =-=;>=CG=:?r   r   java_shared_args_static_argstarget_typec                      \ rS rSrSrSrSrg)InterpreterRuleRelaxation   zDefines specific relaxations of the Meson rules.

This is intended to be used for automatically converted
projects (CMake subprojects, build system mixing) that
generate a Meson AST via introspection, etc.
rA   r   N)r   r   r   r   __doc__ALLOW_BUILD_DIR_FILE_REFERENCESr   r   r   r   r   r      s     '(#r   r   >   mainmethodnativestaticmodulesversionfallbacklanguagerequired
cmake_args
componentsinclude_typeallow_fallbackdefault_optionsprivate_headersoptional_modulescmake_module_pathnot_found_messagecmake_package_versionzYou should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in meson 2.0.
         See also: https://github.com/mesonbuild/meson/issues/9300c                  J&  ^  \ rS rSr        GSN                   GSOU 4S jjjrGSPS	 jrGSQS
 jrGSQS jrGSQS jrGSRS jr	GSSS jr
GSTS jrGSQS jrGSUS jrGSVS jrGSWS jrGSQS jr\" S\5      \" S\R*                  " SS9\R*                  " SS95      \    GSXS j5       5       5       r\" S\S9\GSYS j5       5       r\\" S\" S\" \\5      S/ S9\R*                  " S S!S"9\ R*                  " S!S9\" S#\" \\5      S/ S9\!\\"\#R*                  " S$S9\$\" S%\" \\%RL                  \45      S/ S&S'9\'R*                  " S(\S)0S*9\" S+\\(45      \" S,\" \\)RT                  5      S/ S-S'95          GSZS. j5       5       r+\" S/\,\/S09\    GS[S1 j5       5       r-S2 r.\" S3\)R^                  \0\1Rd                  \%RL                  \4\)R^                  \0\1Rd                  \%RL                  \4S9\" S3\" S4\,\(4S5S9\" S6\,SS5S79\3R*                  " S8S95            GS\S9 j5       5       r4 GS]       GS^S; jjr5S< r6\" S\5      \" S\\7R*                  " S=S9\" S+\" \\5      / SS>95      GS_S? j5       5       r8  GS`   GSaS@ jjr9  GS`   GSbSA jjr:   GSc           GSdSB jjr;      GSeSC jr<      GSeSD jr=\" SE\5      \    GSfSF j5       5       r>\" SG\?/S09\    GSgSH j5       5       r@GSQSI jrA\" SJ\\S9\" SJ\7\" SK\\(45      \" S+\\%RL                  \(\4SL\BSM SN9\" SO\" \\5      \(4SSS>9\" SP\" \\5      / SS-SQ9\" S\SSR95      GShSS j5       5       rC\" ST\" SU\,\(4S(S9\5      \" ST\S9GSiSV j5       5       rDGSjSW jrE\F\GSkSX j5       5       rGSY rH\F\I" SZS[5      \" SZ\\?4\J/S09\" SZ\" S\\SSR9\" S]\,S:SR9\" S^\\(4S(S95          GSlS_ j5       5       5       5       rKGSmS` jrLGSQSa jrM\F\I" SbSc5      \Sd 5       5       5       rN\F\Se 5       5       rO\F\I" SfSg5      \Sh 5       5       5       rP\\Si 5       5       rQ\" Sj\5      \" Sj\" Sk\Sl\R" SlSm15      Sn95      GSnSo j5       5       rSGSoSp jrTGSpSq jrUGSoSr jrV  GSqSs jrW    GSrSt jrX    GSsSu jrYGStSv jrZGSuSw jr[GSvSx jr\\]R                  SSSSSSS4                 GSwSy jjr_                GSxSz jr`        GSyS{ jra        GSzS} jrb\" S~\\%RL                  4SS9\" S~\R*                  " SS9\c\\" S\" \\5      / SS[SQ9\" S+\" \\5      / SSSQ9\" S\SSS79\7R*                  " SS95      \    GS{S j5       5       5       rd\e" SSS/5      \e" SS)S/5      \e" SS(S/5      \e" SSS/5      \e" SS8/ SQ5      \e" SSS/5      \e" SSS/5      \\f" \g5      \" S\SS9\" S/\hQ7SS06GS|S j5       5       5       5       5       5       5       5       5       5       5       ri\I" SSc5      \\S 5       5       5       rjGS}S jrk\f" \)R                  5      \" S\\mS9\" S/\nQ7SS06      GS~S j5       5       5       ro\f" \)R                  5      \" S\\mS9\" S/\qQ7SS06      GSS j5       5       5       rr\f" \)R                  5      \" S\\mS9\" S/\tQ7SS06      GSS j5       5       5       ru\f" \v5      \" S\\mS9\" S/\wQ7SS06\x      GSS j5       5       5       5       ry\I" SS5      \f" \)R                  5      \" S\\mS9\" S/\{Q7SS06      GSS j5       5       5       5       r|\f" \v5      \" S\\mS9\" S/\wQ7SS06\x      GSS j5       5       5       5       r}\f" \)R                  5      \" S\\\%RL                  \)R                  \)GR                   \)GR                  \)RT                  \)GR                  4S9\" S/\Q7SS06      GSS j5       5       5       r\e" SSSS/5      \f" \5      \" S\\mS9\" S/\Q7SS06      GSS j5       5       5       5       r\\" S\R*                  " SS9\\" S\" \\\)GR                  \)R                  \)GR                   \0\%RL                  45      S/ S9\" S|\\(45      \" S\SSR9\R*                  " SS9\R*                  " SS9\R*                  " SS9\R*                  " SS95
      GSS j5       5       r\I" SS$5      \\GSS j5       5       5       rGSS jr\" S\/S09\" S\\\\\\\\\\\\3R*                  " SS9\\R*                  " S5S9\" S\,S:SS79\" S6\,S:SR9\" S\,S:SS795          GSS j5       5       r\" S\5      \" S\\\3R*                  " SS95          GSS j5       5       r\I" SS5      \" S\\)GR8                  \)GR:                  4SS9\    GSS j5       5       5       r\" S\)R^                  \045      \" S\" S\" \\S:S9SSS9\" S\" \\S:S9SSS9\\\" S6\,S:SS795            GSS j5       5       r\" S\\)R^                  \)GR@                  \0\%RL                  \)R                  \)GR                   45      \" S/\Q76       GSS j5       5       r\" S\\)R^                  \)GR@                  \0\%RL                  \)R                  \)GR                   45      \" S/\Q\" S\,SSR9P76       GSS j5       5       rGSS jr\4       GSS jjr      GSS jr\" S\\%RL                  4S9\" S\\" S\\(45      \R*                  " S5S9\\5            GSS j5       5       r\" S\\%RL                  4S9\" S\" S\\(4SS9\R*                  " S5S9\5            GSS j5       5       r\I" SS5      \" S\\" S\\(4S!S95      GSS j5       5       r\I" SS5      \" S\5      \" S\" S\SS9\" S\SS9\5          GSS j5       5       5       r\I" SS!5      \" S\J\?/S09\\F        GSS j5       5       5       5       r\" S\5      \" S\" S\" \\J5      S Sc/ SS95      GSS j5       5       rGSS jr\" S\\%RL                  4S9\" S\" S\" \\\%RL                  45      S/ S9\" S\" \\5      / SS$SQ9\R*                  " S=S9\R*                  " SS9\\R*                  " SS9\5            GSS j5       5       r   GS             GSS jjr\" S\5      \" S\" S\SS9\" S\,S:SR9\" S\" \\5      / SSS S9\" S\" \\5      / SSS S9\R*                  " S=S9\R*                  " SS9\5          GSS j5       5       r\\" S\R*                  " SS9\R*                  " SS9\R*                  " SS9\" S6\,S:SS79\" S\" \\)R^                  \0\1Rd                  \%RL                  \4S:S9\(4SS9\" S\" \?\\\,45      \)GRj                  \(45      \" S\,S:S5S79\" S\SS5S79\" S\SS$\R" 1 Sk5      S9\" S\" \\%RL                  \45      S/ S9\" S\,\(4S8S9\" S\\,4SS Sn9\\" GS \GSS5GSS0\R" 1 GSk5      GS9\" GS\\(4SSS795        GSGS j5       5       rGSGSGS jjr\" GS\S9\" GS\" GS	\,S:SR95          GSGS
 j5       5       rGS]GSGS jjr\" GS\5      \" GS\" GS\" \\\045      S/ S9\" GS\,S:SR9\" GS\SSR9\" GS\" \\5      S/ SS'9\" GS\,S:SS79\35      GSGS j5       5       r\" GS\S9\" GS\c\5      GSGS j5       5       r\" GS\S9\" GS\c\5      GSGS j5       5       r\" GS\S9\" GS\c\5      GSGS j5       5       r\" GS\S9\" GS\c\5      GSGS j5       5       r\I" GSSg5      \" GS\GR                  S9\" GS\c\5      GSGS j5       5       5       rGSGS jr      GSGS jr      GSGS jr        GSGS  jr\F\" GS!\\\?4/S09\" GS!\\R*                  " S!S95          GSGS" j5       5       5       r\" GS#\SS9\GSGS$ j5       5       rGSQU 4GS% jjrGSQGS& jrGSQGS' jrGS( r\GR                  GSGSGS) jj5       r\GR                  GS]GSGS* jj5       r\GR                  GSGS+ j5       r\GR                  GSGSGS, jj5       r\GR                  GSGSGS- jj5       rGSGSGS. jjr\GSGS/ j5       rGSGS0 jr\I" SS$5      GSGS1 j5       rGSGS2 jrGSGS3 jrGSGS4 jr\GR                        GSGS5 j5       r\GR                        GSGS6 j5       r\GR                        GSGS7 j5       r\GR                        GSGS8 j5       r\GR                        GSGS9 j5       r      GSGS: jrGS; rGS< rGS= rGSGS> jrGSGS? jr\" GS@\\J5      \\F\xGSGSA j5       5       5       5       r\" GSB\\4\J/S09\\F\    GSGSC j5       5       5       5       r\" GSD\5      \GSGSE j5       5       r\I" GSFS5      \" GSF\5      \GSGSG j5       5       5       r\GSGSH j5       r\I" GSIS5      \" GSI\J5      \GSGSJ j5       5       5       r\\I" GSKS5      \" GSK\\\/S09GSGSL j5       5       5       rGSMrU =r$ (  Interpreteri
  Nr   subprojectsr   subdirsubproject_dirc
                  > [         T
U ]  UR                  R                  5       XCXQR                  5        SU l        Xl        X l        0 U l        0 U l        U=(       d
    [        5       U l
        Uc  U R                  5         OXpl        U R                  5         U R                  R                  S[!        U R
                  U 5      05        [        5       U l        SU l        SU l        0 U l        / U l        0 U l        U(       a  [/        U[0        5      (       d   eX`l        O0 U l        0 U l        U R7                  5         U R9                  5         Xl        [=        0 0 5      U l        U RA                  5         U RC                  5         g )Nr   mesonF)"superr   r   get_source_diractive_projectnamer   backendsummaryr   setrelaxationsload_root_meson_fileastsanity_check_astbuiltinupdaterD   validated_cacheproject_args_frozenglobal_args_frozenr  subproject_stackconfigure_file_outputsr   r   invoker_method_default_optionsproject_default_optionsbuild_func_dictbuild_holder_mapuser_defined_optionsr   r   parse_project_redetect_machines)r   _buildr  r   r  r	  r  r  r  r!  	__class__s             r   r   Interpreter.__init__  sD    	++::<fR`btbtu"$
/18:&/#%;%%'HWi

D&ABC+.5#( "':<-/8:#)<dCCCC2P/24D/35$$8!HRSUWYHZ!r   c                    [        S5      e)NzThis class is unpicklable)r   r   s    r   __getnewargs_ex__Interpreter.__getnewargs_ex__9  s     ;<<r   c                6   U R                   R                  R                  R                  5       n[        R                  " U R
                  R                  R                   5      Ul         UR                  5       U R                   R                  l        U R                   R                  R                  R                   R                  c   eU R                   R                  R                  R                  R                  c   eU R                   R                  R                  R                  R                  c   e[        R                  " U R                   R                  R                  R                   U 5      U R                  S'   [        R                  " U R                   R                  R                  R                  U 5      U R                  S'   [        R                  " U R                   R                  R                  R                  U 5      U R                  S'   g )Nbuild_machinehost_machinetarget_machine)r   r   machinesmiss_defaultingdetect_machine_infor   r   default_missingcpuhosttargetOBJMachineHolderr  )r   r/  s     r   r#  Interpreter._redetect_machines<  sz    ::))22BBD$889P9P9V9VW*2*B*B*D

'zz%%..4488DDDzz%%..3377CCCzz%%..5599EEE djj44==CCTJ 	_% djj44==BBDI 	^$ djj44==DDdK 	%&r   c                   U R                   R                  0 SU R                  _SU R                  _SU R                  _SU R
                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _0 SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _SU R@                  _S U RB                  _S!U RD                  _S"U RF                  _E0 S#U RH                  _S$U RJ                  _S%U RL                  _S&U RN                  _S'U RP                  _S(U RR                  _S)U RT                  _S*U RV                  _S+U RX                  _S,U RZ                  _S-U R\                  _S.U R^                  _S/U R`                  _S0U Rb                  _S1U Rd                  _S2U Rf                  _S3U Rh                  _EU Rj                  U Rl                  U Rn                  U Rp                  U Rr                  U Rt                  U Rv                  U Rx                  S4.E5        S5[z        R|                  ;   a'  U R                   R                  S6U R~                  05        S7[z        R|                  ;   a(  U R                   R                  S8U R                  05        g g )9Nadd_global_argumentsadd_global_link_argumentsadd_languagesadd_project_argumentsadd_project_dependenciesadd_project_link_argumentsadd_test_setupalias_targetassert	benchmarkboth_librariesbuild_targetconfiguration_dataconfigure_filecustom_targetdebugdeclare_dependency
dependencydisablerr   error
executablefilesfind_program	generator
get_optionget_variableimportinclude_directoriesinstall_datainstall_emptydirinstall_headersinstall_maninstall_subdirinstall_symlinkis_disableris_variablejar
join_pathslibrarymessageoptionprojectrangerun_command
run_targetset_variablestructured_sourcesr  shared_libraryshared_module)static_librarysubdir_doner   r  testunset_variablevcs_tagwarningMESON_UNIT_TEST	exceptionMESON_RUNNING_IN_PROJECT_TESTSexpect_error)Afuncsr  func_add_global_argumentsfunc_add_global_link_argumentsfunc_add_languagesfunc_add_project_argumentsfunc_add_project_dependenciesfunc_add_project_link_argumentsfunc_add_test_setupfunc_alias_targetfunc_assertfunc_benchmarkfunc_both_libfunc_build_targetfunc_configuration_datafunc_configure_filefunc_custom_target
func_debugfunc_declare_dependencyfunc_dependencyfunc_disablerfunc_environment
func_errorfunc_executable
func_filesfunc_find_programfunc_generatorfunc_get_optionfunc_get_variablefunc_importfunc_include_directoriesfunc_install_datafunc_install_emptydirfunc_install_headersfunc_install_manfunc_install_subdirfunc_install_symlinkfunc_is_disablerfunc_is_variablefunc_jarfunc_join_pathsfunc_libraryfunc_messagefunc_optionfunc_project
func_rangefunc_run_commandfunc_run_targetfunc_set_variablefunc_structured_sourcesfunc_subdirfunc_shared_libfunc_shared_modulefunc_static_libfunc_subdir_donefunc_subprojectfunc_summary	func_testfunc_unset_variablefunc_vcs_tagfunc_warningosenvironfunc_exceptionfunc_expect_errorr(  s    r   r  Interpreter.build_func_dictN  sn   

 ;143Q3Q ;68[8[;*D,C,C; 3D4S4S; 6t7Y7Y	;
 89]9]; ,T-E-E; *4+A+A; $T%5%5; '(;(;; ,T-?-?; *4+A+A; 01M1M; ,T-E-E; +D,C,C; #DOO;  01M1M!;" ()=)=#;$ &t'9'9%;& )$*?*?';( #DOO);* ()=)=+;, #DOO-;. *4+A+A/;0 '(;(;1;2 ()=)=3;4 *4+A+A5;6 $T%5%57;8 1$2O2O9;: *4+A+A;;< .t/I/I=;> -d.G.G?;@ )$*?*?A;B ,T-E-EC;D -d.G.GE;F )$*?*?G;H )$*?*?I;J !$--K;L ()=)=M;N %d&7&7O;P %d&7&7Q;R $T%5%5S;T %d&7&7U;V #DOOW;X )$*?*?Y;Z ()=)=[;\ *4+A+A];^ 01M1M_;` $T%5%5a;b ,T-A-Ac;d +D,C,Ce;f .2-A-A*.*?*?)-)=)=&*&7&7#'>>-1-E-E&*&7&7&*&7&7u; ;	x 

*JJ{D,?,?@A+rzz9JJ~t/E/EFG :r   c                	   U R                   R                  0 [        [        R                  _[
        [        R                  _[        [        R                  _[        [        R                  _[        [        R                  _[        R                  [        R                  _[        R                  [        R                   _[        R"                  [        R$                  _[&        R(                  [*        R,                  _[.        R0                  [*        R2                  _[.        R4                  [*        R6                  _[.        R8                  [*        R:                  _[.        R<                  [*        R>                  _[.        R@                  [*        RB                  _[.        RD                  [*        RF                  _[.        RH                  [*        RJ                  _[.        RL                  [*        RN                  _0 [.        RP                  [*        RR                  _[.        RT                  [*        RV                  _[.        RX                  [*        RZ                  _[.        R\                  [*        R^                  _[.        R`                  [*        Rb                  _[.        Rd                  [*        Rf                  _[.        Rh                  [*        Rj                  _[.        Rl                  [*        Rn                  _[.        Rp                  [*        Rr                  _[.        Rt                  [*        Rv                  _[.        Rx                  [*        Rz                  _[.        R|                  [*        R~                  _[.        R                  [*        R                  _[&        R                  [*        R                  _[.        R                  [*        R                  _[        R                  [        R                  _[        R                  [*        R                  _E[        R                  [*        R                  [        R                  [*        R                  [.        R                  [*        R                  0E5         U R                  R                  [        R                  [*        R                  [        [*        R                  [        R                  [        R                  [        [*        R                  [        [*        R                  05        g)z
Build a mapping of `HoldableObject` types to their corresponding
`ObjectHolder`s. This mapping is used in `InterpreterBase` to automatically
holderify all returned values from methods and functions.
N)`
holder_mapr  r   P_OBJArrayHolderr   
DictHolderr   IntegerHolderr   BooleanHolderr   StringHolderMesonVersionStringMesonVersionStringHolderDependencyVariableStringDependencyVariableStringHolderOptionStringOptionStringHolderr   r   r6  
FileHolderr   SharedLibrarySharedLibraryHolderStaticLibraryStaticLibraryHolderBothLibrariesBothLibrariesHolderSharedModuleSharedModuleHolder
ExecutableExecutableHolderJar	JarHolderCustomTargetCustomTargetHolderCustomTargetIndexCustomTargetIndexHolder	GeneratorGeneratorHolderGeneratedListGeneratedListHolderExtractedObjectsGeneratedObjectsHolderOverrideExecutableOverrideExecutableHolder	RunTargetRunTargetHolderAliasTargetAliasTargetHolderHeadersHeadersHolderMan	ManHolderEmptyDirEmptyDirHolderData
DataHolderSymlinkDataSymlinkDataHolder
InstallDirInstallDirHolderIncludeDirsIncludeDirsHolderr   EnvironmentVariablesHolderStructuredSourcesStructuredSourcesHolderr   	RunResultcompilerOBJTryRunResultHolderr   ExternalLibraryExternalLibraryHolderr
   UserFeatureOptionFeatureOptionHolderr   MachineInfor7  ConfigurationDataConfigurationDataHolderbound_holder_mapr!   DependencyHolderr   ExternalProgramHolderCompilerCompilerHolderr<   ModuleObjectHolderr=   MutableModuleObjectHolderr(  s    r   r   Interpreter.build_holder_map  s    	 ) 
%##) 
 %"") 
 $$	) 

 %%%) 
 ##) 
 $$e&D&D) 
 **E,P,P) 
  8 8) 
 MM3>>) 
 !8!8) 
 !8!8) 
 !8!8) 
   6 6!) 
" c22#) 
$ IIs}}%) 
&  6 6') 
( ##S%@%@)) 
* OOS00+) 
, !8!8-) 
. ""C$>$>/) 
0 $$c&B&B1) 
2 OOS003) 
4 s445) 
6 MM3,,7) 
8 IIs}}9) 
: NNC..;) 
< JJ=) 
> s44?) 
@ c22A) 
B s44C) 
D ))3+I+IE) 
F ##S%@%@G) 
H !?!?I) 
J ((#*C*CK) 
L %%s'>'>!!3#4#4##S%@%@Q) 
 )	V	 	$$##S%9%9S66 : :#00!>!>&
 	r   c                <    U R                   R                  X05        g)z
Adds one additional mapping to the `holder_map`.

The intended use for this function is in the `initialize` method of
modules to register custom object holders.
N)r  r  )r   	held_typeholder_types      r   append_holder_mapInterpreter.append_holder_map  s     	 
 	r   c                p   [        U5      nU GH  n[        U[        5      (       a  [        S5      e[        U[        R
                  [        R                  [        R                  45      (       a  U R                  UR                  U5        M  [        U[        5      (       a  U R                  U5        M  [        U[        5      (       a8  U R                  Ul        U R                  R                  R                  U5        M  [        U[        R                   5      (       a(  U R                  R"                  R                  U5        GM<  [        U[        R$                  5      (       a(  U R                  R&                  R                  U5        GM  [        U[(        R*                  5      (       a!  U R                  UR,                  S   5        GM  [        U[        R.                  5      (       a(  U R                  R0                  R                  U5        GM
  [        U[2        5      (       a(  U R                  R4                  R                  U5        GMG  [        U[6        [8        [:        [<        [        [        R>                  [@        [        RB                  45      (       a  GM  [        SU< S35      e   g )Nz%Modules must not return ObjectHoldersr   z(Module returned a value of unknown type .)"r   r   r8   r.   r   BuildTargetr  r  
add_targetnamer   process_new_valuesr   r   install_scriptsr   r  datar  symlinksr   InternalDependencysourcesr  install_dirsrG   testsr   r   r   r2   r  r   r  )r   invaluesr   s      r   r  Interpreter.process_new_values  s   8$A!\***+RSS!e//1C1CU__UVV*At$$''*A677#

**11!4Auzz**

&&q)Au0011

##**1-A|>>?? ''		!5Au//00

''..q1At$$

  ''*AS$,H[H[ /1H1H J K K*-UVWUZZ[+\]]5 r   c                    [         R                  " [        R                  U5      (       d)  [        R
                  " S[        R                   SU 3US9eU[         R                  U R                  '   g )NzMeson version is z but project requires node)	r   version_comparer   stable_versionr.   	from_noder   project_meson_versionsr   )r   pvlocations      r   handle_meson_version Interpreter.handle_meson_version  se    ''(?(?DD&003DXEUEUDVVlmolp1q  yA  B  B;=''8r   c                   U R                   R                  (       d  g U R                   R                  S   n[        U[        R                  5      (       d  g UR
                  R                  R                  5        Hz  u  p#[        U[        R                  5      (       d   S5       eUR                  S:X  d  M=  [        U[        R                  5      (       d  M^  U R                  UR                  U5        M|     g )Nr   for mypymeson_version)r  linesr   r   FunctionNodeargsr   r   IdNoder   
StringNoder!  )r   rc  kwvals       r   handle_meson_version_from_ast)Interpreter.handle_meson_version_from_ast   s    xx~~((..#'7#7#788||**002GBb'..11=:=1xx?*c7#5#566--cii= 3r   c                    U R                   R                  (       a=  U R                  R                  U R                   R                  R	                  5       5        U R                  $ N)r   cargobuild_def_filesr  get_build_def_filesr(  s    r   r3  Interpreter.get_build_def_files  sF    !!  ''(8(8(>(>(R(R(TU###r   c                   [        U[        R                  5      (       a@  UR                  (       a  g [        R
                  R                  UR                  5       5      nO[        R
                  R                  U5      (       a  UR                  S5      (       d  [        U R                  R                  5       5      n[        U R                  R                  5       5      n [        U5      R                  5       nX4R0                  ;   a  g X$R0                  ;   a  UR3                  U5      n[5        U5      nOg XR6                  ;  a  U R6                  R9                  U5        g g ! [         a    [        U5      nUR!                  5       n[#        US5      (       ai  UR$                  [         R&                  -  S:w  aH  UR(                  [         R*                  :X  a*  UR,                  R                  5       UR.                  -  n GNe f = f)Nz/dev/st_file_attributesr   )r   r   r   is_builtr  pathnormpathrelative_nameisfile
startswithr|   r   r  get_build_dirresolveOSErrorstathasattrr6  FILE_ATTRIBUTE_REPARSE_POINTst_reparse_tagIO_REPARSE_TAG_APPEXECLINKparentr  parentsrelative_tor   r2  add)r   fsrcdirbuilddirf_ss         r   add_build_def_fileInterpreter.add_build_def_file  s{   
 a''zz  !23AWW^^Aq||G'<'<$**99;<FD,,::<=H!W__& ::%#^^F+BA(((  $$Q' )%  
!WGGIA344,,t/P/PPTUU((D,K,KK **,rww6B
s   !E# #BHHc                    U R                   $ r0  	variablesr(  s    r   get_variablesInterpreter.get_variables6  s    ~~r   c           	        [         R                  /nU R                  R                  5       (       a  UR	                  [         R
                  5        U GH  nU R                  R                  R                  U   nU R                  R                  U   R                  5        H  n [        R                  " UR                  U5      5      n[        U5      S:X  a+  [         R"                  " SSU R$                  U R&                  S9  SU[         R
                  L 0nUS-   n[)        X/5      nUR+                  U5        UR-                  USS9n	XR                  R.                  U   U'   M     GM     g ! [         a     M  f = f)	NrA   zstdlib without variable name0.56.0r   r   _stdlibT)force_fallback)r   HOSTr   is_cross_buildr   BUILDr   r   
propertiesr   keysr   stringlistify
get_stdlibKeyErrorr   r4   r   r   current_noderE   set_fallbacklookupstdlibs)
r   machine_choicesfor_machinepropsldir   r  dfdeps
             r   check_stdlibsInterpreter.check_stdlibs9  sF   (--.==''))""=#6#67*KJJ**55kBE]],,[9>>@!//0@0@0CDB r7a<))*H(TXTcTcnrnn  A"K=3F3F$F 9}.tV<#iiti<58

"";/2 A +
   s   $%E..
E<;E<rT  0.59.0)sincec           
     D	   US   n[        X0R                  5      u  pVnU(       a  [        U5      $ UR                  S5      (       a  [	        SU S35      eSnUR                  S5      (       aW  UR                  S5      (       a-  [
        R                  " SU S	UR                  SS
S5       S3US9  U[        S5      S-   S  n	SnOUn	XR                  ;   a  U R                  U	   $  SU	 3n
[        R                  " U
5      nUR                  U 5      n[        U[        [        45      (       d   S5       eU R                   R                  R#                  U	5        UR0                  R2                  (       aL  [4        R6                  " SUR0                  R&                   3UR0                  R2                  U R                  US9  UR0                  R8                  (       aL  [:        R6                  " SUR0                  R&                   3UR0                  R8                  U R                  US9  U(       aU  UR0                  R<                  (       d:  UR0                  R>                  c#  [	        SUR0                  R&                   S35      eUR0                  R>                  b  U(       aP  [:        R6                  " SUR0                  R&                   S3UR0                  R>                  U R                  SUS9  GO[4        R6                  " SUR0                  R&                   S3UR0                  R>                  U R                  SUR0                  R>                   S3US9  OUR0                  R<                  (       a  U(       dL  U(       a9  [	        SUR0                  R&                   SUR0                  R&                   35      e[        U	5      nO.[
        R(                  " SUR0                  R&                   S3USS9  XR                  U	'   U$ ! [$         a  nUR&                  W
:w  aV  U(       a  Ue[
        R(                  " SU S35        [*        R,                  " U5       H  n[
        R.                  " U5        M     U(       a  [	        SU S35      e[        U	5      n S nAGNBS nAff = f)Nr   _zModule "z" does not existF)z	unstable-	unstable_rs  zImporting unstable modules as "z" instead of "-rA   "rW  unstableTzmesonbuild.modules.r$  z" exists but failed to import.zmodule zModule z4 has never been unstable, remove "unstable-" prefix.z has been stabilizedz,drop "unstable-" prefix from the module namez as stable modulezeConsider either adding "unstable-" to the module name, or updating the meson required version to ">= z<" has not been stabilized, and must be imported as unstable-zS has no backwards or forwards compatibility and might not exist in future releases.)r   fatal) rI   r   r?   r<  r/   r	   deprecationreplacer   r   	importlibimport_module
initializer   r;   r>   r   rH  ImportErrorr  rp  	tracebackformat_exceptionrI  INFOaddedr4   r   
deprecatedr5   rv  
stabilized)r   r  r(  r   modnamedisabledr   rr  expect_unstablereal_modnamefull_module_pathmodule
ext_moduleer   s                  r   r  Interpreter.func_importN  s9    q' 6v OA*733 c"""XgY6F#GHH 899!!+..  #B7)>ZaZiZijmortuZvYwwx!y*.0"3z?Q#6#78L"O"L<<'<<--	1!4\NC,,-=>F  **40Jj?<N*OPP\R\\PJJ""<0??  !!GJOO,@,@+A"BJOODYDY[_[j[juyz??%%((7:??3G3G2H)I:??KeKegkgvgv  BF  G:??#;#;
@Z@Z@b"WZ__-A-A,BBv#wxx??%%1!,,joo2233GHOO..B!	# %%joo2233DEOO..{  }G  }L  }L  }W  }W  |X  XY  Z!	#
 __%%"*Xjoo6J6J5K  LH  IS  IX  IX  I]  I]  H^  ,_  `  `4\B
wz';';&<  =P  Q  \`  hm  n%/\"[  	?vv))Gxy0NOP%66q9DJJt$ : &':J'KLL0>J	?s   %P 
RBRRrO  )varargsc                *    U R                  US   5      $ r   )source_strings_to_filesr   r  r(  r   s       r   r  Interpreter.func_files  s     ++DG44r   rJ  compile_argsT)r   defaultd_import_dirs0.62.0)r  rp  	link_argsz0.46.0extra_filesz1.2.0)r   r  rp  0.54.0rV  )rp  since_valuesr   objects1.1.0c                \   US   nU R                  U5      nUS   nUS   nUS   nU R                  US   5      n	U R                  US   5      n
US   nUS   nUS	   nUS
   nUc  U R                  nUS   nU R                  US5      nU R                  R                  n[
        R                  R                  [
        R                  R                  UU R                  5      5      n[
        R                  R                  [
        R                  R                  UU R                  5      5      nUR                  5        H  u  nnU(       d!  [        R                  " SSU R                  US9  [
        R                  R                  U5      (       d  MT  U R!                  5       (       d  [#        UU5      (       a  M|  [#        UU5      (       d  M  [
        R                  R%                  U5      (       d  M  [&        R(                  " U5      UU'   M     [*        R,                  " XUXXyU
XMUUU5      nU$ )Nr   	link_with
link_wholer  r  r  r  r  rR  r   d_module_versionsr  z*empty variable value in declare_dependency1.4.0rW  )extract_incdirsr  r   r   
source_dirr  r8  abspathjoinr	  root_subdirr   r4   r   r   isabsis_subprojectr   isdirr  r  r   r  )r   r  r(  r   depsincslibs
libs_wholer  r  r  r  r  rR  r   r  r  rJ  r	  project_rootr   r   rl  s                          r   r  #Interpreter.func_declare_dependency  s   & n%##F+k"L)
#..vi/@A226-3HIn-;'	;'	#?**G"#67,,V_E!!,,fd>Q>Q)RSwwrww||FD<L<L'MNOO%DAq%%&RT[]a]l]lw{|ww}}Q++--^NTU5V5V&|Q77a(($==a@	! & --g\.7zT_.2?PR_.57 
r   rB  )optargsc                   Uu  pEUc!  [         R                  " SSU R                  US9  U(       dR  UcA  SSKJn  U" 5       nUR
                  R                  S   R                  U5        UR                  n[        SU-   5      eg )Nz(assert function without message argument0.53.0rW  r   )
AstPrinterr   zAssert failed: )
r4   r   r   r  r  r(  	argumentsacceptresultr.   )r   r  r(  r   r   ra  r  printers           r   r~  Interpreter.func_assert  s{     ?!!"LhX\XgXgrvw,$,		##A&--g6!..&'87'BCC r   c                    Ub*  U[        U5      :w  a  [        SU S[        U5       S35      e[        X5       H%  u  pEUc  M
  [        XE5      (       a  M  [        S5      e   g )Nz	Expected z arguments, got r
  zIncorrect argument type.)r   r/   zipr   )r   r(  argcount	arg_typesactualwanteds         r   validate_argumentsInterpreter.validate_arguments  sc    3t9$&8*<LSQUYKWX'YZZ!$2NF!!&11*+EFF 3r   re  check0.47.0capture)r  rp  0.50.0c                $    U R                  X#5      $ r0  )run_command_implr  s       r   r  Interpreter.func_run_command  s     $$T22r   Fc                &	   Uu  pEUS   nUS   nU R                   R                  5       nU R                   R                  5       n	US   n
U
c  [        R                  " [
        SS9  Sn
Sn/ n[        U[        R                  5      (       a|  U R                  R                  R                  5        H  u  pXN:X  d  M  Un  O    [        SUR                  5       < S	35      e[        UR                  XR                  5       5      5      e[        U[        5      (       a4  UR                  5       (       d  [        S
UR!                  5       < S35      eO[        U["        R$                  5      (       aR  UR'                  5       nUR)                  5       n[        USS9nUR                  5       (       d  [        SU< S35      eUnO[        U[*        R,                  5      (       a  UR/                  X5      n[0        R2                  R5                  XR6                  5      n[        USU/S9nUR                  5       (       d  [        SU< S35      eUnU GH|  n[        U[8        5      (       a  UR;                  U5        M,  [        U[*        R,                  5      (       a"  UR;                  UR/                  X5      5        Mm  [        U[        5      (       a!  UR;                  UR=                  5       5        M  [        U["        R$                  5      (       a  [>        R@                  " SSU RB                  U RD                  S9  [        UR)                  5       SS9nUR                  5       (       d  [        SU< S35      eUR;                  UR=                  5       5        GML  [        UR                  URF                  UR                  5       5      5      e   U RI                  UR=                  5       5        U Hl  n[0        R2                  RK                  U5      (       d4  [0        R2                  R5                  U(       a  U	OUU R6                  U5      nU RI                  U5        Mn     [M        XLXxXR6                  U R                   RO                  5       S/-   X:US9
$ )Nr  envr  TonceFzoProgram {!r} was overridden with the compiled executable {!r} and therefore cannot be used during configurationzProgram zK is a compiled executable and therefore cannot be used during configurationzcommand z not found or not executablesilent)r  search_dirszProgram or command z7Compiler object as a variadic argument to `run_command`0.61.0rW  
introspect)in_builddirr  r  )(r   r  r=  r	   rp  implicit_check_false_warningr   r   r  find_overridesr   r.   descriptionr   r   foundget_namer   r  get_exe_argsget_exer   r   absolute_pathr  r8  r  r  r   r   get_pathr4   r   r   rb  r  rN  r  rH   get_build_command)r   r(  r   r  cmdcargsr  r  rJ  rK  r  overridden_msgexpanded_argsr  exeprognameprog
search_diras                      r   r  Interpreter.run_command_impl  s   
 
#Um!!002##113w=LL5DAE* &(c5++,,!ZZ66<<>	:#H ?
 +Xcoo6G5J  KV  ,W  X  X&~'<'<XGX'YZZc?++99;;*Xclln5GGc+dee Y//00,,.M++-C"3t4D::<<*XcW<X+YZZC#x}}--''9fkk:J"3t*ND::<<*-@Gc+deeCA!S!!$$Q'Ax}}--$$Q__V%FGA//$$QZZ\2Ay1122%%&_aikokzkz  FJ  FW  FW  X&qyy{4@zz||.#@\/]^^$$T]]_5*>+@+@IZ+[\\ $ 	/A77==##GGLL[fdkkSTU##A& 
 #c8[[**<<>,O&1Q 	Qr   c                    [        S5      e)NzYTried to call option() in build description file. All options must be in the option file.)r.   )r   nodesr(  r   s       r   r  Interpreter.func_optionP  s    "#~r   z0.38.0)r  r   c                N    US   US   US   S / S.nU R                  US   U5      $ )Nr   r   r   )r   r   r   r
   cmake_optionsr   )do_subproject)r   r  r(  r   r+  s        r   r  Interpreter.func_subprojectS  sC     z*%&78i($
 !!$q'2..r   c                    [        [        5       [        R                  R	                  U R
                  U5      X#S9nX@R                  U'   U$ )N)disabled_featurerr  )rF   rK   r  r8  r  r	  r  )r   	subp_namer  rr  subs        r   disabled_subprojectInterpreter.disabled_subprojectd  sA    8:BGGLLI\I\^g<h0@W&)#
r   c           	     \
   US:X  a   [        X R                  5      u  pVnU(       a`  U(       d   S5       e[        R                  " S[        R                  " U5      SS[        R                  " U5      S5        U R                  XS9$ US   nU(       aN  UR                  5        H4  u  pXR                  R                  R                  U	R                  US	9'   M6     0 UEUEnUS
:X  a  [        S5      eUS   S:X  a  [        S5      eSU;   a  [        S5      e[        R                  R                  U5      (       a  [        S5      e[        U5      (       a  [        R                   " SU R"                  S9  XR$                  ;   a0  U R$                  U/-   nSR'                  U5      n[)        SU S35      eXR*                  ;   a  U R*                  U   nU(       a.  UR-                  5       (       d  [        SUR.                   S35      eUS   (       aW  U R0                  R*                  U   nUS   nUS:X  d  [2        R4                  " X5      S   (       d  [        SU SU SU S35      eU$ U R6                  R8                  n UR;                  X5      u  nn[        RF                  " [        R                  R'                  U R0                  R6                  RI                  5       U5      S#S$9  S#U l%        SR'                  U R$                  U/-   5      nS%[        R                  " U5      /nUS&:w  a  US'[        R                  " U5      /-  n[        R                  " / UQS(P7S)S*06  U RL                  U RN                  U RP                  S+.n UU   " UUX5      $ ! [<        R>                   a  nUb  URA                  5       S-   nOSnU[        R                  " U5      S[        RB                  " S 5      /nU(       dC  [        R                  " U5        [        R                  " / UQS!P76   U R                  UUS"9s S nA$ [        RD                  " U6   UeS nAff = f! [(         a    e [R         a  nU(       d  [        RT                  " U5         [        RV                  " U[        RX                  " S,5      S-9  S S S 5        O! , (       d  f       O= f[        R                  " S.[        R                  " U5      S[        RB                  " S 5      S!5        U R                  UUS"9s S nA$ UeS nAff = f)/N
sub_staticr$  
Subprojectr   skipped: featurer  )r  r   r   r   z"Subproject name must not be empty.r   r
  z-Subproject name must not start with a period...z5Subproject name must not contain a ".." path segment.z-Subproject name must not be an absolute path.zJSubproject name has a path separator. This may cause unexpected behaviour.rW   => z"Recursive include of subprojects: zSubproject "z" required but not found.r   	undefinedSubproject  version is  but 
 required.z subprojectzis buildable:r   z(disabling))rr  Texist_okz
Executing subprojectr  r   r   nestedF)r  cmaker1  z
Exception:)prefixz
Subproject)-rI   r   r	   r   r   r  r   r   optstoreaugmentsevolver.   r  r8  r  r   rp  rb  r  r  r0   r  r  r  r   r   version_compare_manyr   wrap_resolverr>  r   WrapExceptiontitler   rM  makedirsr=  r  _do_subproject_meson_do_subproject_cmake_do_subproject_cargo	Exceptionr   rr  yellow)r   r  r   force_methodforced_optionsr  r   featurer   r   r   	fullstackincpathr   r  r  rr  r   r  r  msgstackr   methods_maps                            r   r  Interpreter.do_subprojectk  s   $&<V__&U#G&J&7HH\499Y#7>PRVR[R[\cRdfpq++I+PP !23
 &,,. ST&&//I0NO / DC?CO?&'KLLQ<3&'VWW9&'^__77==##&'VWW	""LLe"&"3"35-----;Ikk),G B7)1MNN((()))4J
 0 0 2 2*\*:K:K9LLe+fggi ZZ++I6	*$H,I,I",UVW,X.YK|TVSWW\]c\ddn/opp**	YYy?NFF 	BGGLL!7!7!E!E!GP[_`"&..)<=%tyy'78W(DIIf-..A(!(T(%( ......J
 		v&y&/RR= !! 	'%++-=%499Y/$((4.QC-#-}-//	Q/GGJJG	@  	 	[[+ NN1T[[-FG ,++ 6):OTXXVZ^]jk//	Q/GGG	sb   N 	Q Q*BQ5Q;QQT+,T&	*R<3	T&<
S
	AT&T+$T&&T+c                   [         R                  " U5         U(       a  SSKJnJn	  U	" SS9n
UR                  U" 5       5        UR                  U
5        U
R                  5         [        R                  R                  U R                  R                  R                  5       US5      n[        USSS9 nUR                  U
R                  5        S S S 5        [         R                   " S	U5        [         R"                  " U5        U R                  R%                  5       n['        XR(                  XU R*                  X5UU R,                  S
9	nU R.                  Ul        U R0                  Ul        U R2                  Ul        U R4                  Ul        U R6                  Ul        U R8                  U/-   Ul        U R:                  n[         R<                  " 5          UR?                  5         [         R@                  " 5       nS S S 5        [         R                   " S[         RB                  " U5      S5        S S S 5        [         R                   " 5         US   (       aK  WRD                  nUS   nUS:X  d  [F        RH                  " UU5      S   (       d  [K        SU SU SU S35      eWU l        U R.                  RM                  WR.                  5        [O        XWU R8                  S9U R.                  U'   U(       a  U RP                  RM                  U5        U RP                  RM                  URP                  5        U R                  RS                  UR                  5        URD                  U R                  R.                  U'   U R.                  U   $ ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)Nr   )AstIndentationGeneratorr  T)update_ast_line_nosmeson.buildwutf-8encodingzGenerated Meson AST:)r  r  r!  r  z	finished.r   r  r   r  r  r  r  )warnings	callstack)*r	   r   r  r  r  r  post_processr  r8  r  r   r   r=  openwriter  r   cmd_ci_includecopyr  r  r	  r!  r  r   r  r  r  r  r  nested_warningsrunget_warning_countr   r   r   r  r.   r  rF   r2  merge)r   r  r  r   r   r  r2  r  r  r  r  meson_filenamerI  	new_buildsubicurrent_activesubi_warningsr  r  s                      r   r   Interpreter._do_subproject_meson  s    [[#E$>

245

7#$$&!#djj.D.D.R.R.TV\^k!l.#@AGGGNN+ A/@##N3

)Iy,,	4K^K^.[484M4MOD  $//D<<DL"ooDO$($9$9D!<<DL$($9$9YK$GD!!44N%%'
 $ 6 6 8 ( HH\499Y#7EA $D 	
)%%BI&F[ (E(Eb&(QRS(T*[<PRtSXY_X``j+kll"0 0 01&6tmAEAVAV'X#   ''8##D$8$89

$,0,@,@

y)	**W A@( ('; $#s=   BN02NDN0&N:4N0
N	N0
N-	(N00
N?c                   SSK Jn  [        R                  " U5         U R                  R
                  R                  S5      nSSKJn  UR                  S5      =(       d    U" 5       nUR                  S/ 5      UR                  -   n	U" [        U5      [        U5      U R                  R                  U R                  5      n
U
R                  U	5        U
R!                  5         U
R#                  UR$                  5      nU R'                  XUXKU
R(                   Vs/ s H  n[+        U5      PM     sn[,        R.                  1S9nXl        S S S 5        U$ s  snf ! , (       d  f       W$ = f)Nr   )CMakeInterpreterr  )CMakeSubprojectOptionsr
   r  )r  )r  r4  r	   r   r   r  get_value_formodules.cmaker5  getr  r|   r   r   r  
initialiseanalysepretend_to_be_mesontarget_optionsr  bs_filesr   r   r   cm_interpreter)r   r  r  r   r   r4  r  r5  kw_optsr  cm_intr  rI  r  s                 r   r   Interpreter._do_subproject_cmake  s)    	-[[#]]++99(CF>jj+G/E/GG"JJ;g>S>SSM%d6lDL$**BXBXZ^ZfZfgFm,NN ,,W-C-CDC..%+__5_SV_51QQ!	 / F %+!) $*  6 $#* s   C=EE/EE
E(c                |   SSK Jn  [        R                  " SSU R                  U R
                  S9  [        R                  " SSU R
                  S9  U R                  R                  cL  U R                  S	/S[        R                  5        UR                  U R                  5      U R                  l        [        R                  " U5         U R                  R                  R                  U5      nU R                  XX4U[         R"                  R%                  US
5      /5      sS S S 5        $ ! , (       d  f       g = f)Nr   )r1  zCargo subproject1.3.0rW  zZCargo subproject is an experimental feature and has no backwards compatibility guarantees.T)r  r   rustz
Cargo.toml)r   r1  r4   r   r   rb  r	   rp  r   r<  r   rZ  r  r   	interpretr  r  r8  r  )r   r  r  r   r   r1  r  s          r   r   Interpreter._do_subproject_cargo!  s     	0'4??UYUfUfgq):):	<!!)x}/A/AB%*%6%6t7G7G%HD"[[#""((226:C,,?Cfl346 $##s   AD--
D;rR  c                   US   nSU;   a  [        S5      e[        R                  " UR                  SSS9S   5      b  [        SU< 35      e [        R
                  R                  U5      R                  U R                  S	9nU R                  R                  R                  U5      u  pg[!        U[        R"                  5      (       a$  [$        R$                  " U5      nXHl        Xxl        U$ US:X  aF  Ub!  [!        U[        R*                  5      (       d   eU(       d  gSR-                  [/        U5      5      $ [!        U[0        5      (       a  [2        R4                  " USU S35      $ U$ ! [         a    U R                  R                  R                  W5      (       a*  U R                  R                  R                  U5      nS n GNU R                  (       a  [        S
U SU R                   S35      e[        S
U S35      ef = f)Nr   r   zuHaving a colon in option name is forbidden, projects are not allowed to directly access options of other subprojects.r
  rA   )maxsplitzInvalid option name r  zOption z does not exist for subproject  does not exist.
b_sanitizenone,{})r.   r@   searchsplitr
   r   from_stringr  r   r   r  get_value_object_and_value_forra  is_base_optionget_default_for_b_optionr   r   r  r(  r  r   UserStringArrayOptionr  sortedr   r  r  )	r   r  r(  r   optnameoptkeyvalue_objectr   ocopys	            r   r  Interpreter.func_get_option2  s    q''>& (G H H cA >r BCO&)=g['IJJ
	J&&227;BBdooB^F"&--"8"8"W"WX^"_L" lG$=$=>>IIl+E JKL$':lGDaDa+b+bbb
 88F5M**eS!!%%er'"-=>>C  	J}}%%44V<< ..GGO#??(77);Z[_[j[jZkkl)mnn$wwi7G%HII	Js   AE- -AH=HrF  c                   US   nUbn  [         R                  " SSU R                  US9  UR                  5        H9  u  pV[	        U[
        [        [        45      (       a  M'  [        SU< SU< S35      e   [        R                  " U5      $ )Nr   zconfiguration_data dictionary0.49.0rW  4"configuration_data": initial value dictionary key "$"" must be "str | int | bool", not "ru  )r4   r   r   r   r   r   r   r   r/   r   r  )r   r  r(  r   initial_valuesr   r   s          r   r  #Interpreter.func_configuration_datah  s     a%!!"A8T__gkl&,,.!!c3%566*NqeSwxyw||}~@ @ / &&~66r   c                f   U R                   b  g SSK Jn  [        S5      U R                  R                  ;   aP  U R
                  R                  R                  [        S5      5      nUR                  X R                  U 5      U l         OOU R
                  R                  R                  [        S5      5      nUR                  X R                  U 5      U l         U R                   c  [        SU S35      eX R                   R                  :w  a  U R                   R                  R                  S5      (       a?  [        R                  " S[        R                   " U R                   R                  5      5        U R"                  R$                  (       d%  ['        S	U S
U R                   R                   35      eU R
                  R)                  [        S5      U R                   R                  SS9  U R"                  R$                  (       a  U R
                  R+                  U5        U R"                  R,                  R/                  5        VVs0 s H=  u  p4U R"                  R
                  R                  R1                  U5      (       d  M;  X4_M?     nnnU R
                  R3                  U5        g s  snnf )Nr   )backends	genvsliter  zUnknown backend "".vsz$Auto detected Visual Studio backend:zBackend changed from z to T)first_invocation)r  rd  r   r!  cmd_line_optionsr   r  r6  get_genvslite_backendr   get_backend_from_namer.   r  r<  r	   r   r   r   rh  r   
set_optioninit_backend_optionsr
   r   is_backend_optionset_options)r   rd  backend_namer   r   r
   s         r   set_backendInterpreter.set_backendu  s   <<#&[!T%>%>%O%OO  ==11??	+@VWL#99,

TXYDL==11??	)@TUL#99,

TXYDL<<&):<.'KLL<<,,,||  ++D11?4<<K\K\A]^##44'*?~TRVR^R^RcRcQd(effMM$$Yy%94<<;L;L_c$d ,,MM..|<$($4$4$<$<$B$B$D  A$DDAHXHXHaHaHjHjH|H|}~H414$D  A!!'* As   
:J-J-rc  r%  r  c                :    [        U [        5      (       a  U S   $ U $ r   r   r   xs    r   <lambda>Interpreter.<lambda>  s    
1d(;(;! B Br   )r  	validator	convertorlicenselicense_files)r  r   rp  )r  c                   Uu  pESU;   a  [        SU< S35      eUS   (       a  U R                  US   U5        O0[        R                  " 5       [        R                  U R
                  '   U R                  5         US   U l        U R                  R                  (       d6  U R
                  S:w  Ga-  U R
                  U R                  R                  ;  Ga  U R
                  S:X  aZ  U R                  R                  R                  U R                  U R                  R                  U R                  R                   5        OU R                  R                  R#                  U R
                  U R$                  U R                  U R                  R                  U R                  R                   5        U R                  R                  R'                  U R
                  5        U R)                  5       (       d  U R                  R                  R+                  [-        S5      5      nUb  [/        U[0        5      (       d   S5       eU R                  R                  R+                  [-        S	5      5      n[/        U[2        5      (       d   S5       eU=(       d    UR5                  S
5      n[        R6                  " U5        U R9                  5         U R)                  5       (       dI  U R                  R                  R;                  U R                  R                  5        X@R<                  l        X@l         US   n	U	c   S5       e[/        U	[        RB                  5      (       a  [D        RF                  " SSU R
                  US9  U RI                  U	5        U	RK                  U R                  RL                  U R                  RN                  5      n
 [Q        U
5      RS                  SS9RU                  S5      n[[        U5      S:X  a  US   S:X  a  USS n[[        U5      S:w  a  [Y        S5      eUS   U l.        OXl.        U R<                  R\                  c  U R\                  U R<                  l.        US   c  S/nUS   (       a  [        S5      eOUS   n/ nU R_                  US   5       HO  nURK                  U R                  RL                  U R                  RN                  5      n
URa                  X45        MQ     [<        Rb                  " U R\                  UXR
                  5      U R<                  Rd                  U'   U R
                  U R<                  Rf                  ;   a  [i        S5      eUS   n[/        U[0        5      (       d  [Y        S5      e[j        Rl                  Ro                  U5      (       a  [Y        S5      eUR5                  S5      (       a  [Y        S 5      eS!U;   a  [Y        S"5      eU R)                  5       (       d  Xl8        U Rp                  U R<                  l8        [j        Rl                  Rs                  U Rt                  U5      nU R)                  5       (       d  [v        Rx                  " U R                  R                  R+                  [-        S#5      5      5      n[z        R|                  " U R                  R                  5       UU R
                  U5      U R                  l@        ONU R                  R                  c   S5       eU R                  R                  R                  UU R
                  5        X@R<                  Rf                  U R
                  '   [        R                  " S$[        R                  " U5      5        [        R                  " S%[        R                  " U R\                  5      5        U R                  US&[        R                  5        U R                  US'[        R                  5        U R)                  5       (       d  U R                  5         g g ! [V         a    [Y        S5      ef = f)(Nr   zProject name z must not contain ':'r%  r   r   r  r$  vsenvrg  r   zversion from filer   rW  r  r   r   zVersion file not found.r   rA   r   z3Version file must contain exactly one line of text.r{  unknownr|  zDProject `license` name must be specified when `license_files` is setzSecond call to project().r	  zSubproject_dir must be a stringz,Subproject_dir must not be an absolute path.r
  z,Subproject_dir must not begin with a period.r  z/Subproject_dir must not contain a ".." segment.	wrap_modezProject name:zProject version:TF)Jr/   r!  r   NoProjectVersionr  r   _load_option_filer  r   rh  r   initialized_subprojectsr  &initialize_from_top_level_project_callr!  ri  r
   initialize_from_subproject_callr  rH  r  r6  r   r   r   r   r<  setup_vsenvrq  validate_cmd_line_optionsr   r   r  r   r4   r   rN  r  r  	build_dirr|   	read_textrQ  FileNotFoundErrorr.   r   r   r  r   DepManifestdep_manifestprojectsr0   r  r8  r  r	  r  r  r   rR  r   Resolverr  r  load_and_merger	   r   r   r<  r   rZ  r\  rm  )r   r  r(  r   	proj_name
proj_langsr  r~  force_vsenvr   ifnamever_dataproj_licenseproj_license_filesr   	spdirnamesubprojects_dirr  s                     r   r  Interpreter.func_project  s   " !%	)"]9-?T#UVV /"%%f_&=tD?G?X?X?ZH++DOO< '-.?'@$,,B1F4??bfbobo  cH  cH  LH"$&&MMdNjNjNRNgNgNxNxNRN^N^NfNfh &&FFtGKGjGjGKGcGcGKG`G`GqGqGKGWGWG_G_	a
 5599$//J!!##
 mm,,::9Y;OPG?j#&>&>J
J>MM**8879KLEeT**6J6*;7#5#5d#;K  -!!##MM""<<T=V=V=g=gh&/JJ#"+#".J."gx}}--!!"5x[_`##G,**4+;+;+F+F+/+;+;+E+EGFF<1171CII$O 8}!hqkR&7#Aa=8}!*+`aa#+A;D #* ::%%-)-)=)=DJJ&)$%;Lo&&'mnn ' "),L--f_.EFA__T%5%5%@%@%)%5%5%?%?AF%%vk2 G .3->->t?S?SUa?QSbSb.d

	*??djj1119:: +,	)S))&'HII77==##&'UVV$$&'UVV9&'XYY!!##"+$($7$7

! '',,t{{I>!!## ,,T]]-C-C-Q-QR[\gRh-ijI-1]]4;K;K;Z;Z;\^moso~o~  AJ  .KD*##11=IzI=**99/4??[/8

DOO,$))I"67#TYYt/C/C%DE:t]-?-?@:um.A.AB!!##  $y % F*+DEEFs   	'`* *a r<  r   c           	        US   n[        X0R                  5      u  pVnUS   nU(       ap  U(       d   S5       e[        U[        R                  S9 HE  n	[
        R                  " S[
        R                  " U	5      S[
        R                  " U5      S5        MG     gUb!  U R                  XFU R                  U5      5      $ [        R                  " U R                  5      n
[        R                  " U
S	5      (       a  [
        R                  " S
US9  U R                  XF[        R                  5      nXR                  US[        R                   5      -  nU$ )Nr   r   r$  keyCompiler for languager  r  Fr  zXadd_languages is missing native:, assuming languages are wanted for both host and build.rW  )rI   r   rW  r   
sort_clinkr	   r   r   r<  machine_from_native_kwargr4   get_target_versioncheck_versionrp  r   rZ  r\  )r   r  r(  r   langsr  r   r  r   langtvsuccesss               r   rx  Interpreter.func_add_languages  s    Q&<V__&U#G!&J&7u)*>*>?0$))D/CUW[W`W`ahWikuv @%%et7U7UV\7]^^ ..t?B''H55w&*, ((-:L:LMG))%8K8KLLGNr   c                     U Vs/ s H  n[        X0R                  5      PM     sn$ s  snf ! [         a  n[        U S[        U5       35      eS nAff = f)Nz(): )r:   r   r/   r   )r   r(  	func_namer   r  s        r   _stringify_user_arguments%Interpreter._stringify_user_arguments4  sS    	?HLM1*1oo>MMM 	?"i[SVH#=>>	?s    - (- - 
AAAc                    [        U5      S:  a!  [        R                  " SSU R                  US9  U R	                  US5      nU R                  U5        g )NrA   z#message with more than one argumentr  rW  ra  )r   r4   r   r   r  message_implr   r  r(  r   args_strs        r   r  Interpreter.func_message:  sL     t9q=!!"GSWSbSbmqr11$	B(#r   c                Z    [         R                  " [         R                  " S5      /UQ76   g )NzMessage:)r	   r   r   )r   r(  s     r   r  Interpreter.message_implB  s    :&..r   r  r  r   r   r   c                    US   c)  [        US   [        5      (       d  [        S5      eUS   nO-[        US   [        5      (       d  [        S5      eUS   US   0nU R	                  US   XC5        g )NrA   r   z*Summary first argument must be dictionary.z&Summary first argument must be string.r   )r   r   r.   r   summary_impl)r   r  r(  r   r   s        r   r  Interpreter.func_summaryE  sw     7?d1gt,,*+WXX!WFd1gs++*+STT1gtAw'F&+V<r   c                   U R                   U R                  ;  a7  [        U R                  U R                  5      U R                  U R                   '   U R                  U R                      R                  XUS   US   U R                   5        g )Nr   r   )r   r  r   r  r   r   )r   r   r   r   s       r   r  Interpreter.summary_implZ  sj    ??$,,.,3D4K4KTMaMa,bDLL)T__%11VI.z0BDOO	Ur   c           	        [         R                  " 5       n[        U R                  R	                  5       5       H  u  p#UR                  5       /nUR                  (       a  USUR                  < S3/-  nOMUR                  (       a  U[        UR                  5      /-  nO"UR                  S:  a  XCR                   S3/-  nUR                  (       a%  SR                  UR                  5      nUSU S3/-  nXAU'   M     U(       a  U R                  SUS	S
S.5        U R                  (       a  [         R                  " 5       nU R                  R                  (       a  U R                  R                  US'   U R                  R                  (       a  U R                  R                  US'   S n[        U R                  R                   R	                  5       US9nUR#                  U V	V
s0 s H  u  p[        U	5      U
_M     sn
n	5        U(       a  U R                  SUSS S.5        [$        R&                  " S5        U R(                  R+                  SS 5      n[        U R(                  R	                  5       5       H9  u  pU R                  U   R                  5       (       d  M)  UR-                  5         M;     U(       a  UR-                  5         g g s  sn
n	f )NzFeature z	 disabledr   z	 warningsr  z(from )SubprojectsTr   )r   r   zCross fileszNative filesc                |    [        U [        5      (       a  U S   n [        U [        5      (       a  U $ U R                  $ r   )r   tupler   r  )rM  s    r   compatibility_sort_helper=Interpreter._print_summary.<locals>.compatibility_sort_helper|  s3    a''!Aa%%Hvvr   r  zUser defined optionsFr   )r   OrderedDictrW  r  r   r  r  rr  r   r"  r#  r  r  r!  
cross_filenative_fileri  r  r	   r   r  popr   )r   all_subprojectsr  subpr   r  r   r  sorted_optionsr   r   main_summaryr  r  s                 r   _print_summaryInterpreter._print_summary`  sG   %113 !1!1!7!7!9:JDZZ\NE$$HT%:%:$=YGHH#dnn-.."]]O9566~~DNN3F5'+,,$)D! ; m_*.+.!"
 $$ ,,.F((33(,(A(A(L(L}%((44)-)B)B)N)N~& $D$=$=$N$N$T$T$V\uvNMM@3q619@A!!"8&eaeBfg||''D1"(););)=">I	*0022 #?   As   +K
rp  z0.44.0c                    [        U5      S:  a!  [        R                  " SSU R                  US9  U R	                  US5      n[
        R                  " USU06  g )NrA   z#warning with more than one argumentr  rW  rp  r   )r   r4   r   r   r  r	   rp  r  s        r   r  Interpreter.func_warning  sO     t9q=!!"GSWSbSbmqr11$	Bh..r   c                    [        U5      S:  a!  [        R                  " SSU R                  US9  U R	                  US5      n[        SSR                  U5      -   5      e)NrA   z!error with more than one argumentr   rW  rM  zProblem encountered: r   )r   r4   r   r   r  r.   r  r  s        r   r  Interpreter.func_error  sX     t9q=!!"ExQUQ`Q`kop11$@"#:SXXh=O#OPPr   rI  0.63.0c                V    U R                  US5      n[        R                  " S/UQ76   g )NrI  zDebug:)r  r	   rI  r  s        r   r  Interpreter.func_debug  s'     11$@

8'h'r   c                    [        S5      e)Nzunit test traceback :))RuntimeErrorr  s       r   r  Interpreter.func_exception  s     344r   rt  howliteralre)r  ry  c                T     " S S[         5      nU" US   US   U R                  5      $ )Nc                  2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )8Interpreter.func_expect_error.<locals>.ExpectErrorObjecti  c                  > [         TU ]  U5        [        R                  U l        [
        R                  " 5       =[        l        U l        [        U R                  SS 5      [        R                  l	        Xl
        X l        g )Ncolorize_console)r  r   sysstdout
old_stdoutioStringIO
new_stdoutgetattrr  r  r  )r   r  r  r   r%  s       r   r   AInterpreter.func_expect_error.<locals>.ExpectErrorObject.__init__  sT     ,"%**/1{{}<
T_.5dooGY[_.`

+r   c                @   U R                   [        l        U R                  R	                  5       R                  5        H1  nSU;   a  [        UR                  SS5      5        M&  [        U5        M3     Uc  [        S5      e[        U[        R                  5      (       a  [        U5      nU R                  S:X  a  U R                  U:w  d6  U R                  S:X  aC  [        R                   " U R                  U5      (       d  [        SU R                  < SU< 35      eg	g )
NzERROR:ERRORzERROR (msbuild proof)z+Expecting an error but code block succeededr  r  zExpecting error z	 but got T)r  r  r  r  getvalue
splitlinesprintry  r.   r   r   r   r   r  r  r  match)r   exc_typeexc_valexc_tbri  r  s         r   __exit__AInterpreter.func_expect_error.<locals>.ExpectErrorObject.__exit__  s    !__
113>>@A1}aii1HIJa	 A
 ?./\]]gx'>'>??g,CI-$((c/D($((C1H1H25Edhh\QZ[^Za3bcc @r   )r  r  r  r  )r  r   r  r   r   r   r   r   )r   r   r   r   r   r  r   __classcell__r%  s   @r   ExpectErrorObjectr    s       r   r  r   r  )r9   r   )r   r  r(  r   r  s        r   r  Interpreter.func_expect_error  s,    	  4 	 0 !a&-IIr   c                    U R                  XU5      nU R                  R                  5       (       d  U R                  R                  5         U R	                  5         U$ r0  )add_languages_forr   r[  $copy_build_options_from_regular_onesr#  )r   r(  r   rg  r  s        r   r<  Interpreter.add_languages  sH    ((E}}++--MM>>@!r   c                ,   U R                   R                  R                  R                  SS5      n[	        U[
        5      (       d  [        S5      eU[        R                  :w  a  U(       d  gU R                   R                  5       (       d  U(       d  gU$ )Nskip_sanity_checkFz+Option skip_sanity_check must be a boolean.)
r   r]  r4  r8  r   r   r.   r   rZ  r[  )r   rg  shoulds      r   should_skip_sanity_check$Interpreter.should_skip_sanity_check  sr    !!,,11556I5Q&$''&'TUU-,,,V..00r   c                   U Vs/ s H  oDR                  5       PM     nn[        U R                  U   R                  5       5      nUR	                  U5        SU;   aB  SU;  a<  [
        R                  " SSU R                  U R                  S9  UR                  S5        SU;   a+  [
        R                  " SSU R                  U R                  S9  S	n[        U[        R                  S
9 GH  nXpR                  U   ;   a  M  UR                  5       nU R                  R                  U   R                  U5      n	U	(       d   U R                  U5      n
U
(       a  [         R"                  " SS	S9  [        R$                  " U R&                  XsXR                  5      n	U	c  [)        SU S35      e US:X  aY  [1        U R2                  S5      (       a>  [         R4                  " SR7                  U5      5        SU R2                  R8                  U'   O&U R                  R;                  XyU R                  5        U[<        R>                  :X  d  U R&                  RA                  5       (       a  [         R"                  nO[         R4                  nU" U	RC                  5       SUS[         R.                  " SRE                  U	RG                  5       5      5      U	RI                  5       5        U	RJ                  b  U" U	RC                  5       SUS[         R.                  " SRE                  U	RJ                  RG                  5       5      5      U	RJ                  RL                  U	RJ                  RN                  5        U RP                  RS                  U	5        XR                  U   U'   GM     U$ s  snf ! [*        R,                   a=    U(       d4  [         R"                  " S[         R.                  " U5      SUS5        Sn GM  e f = f)NvalaczAdding Vala language without Cro  rW  nasmzAdding NASM languager   Tr  z8Cross compiler sanity tests disabled via the cross file.r  zTried to use unknown language "rf  r  zfor thezmachine not found.Fcudaallow_thin_archivesznadded cuda as language, disabling thin archives for {}, since nvcc/nvlink cannot handle thin archives nativelyzcompiler for thezmachine:r   zlinker for the)*lowerr  r   r^  r  r4   r   r   rb  r   rW  r  get_lower_case_namer   r8  r  r	   r   detect_compiler_forr   r/   r   r   r   rA  r  rI  r   r  process_compiler_optionsr   rZ  r[  get_display_languager  get_exelistget_version_stringlinkeridr   r   ensure_static_linker)r   r(  r   rg  r  r  r  r  machine_namecompr  
logger_funs               r   r  Interpreter.add_languages_for  sC   #'(4a	4(DNN;/4467T U?s%/!!"BHdoohlhyhyzKKU?!!"8(DOO^b^o^op4Y%9%9:D~~k22&::<L==**;7;;DAD(,(E(Ek(R%(![bfg$889I9I4^o  rA  rA  BD|.1PQUPVVX/YZZ $ 6>gdll<Q&R&RJJ   P   W   W  Xc   d  eDIDLL44[A 66t4??Sm000D4D4D4S4S4U4U!XX
!ZZ
t0024FV`yy$*:*:*<!=>@W@W@Y[{{&44468H,Xb99SXXdkk.E.E.G%HI4;;>>[_[f[f[n[npJJ++D104NN;'-Q ;T u ):  .. #!8!%4)\!57 #( s   N!A+N&&AO75O7c                   U H~  n[        U[        R                  5      (       a  M$  [        U[        5      (       d  [	        S5      e[
        R                  " U R                  X5      n[        U[        5      (       a  M|  Us  $    g )Nz Executable name must be a string)	r   r   r   r   r.   r   from_bin_listr   r    )r   rg  	prognamespr  s        r   program_from_file_for!Interpreter.program_from_file_for  sk    A!X]]++a%%*+MNN"001A1A;RD d$>??  r   c                >   [         R                  R                  U R                  R	                  5       U R
                  5      nU GHT  n[        U[        R                  5      (       a  UR                  (       aC  [         R                  R                  U R                  R                  5       UR
                  5      nOB[         R                  R                  U R                  R	                  5       UR
                  5      nUR                  nU/nO6[        U[        5      (       a  U(       a  U/U-   nOU/nO[        SU< 35      e[        XRSS9nUR                  5       (       d  GM!  UR!                  SSR                  UR#                  5       5       S35        Us  $    g )Nz1find_program only accepts strings and files, not T)r  r  (r   r  )r  r8  r  r   r  r  r   r   r   r7  r=  fnamer   r/   r   r  r   get_command)r   r(  r  
extra_infor  exenamer  extprogs           r   program_from_systemInterpreter.program_from_system(  s8   
 WW\\$"2"2"A"A"CT[[Q
G'8==11##!#d.>.>.L.L.N.5nn">J "$d.>.>.M.M.O.5nn">J!--)lGS))#-,"<K#-,K&)Z[bZe'fgg%gtTG}}!!Achhw/B/B/D&E%Fa"HI) * r   c                    U Hu  n[        U[        5      (       d  M  X0R                  R                  ;   d  M5  U R                  R                  U   nUR	                  [
        R                  " S5      5        Us  $    g )Nz(overridden))r   r   r   r  r   r	   blue)r   command_namesr  r  r  s        r   program_from_overrides"Interpreter.program_from_overridesE  sc     "DdC((zz000jj//5!!$))N";<
 " r   c                    U H?  n[        U[        5      (       d  M  U R                  R                  R	                  U5        MA     g r0  )r   r   r   searched_programsrH  )r   r  r  s      r   store_name_lookupsInterpreter.store_name_lookupsQ  s1    !D$$$

,,006 "r   c                Z   XR                   R                  ;   a  [        SU S35      eXR                   R                  ;   a  [        SU S35      eX R                   R                  U'   US:X  a=  [	        U[
        5      (       a'  SSKJn  UR                  U[        R                  5        g g g )Nz)Tried to override finding of executable "z" which has already been found.zTried to override executable "z$" which has already been overridden.z
pkg-configr   )PkgConfigInterface)r   r#  r.   r  r   r   dependencies.pkgconfigr'  set_program_overrider   rZ  )r   r  r  r'  s       r   add_find_program_override%Interpreter.add_find_program_overrideV  s    ::///&)RSWRXXw'xyy::,,,&)GvMq'rss*-

!!$'<JsO$D$DC33C9K9KL %Er   c                    [        SR                  U Vs/ s HT  n[        U[        5      (       a  UO9UR	                  U R
                  R                  U R
                  R                  5      PMV     sn5      5      $ s  snf )Nr   )r    r  r   r   r  r   r  r  )r   r(  r  s      r   notfound_programInterpreter.notfound_program`  so    )#(( Q$$Q!//$:J:J:U:UW[WgWgWqWq*rr+  	s   AA;c
                2   [         R                  " U5      n/ n
U R                  XX4XvXU
5	      nUb  U R                  XX5      (       d  U R	                  U5      n[        U[        5      (       a  UR                  5       (       d  U(       dP  [        R                  " S[        R                  " UR                  5       5      S[        R                  " S5      /U
Q76   U(       a*  Sn[        UR                  UR                  5       5      5      eU$ U R                  U5        U(       dL  [        R                  " S[        R                  " UR                   5      S[        R"                  " S5      /U
Q76   [        U[$        R&                  5      (       a  SUl        U$ )NProgramfound:r   z(Program {!r} not found or not executabler   T)r   r   program_lookupcheck_program_versionr-  r   r   r  r	   r   r   r  r   r.   r   r$  r  r   r   r  was_returned_by_find_program)r   r(  rg  r   r   r  r  r  version_argversion_funcr  progobjr   s                r   find_program_implInterpreter.find_program_implg  s:    %/1
%%dT_it  EO  P?$"<"<Wl"g"g++D1Gg//DIIg.>.>.@$A8TXXVZ^i^hi>*188G4D4D4F+GHHN 	%HHY		',, 74::eCTbWabgu//0037G0r   c
                   U R                  X5      n
U
(       a  U
$ US   S:X  a#  [        SU R                  R                  5       SS9$ S n[        R
                  " U R                  R                  R                  [        S5      5      5      nU[        R                  :w  a@  U R                  R                  (       a%  U R                  R                  R                  U5      nU(       a'  U[        R                  :X  a  U R                  XX4U	5      $ U R                  X!5      n
U
c  U R!                  XU	5      n
U
cK  US   R#                  S5      (       a2  [        S[$        R&                  SS9nUR)                  5       (       a  UOS n
[+        U
[        5      (       a  U(       a  Xzl        U
(       a  U R/                  XX5      (       d  S n
U
c  U(       a  U(       a  U R1                  U5      n
[2        R4                  " S[2        R6                  " U
R9                  5       5      S[2        R:                  " S	5      /U	Q76   U	R=                  5         U R                  XX4U	5      n
U
$ )
Nr   r  Tr  r  python3r0  r1  r   )r   r   r   r  r   rR  r   r  r6  r   
nofallbackr  find_program_providerforcefallbackfind_program_fallbackr  r  endswithr   python_commandr  r   r5  r3  r-  r	   r   r   r  r   clear)r   r(  rg  r   r   r  r  r5  r6  r  r7  r   r  r  s                 r   r2  Interpreter.program_lookup  s    --d?N7g"7D,<,<,N,N,PY]^^(()?)?)M)MiXcNd)ef	+++0@0@0N0N''55KKDQH	X%;%;;--hoYcdd,,[??..t*MG?tAw//	::"9h.E.EdSD"jjlldGg//K"-455g|``G?xH++D1GHHY		'*:*:*< =xRVeZde00\fgGr   c                   U(       Ga<  U(       a	  U" U5      nO[        U[        R                  5      (       a`  UR                  (       a$  U R                  UR                     R
                  nOU n[        U[        5      (       d   S5       eUR                  nOUR                  U 5      n[        R                  " XR5      u  pxn	U(       dV  S[        R                  " U5      S[        R                  " SR                  U V
s/ s H	  n
SU
 S3PM     sn
5      5      /US S& gUR                  S[        R                  " U5      5        gs  sn
f )	Nr$  r  z	but need:, 'r   FT)r   r   r  r   r  held_objectr  r   get_versionr   r  r	   r   r   r  insert)r   r7  r  r6  r  r   interpis_found	not_foundrr  r  s              r   r3  !Interpreter.check_program_version  s    &w/GU%5%566%%!--g.@.@AMMF!F!&+66B
B6 00!--d3%-%B%B7%S"H")4+;+;G+Dk"&))DII6SA1#Qx6S,T"U"W
2Aa!1!1'!:; 7Ts   ?Er   c           
        [         R                  " S[         R                  " U5      S[         R                  " SR                  U5      5      5        UU=(       d    0 / / S S.nU R	                  X5        U R                  X%5      $ )NzFallback to subprojectzwhich provides programr   )r   r   r   r  r
   )r	   r   r   r  r  r   )r   r   r(  r   r   r  	sp_kwargss          r   r?  !Interpreter.find_program_fallback  ss     	)499X+>@X388D>*	, !.4"+
	 	8/**4<<r   rP  rA   )r  min_varargsr^  dirs0.52.0version_argument1.5.0rC  c                   [        X0R                  5      u  pEnU(       av  U(       d   S5       e[        R                  " S[        R                  " SR                  US   5      5      S[        R                  " U5      S5        U R                  US   5      $ [        U5      nUS   nU R                  US   US   XS	US
   US   US9$ )Nr$  r0  r   r   r  r  r   r   Fr   rT  )r   r   r  r  r5  r  )	rI   r   r	   r   r   r  r-  rJ   r8  )	r   r  r(  r   r  r   r  r  r   s	            r   r  Interpreter.func_find_program  s     '=V__&U#G&J&7HHY		#((47*; <>PRVR[R[\cRdfpq((a11)&1 !23%%d1gvh/?Q`-26);LZ`asZt2= & ? 	?r   rK  r   r  r   r   r   )r  r  r   rL  0.40.0r   allow_unknownc                   US    Vs/ s H  oD(       d  M  UPM     nn[        U5      S:  a%  [        SS5      R                  U R                  5        UR	                  S5      nUb   [        U[        5      (       d  [        S5      eUR	                  S5      nUR	                  S5      n[        XXh5      n	U	R                  U5        UR	                  S	S
5      n
[        U
[        5      (       d  [        S5      e U	R                  U5      n[        U[        5      (       d   S5       eUR                  5       (       d  U
(       a  U R                  U
/5        SU;   am  US   n[        U[        5      (       d  [        S5      eUR!                  5       nX:w  a3  ["        R$                  " SUS    SU SU 35        UR'                  U5      nUR(                  b?  UR(                  u  p[        R*                  " SUR,                  < S3XR                  X5        UR.                   H  nUR                  U R                  U5        M!     U$ s  snf ! [         a    U
(       a  U R                  U
/5        e f = f)Nr   rA   z"dependency with more than one name0.60.0r   z)"allow_fallback" argument must be booleanr   r   r  r   z'The not_found_message must be a string.r$  r   z)The `include_type` kwarg must be a stringzCurrent include type of z is z. Converting to requested zdep z custom lookup)r   r4   user   r8  r   r   r/   rE   rc  r   rd  r  r  r!   r  get_include_typer	   rI  generate_system_dependencyfeature_sincer   r  featurechecks)r   r  r(  r   nnamesr   r   r   rk  r  dr  r  r   	extra_msgrI  s                    r   r  Interpreter.func_dependency  s"    !G)GqqG)u:>;XFJJ4??[$45%j.N.N"#NOO::j) **%67&tNT
!"JJ':B?+S11"#LMM			&!A
 !Z((4*4(wwyy.012V#N+Ffc**&'RSS'')F

5d1gYd6(Jdekdlmn008??&!"G!!D
."A7OO]fmAEE$//4( !I *  	 !!#4"56	s   
II8I %I-c                    [        5       $ r0  )r2   r  s       r   r  Interpreter.func_disabler*  s     zr   c                X    UR                  5       n[         H  nXR                  	 M     U$ r0  )r(  rS   r  )r   r   	exe_kwargs      r   _strip_exe_specific_kwargs&Interpreter._strip_exe_specific_kwargs0  s&    2I~~& 3r   rN  c                F   US   nU R                   R                  U   nUR                  5       (       aN  UR                  S5      S:X  a9  U R	                  XU R                  U5      [        R                  5      nSUl        U$ U R	                  XU[        R                  5      $ )Nr   android_exe_typeapplicationT)
r   r/  
is_androidr8  rE  rj  r   r  shared_library_onlyr  )r   r  r(  r   rg  r   holders          r   r  Interpreter.func_executable6  s     X&%%k2<<>>fjj);<M&&t43R3RSY3Z\a\o\opF)-F&M  VU5E5EFFr   rk  c                D    U R                  XU[        R                  5      $ r0  )rE  r   r  r  s       r   r  Interpreter.func_static_libD  s       VU5H5HIIr   ri  c                V    U R                  XU[        R                  5      nSUl        U$ NT)rE  r   r  rp  )r   r  r(  r   rq  s        r   r  Interpreter.func_shared_libL  s+     ""4vu7J7JK%)"r   rD  c                &    U R                  XU5      $ r0  )build_both_librariesr  s       r   r  Interpreter.func_both_libV  s     ((V<<r   rj  z0.37.0c                D    U R                  XU[        R                  5      $ r0  )rE  r   r  r  s       r   r  Interpreter.func_shared_module_  s       VU5G5GHHr   r`  c                &    U R                  XU5      $ r0  )build_libraryr  s       r   r  Interpreter.func_libraryh  s     !!$f55r   r^  c                D    U R                  XU[        R                  5      $ r0  )rE  r   r  r  s       r   r  Interpreter.func_jarq  s       VUYY??r   rE  r  override_optionsc                   US   nUS:X  a!  U R                  XU[        R                  5      $ US:X  a!  U R                  XU[        R                  5      $ US:X  a!  U R                  XU[        R                  5      $ US:X  a!  U R                  XU[        R
                  5      $ US:X  a  U R                  XU5      $ US:X  a  U R                  XU5      $ U R                  XU[        R                  5      $ )Nr   rN  ri  rj  rk  rD  r`  )	rE  r   r  r  r  r  ry  r~  r  )r   r  r(  r   r   s        r   r  Interpreter.func_build_targety  s     ]+,&$$T9I9IJJ,,$$T9L9LMMO+$$T9K9KLL,,$$T9L9LMM,,,,T@@I%%%d&99  VUYY??r   ro  r   commandreplace_stringz	@VCS_TAG@z1.7.0c                   US   c!  [         R                  " SSU R                  US9  US   =(       d    U R                  nUS   nSnUS   n[        R
                  R                  [        R
                  R                  U R                  R                  5       U R                  5      5      nU(       a  [        US   [        [        R                  45      (       ap  [        US   [        R                  5      (       a!  [         R                  " S	S
U R                  US9  U R                  US   SS9n	U	R!                  5       (       a  XS'   O[         R                  " SSU R                  US9  Os[        R"                  " U5      n
U
(       aS  [$        R&                  " SR)                  U
R*                  U
R,                  5      5        U
R.                  nU
R0                  nOS/nU R3                  [5        US   5      S:  US   S5        U R                  R7                  5       SSSSUUUU/-   U-   nUS   nU R9                  US   5      nUS   c  / OUS   /nUS   c  / OUS   /nU(       a  U(       d  [;        S5      e[<        R>                  " US   S   U R                  U R                  U R                  UU RA                  US   5      US   SSUUUUS9nU RC                  UR*                  U5        U$ ) Nr   zOptional fallback in vcs_tag0.41.0rW  r  z(.*)r  r   z'vcs_tag with file as the first argumentr  Fr  zGvcs_tag with custom_tgt, external_program, or exe as the first argumentr  zFound {} repository at {}r   inputrA   outputro  z
--internal	vcstaggerz@INPUT0@z	@OUTPUT0@installinstall_modeinstall_dirinstall_tagzKvcs_tag: "install_dir" keyword argument must be set when "install" is true.T)build_by_defaultbuild_always_staler  r  r  r  )"r4   r   r   r   r  r8  r9  r  r   r  r  r   r   r   r   r8  r  
detect_vcsr	   r   r   r  wc_dirget_rev	rev_regex_validate_custom_target_outputsr   r  _warn_kwarg_install_mode_stickyr/   r   r  r  r  )r   r  r(  r   r   r  regex_selectorvcs_cmdr  maincmdvcsr  r  r  r  r  tgs                    r   r  Interpreter.func_vcs_tag  s   ( *%!!"@(DOOfjk*%=)=)= 01#WW%%bggll43C3C3R3R3TVZVaVa&bc
'!*sHMM&:;;gaj(--88))*SU]_c_n_ny}~00e0L==??!(AJ%%&oqy{  |K  |K  VZ  [%%j1C4;;CHHcjjQR++!$% 	,,S-AA-EvhGWYbc002  '' #;;F><RSBHBWB_Bflmzf{e|5;M5J5RrY_`mYnXo;"#pqq8QKKOO((98!##%#
 	$	r   rl  c                    [        5       er0  )r1   r  s       r   r  Interpreter.func_subdir_done  s      !!r   c                    SS/nSSK Jn  U H[  nU" XF/5      nU(       a  SU;   d  SU;   a  [        U S35      eU(       d  M6  [        R                  " U S3S	U R
                  5        M]     g
)zChecks for additional invalid values in a custom_target output.

This cannot be done with typed_kwargs because it requires the number of
inputs.
z@PLAINNAME[0-9]+@z@BASENAME[0-9]+@r   )iter_regexin_iter@PLAINNAME@
@BASENAME@zt: output cannot contain "@PLAINNAME@" or "@BASENAME@" when there is more than one input (we can't know which to use)z
 in outputrU  N)utils.universalr  r/   r4   r   r   )r   has_multi_inoutputsr  inregexr  outr  s           r   r  +Interpreter._validate_custom_target_outputs  s~     !45GH7C%gu5E#!59L&$ 0i (i j j%%gZ('OO% r   rH  feedconsolez0.48.0c                   US   (       a3  SUS   ;   d	  SUS   ;   a!  [         R                  " SSU R                  US9  U R                  US   5      nUS   nUS	   nUS
   b  US	   b  [	        S5      eUc  US   (       a  SnOUS
   b  Uc  US
   nUS   nUc  SnUc  SnUS   nUc#  [         R                  " SSU R                  US9  SnU R                  US   SS9nUS   n	U	(       a0  [        U	S   [        5      (       a  U R                  U	S   /5      U	S'   [        U5      S:  a  US   (       a  [        S5      e[        US   5      S:  a  US   (       a  [        S5      eUS   (       a  US   (       a  [        S5      eU	 Hg  n
US   (       a&  [        U
[        5      (       a  SU
;   a  [        S5      eUS   (       d  M?  [        U
[        5      (       d  MV  S U
;   d  M^  [        S!5      e   US   (       a  US"   (       d  [        S#5      e[        US"   5      S:  a!  [         R                  " S$S%U R                  US9  [        US&   5      SS[        US   5      1;  a*  [        S'[        US&   5       S([        US   5       S)35      eUS    H  nU R                  U5        M     U R                  [        U5      S:  US   S*5        [        R                  " UU R                  U R                  U R                   U	UUS   4UUUS   US   US+   US   US,   US-   US   US   US"   UUS&   U R"                  S..6nU R%                  UR&                  U5        U$ )/Ndepfiler  r  z&substitutions in custom_target depfiler  rW  r  r  r  build_alwayszLCustomTarget: "build_always" and "build_always_stale" are mutually exclusiver  TFr   z%custom_target() with no name argumentr[  r   r  )strictr  rA   r  zKcustom_target: "feed" keyword argument can only be used with a single inputr  r  zOcustom_target: "capture" keyword argument can only be used with a single outputr  zOcustom_target: "capture" and "console" keyword arguments are mutually exclusive@OUTPUT@zHcustom_target: "capture" keyword argument cannot be used with "@OUTPUT@"z@INPUT@zDcustom_target: "feed" keyword argument cannot be used with "@INPUT@"r  zQcustom_target: "install_dir" keyword argument must be set when "install" is true.z&multiple install_dir for custom_targetrX  r  zcustom_target: install_tag argument must have 0 or 1 outputs, or the same number of elements as the output keyword argument. (there are z install_tags, and z	 outputs)rH  depend_filesdependsr  )r  r  r  r  r  r  extra_dependsr  r  r  r  r  r  r  )r4   r   r   r  r.   r  r   r   r8  r   r/   validate_forbidden_targetsr  r   r  r  r   r  r  r  )r   r  r(  r   r  r  r  r  inputsr  r  tr  s                r   r  Interpreter.func_custom_target  s   . ),&2C"C}X^_hXiGi!!"JHVZVeVeptu;;F><RS ""45#$89.!-&9M2N2Z&'uvv#y(9#N#/'#).#9 !'(:!;
 #$%!&Aw<
 !!"I8UYUdUdostD--fWoe-L#z'!*c22//=GAJv;?vf~"#pqqvh 1$	):"#tuu)	!2"#tuuAi Z3%7%7J!O&'qrrf~~*Q"4"4a&'mnn	 
 )VM%:"#vwwvm$%)!!"JHVZVeVeptuvm$%aCx8H4I-JJ" $114VM5J1K0L M**-fX.>*?)@	$K L L
 !A++A. ",,S[1_fX>NP_`KKOO8"  2-9%9%/9% +u9%}-%}-LL+", 	$	r   rf  c           
        US   R                  5       n[        U5       HH  n[        U[        5      (       d  M  UR	                  5       (       a  M1  [        SUR                  < 35      e   [        US   [        5      (       a  U R                  US   /5      US'   US   n[        R                  " XdUS   U R                  U R                  U R                  US   5      nU R                  Xg5        U$ )Nr  z%Tried to use non-existing executable r   r  r  )r(  r   r   r   r  r.   r  r   r8  r   r  r  r   r   r  )r   r  r(  r   all_argsr   r  r  s           r   r  Interpreter.func_run_targeto  s     )$))+"A!_--aggii*-RSTSYSYR\+]^^ # hqk3''00(1+?HQKAw__TVI->T__^b^n^n#E],!	r   rA  c                   Uu  pE[        S U 5       5      (       a"  [        R                  " SSU R                  5        / nU Hk  n[	        U[
        R                  5      (       a8  UR                  UR                  5        UR                  UR                  5        MZ  UR                  U5        Mm     [
        R                  " XFU R                  U R                  U R                  5      nU R                  XH5        U$ )Nc              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr0  )r   r   r  .0rc  s     r   	<genexpr>0Interpreter.func_alias_target.<locals>.<genexpr>  s     <t!z!U__--t   ')z(alias_target that depends on run_targetsr[  )anyr4   r   r   r   r   r  r   sharedr   r  r  r   r  )	r   r  r(  r   r  r  	real_depsrc  r  s	            r   r}  Interpreter.func_alias_target  s    
 
<t<<<!!"LhX\XgXgh*,	A!U0011  *  *  #  tT__dN^N^_!	r   rQ  r  )allow_empty)r   r   r  z0.43.0c                   US    H5  nSU;  a  SU;  a  [        S5      e[        U5      (       d  M,  [        S5      e   [        US   5      S:  a  US    H  nSU;   d  M  [        S5      e   [        R                  " US	   40 UD6$ )
Nr  r  r  zAEvery element of "output" must contain @BASENAME@ or @PLAINNAME@.z0"output" must not contain a directory separator.rA   r  z:Tried to use @OUTPUT@ in a rule with more than one output.r   )r/   r   r   r   r  )r   r  r(  r   ruleos         r   r  Interpreter.func_generator  s     8$D4'M,E&'jkkD!!&'YZZ	 %
 vh 1$H%?*+ghh & tAw1&11r   rC  c                *    U R                  XUS5        g NFadd_testr  s       r   r  Interpreter.func_benchmark  s    
 	d&%0r   rm  is_parallelc                *    U R                  XUS5        g rv  r  r  s       r   r  Interpreter.func_test  s    
 	d&$/r   c                    UR                  S5      nUc
  [        5       $ [        R                  " U5      nU(       a  [	        SU 35      e[        R
                  " U5      $ )Nr  z"env": )r8  r   ra   ry  r/   rz  )r   r   envlistr  s       r   unpack_env_kwargInterpreter.unpack_env_kwarg  sS    **U#?'))w'"WSE?33((r   c                X   US   nSU;   a+  [         R                  " SU S3US9  UR                  SS5      nUS   n[        U[        5      (       a!  UR                  5       (       d  [        S5      eO[        U[        R                  5      (       a  U R                  U/5      nO[        U[        R                  5      (       a"  UR                  S	/ 5      R                  U5        OJ[        U[        R                  5      (       a+  UR                  S	/ 5      R                  UR                  5        U R!                  U5      nUS
   S::  a!  ["        R$                  " SSU R&                  US9  U R)                  5       (       a  U R&                  OU R                  R*                  n/ n	US    HC  n
U
(       a  SU
-   n
U	R                  UR                  SS5      R                  SS5      U
-   5        ME     U" UUU	UUS	   UR-                  SS5      US   UUS   US
   US   US   US   US   5      $ )Nr   r   z!":" is not allowed in test name "z ", it has been replaced with "_"rW  rr  rA   z3Tried to use not-found external program as test exer  timeoutztest() timeout <= 0r   suiter   r  Fr(  should_failworkdirprotocolpriorityverbose)r	   rx  ry  r   r   r  r/   r   r   r8  r   r  
setdefaultr   r  r5  r  r4   r   r   r  r   r8  )r   r  r(  r   klassr  r  r  prjr  rM  s              r   	make_testInterpreter.make_test  s    Aw$;@Ffg&*,<<S)D1gc?++99;;&'\]] X]]++((#/CU//00i,33C8U4455i,33CJJ?##F+)!!!"74??]ab!%!3!3!5!5doo4::;R;RA!GLLS#.66sC@1DE !
 TI&ZZu5F^M*I&I&J'J'I&( 	(r   c                   [        US   [        R                  [        R                  45      (       a"  [        R
                  " SSU R                  5        [        S US    5       5      (       a"  [        R
                  " SSU R                  5        U R                  XU5      nU(       a\  U R                  R                  R                  U5        [        R                  " S[        R                  " UR                  S	5      5        g U R                  R                  R                  U5        [        R                  " S
[        R                  " UR                  S	5      5        g )NrA   z!test with CustomTarget as commandr  c              3  B   #    U  H  n[        U[        5      v   M     g 7fr0  )r   r   r  r   s     r   r  'Interpreter.add_test.<locals>.<genexpr>  s     F~!z!_--~s   r(  z"test with external_program in argsz1.6.0zAdding testTzAdding benchmark)r   r   r  r  r4   r   r   r  r  r  r   r	   rI  r   r  
benchmarks)r   r  r(  r   is_base_testr  s         r   r  Interpreter.add_test  s     d1g 2 2E4K4KLMM!!"EwPTP_P_`Fvf~FFF!!"FQUQ`Q`aNN4v.JJ##A&JJ}dii&=>JJ!!((+JJ)499QVVT+BCr   rX  c           
        U R                  US   5      nU R                  US   5      nUS   nUbL  US   b  [        S5      e[        R                  R                  U5      (       a  [        R                  " S5        OSn[        R                  " [        5      n/ nUS   (       aF  U H?  n	[        R                  R                  U	R                  5      n
Xz   R                  U	5        MA     OUS   R                  U5        U H  n[        R                   " X{   [        R                  R#                  Xk5      US   X@R$                  US	   S
9nUR                  U5        U R                  R&                  R                  U5        M     U$ )Nr  r   r  r  zXinstall_headers: cannot specify both "install_dir" and "subdir". Use only "install_dir".zTSubdir keyword must not be an absolute path. This will be a hard error in meson 2.0.r   preserve_pathfollow_symlinks)r  )r  r  r.   r  r8  r  r	   rx  r   r   r   dirnamer  r   extendr   r  r  r   headers)r   r  r(  r   r  source_filesrZ  rR  ret_headersfiler  childdirhs                r   r   Interpreter.func_install_headers	  sY    ;;F><RS33DG<)%m$0*  ,F  G  Gww}}^,,  !wxN&&t,/"$''//$**5$$T* % HOOL)Hdnbggll>.TV\]jVk*OO.45F.GIA q!JJ%%a(  r   rY  localer   c                   U R                  US   5      nU R                  US   5      nU H<  n [        UR                  SS5      S   5      nSUs=::  a  S::  a  M1  O  [        S5      e   [        R                  " XSS   UU R                  US	   5      nU R                  R                  R                  U5        U$ ! [        [
        4 a    Sn Nf = f)
Nr  r   r
  rA   rI  	   z?Man file must have a file extension of a number between 1 and 9r  r  )r  r  r   rsplit
IndexError
ValueErrorr/   r   r  r   manr   )	r   r  r(  r   r  r  rM  numr   s	            r   r  Interpreter.func_install_man0	  s     ;;F><RS ..tAw7A!((3*2./ =q=&'hii  IIgm4loovh'79

a  
+ s   B;;CCrW  r[  r  c                    [         R                  " US   US   U R                  US   5      nU R                   R                  R	                  U5        U$ )Nr   r  r  )r   r  r   emptydirr   )r   r  r(  r   rc  s        r   r  !Interpreter.func_install_emptydirL	  sH     NN47F>$:DOOVTaMbc

""1%r   r[  r  symlink_namepointing_tor  c                    US   nUS   n[         R                  " XTUS   U R                  US   5      nU R                   R                  R	                  U5        U$ )Nr   r  r  r  )r   r  r   r  r   )r   r  r(  r   r  r5  ri  s          r   r   Interpreter.func_install_symlinkX	  s\     Aw&fF=,A"oovm/DF

""1%r   rh  c                2   [         [        R                  [        R                  [        R
                  [        R                  [        R                  4n[        R                  " [        5      n[        R                  " US   5       H  n[        Xd5      (       d  [        S[        U5       S35      e[        U[         5      (       a?  [        R                  R                  U R                  R                   U R"                  U5      nUS   R%                  U5        M     US   (       a  SUS   ;   a  [        S5      eUS   R'                  5        H  u  px[        R                  " U5       H  n[        Xd5      (       d  [        S[        U5       S35      e[        U[         5      (       a?  [        R                  R                  U R                  R                   U R"                  U5      nXW   R%                  U5        M     M     [        R(                  " U5      $ )Nr   zstructured_sources: type "z" is not validr   rA   zKstructured_sources: keys to dictionary argument may not be an empty string.)r   r   r   r   r  r  r  r   r   r   r   r   r/   typefrom_source_filer   r  r  r   r   r  )	r   r  r(  r   valid_typesr  argr   r   s	            r   r  #Interpreter.func_structured_sourcesj	  s    HMM5+>+>@R@RTYTkTkmr  nA  nA  BWbWnWnosWt##DG,Cc//&)CDI;n']^^#s##mm44T5E5E5P5PRVR]R]_bcBKs# - 7T!W}&'tuuQ#++A.C%c77.1KDQTI;Vd/eff!#s++&mm<<T=M=M=X=XZ^ZeZegjkJ%%c* / ( &&w//r   if_foundc                8    [        S U  5       5      (       d  S$ S $ )Nc              3  :   #    U  H  n[        US 5      v   M     g7f)r  N)rA  )r  rv  s     r   r  'Interpreter.<lambda>.<locals>.<genexpr>	  s      OomnhiPWXY[bPcPcmns   z"Objects must have a found() method)all)r  s    r   rw  rx  	  s    COomnOoLoLo D yuy yr   )ry  rp  r  r   c                   [         R                  " U5        SUS   ;   a  [        S5      eU R                  S:X  a  US   U R                  :X  a  [        S5      eU R                  S:X  a$  US   R                  S5      (       a  [        S5      eUS   S:X  a  [        S5      e[        R                  R                  US   5      (       a  [        S	5      eUS
    H  nUR                  5       (       a  M    g    U R                  U R                  R                  5       US   5      u  pVU(       d  [        SU S35      e[        R                  " [        R                  R                  U R                  R                  U5      SS9  U R!                  U R                  R                  5       U5      (       d>  [        R                  R                  U[        R"                  5      n[%        SU< S35      eg )Nr  r   zSubdir contains ..r   zIMust not go into subprojects dir with subdir(), use subproject() instead.meson-zJThe "meson-" prefix is reserved and cannot be used for top-level subdir().zJThe argument given to subdir() is the empty string ''. This is prohibited.z(Subdir argument must be a relative path.r  zTried to enter directory "z"", which has already been visited.Tr  zNonexistent build file 'rF  )r   check_direntry_issuesr/   r  r	  r<  r  r8  r  r  _resolve_subdirr   r  r
  r  r  _evaluate_subdirbuild_filenamer.   )r   r  r(  r   r   r  is_newbuildfilenames           r   r  Interpreter.func_subdir	  s    	&&t,47?"#788;;"aD,?,?!?"#noo;;"a!3!3H!=!="#opp7b="#opp77==a!!"#MNN
#A7799 $ --d.>.>.M.M.OQUVWQXY"%?xGi#jkk
BGGLL!1!1!;!;VDtT$$T%5%5%D%D%FOOGGLL1K1KLM&)A-ARRS'TUU Pr   c                P   UR                   S:  a  UR                   [        R                  -  (       as  [        R                  " SU R
                  S9  [        R                  " UR                   [        R                  -
  5      SS  n[        X!R                  UR                  5      $ U$ )Nr   zfinstall_mode with the sticky bit on a file does not do anything and will be ignored since Meson 0.64.0rW  rA   )
permsr@  S_ISVTXr	   rx  rb  filemoder   ownergroup)r   moder  s      r   r  +Interpreter._warn_kwarg_install_mode_sticky	  su    ::>djj4<<7 =GKGXGXZMM$**t||";<QR@EE::tzz::Kr   rV  r  renamer   c           
        U R                  US   US   -   5      nUS   =(       d    S nU(       a<  [        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      eUS   nU(       d  U R                  n[        R
                  " [        R                  R                  U R                  R                  5       U5      [        R                  R                  SU5      5      nU R                  5       (       a$  [        R                  " S	S
U R                  SU5        US   (       a$  [        R                  " SS
U R                  SU5        U R                  US   5      nU R!                  XFXUS   US   US   S9$ )Nr   r  r$  z_"rename" and "sources" argument lists must be the same length if "rename" is given. Rename has z elements and sources has r
  r  z	{datadir}z9install_data() without install_dir inside of a subprojectrC  zSThis was broken and would install to the project name of the parent project insteadr  z9install_data() with preserve_path and without install_dirzFThis was broken and would not add the project name to the install pathr  r  r  )r  r  )r  r   r/   r  r  r  r  r8  r  r   get_datadirr  r4   r   r   r  install_data_impl)	r   r  r(  r   r  r$  r  r  r  s	            r   r  Interpreter.func_install_data	  s    ..tAw	9J/JK!)T6{c'l*&""%f+.HWVWYZ Z ]+,,F,,RWW\\$:J:J:V:V:XZ`-acecjcjcocop{  ~D  dE  FK!!##%%&acjlpl{l{&{&*, o&%%&acjlpl{l{&n&*, ;;F><RS%%gLRXYfRg4:?4K6<=N6O & Q 	Qr   c	                   [        U[        R                  5      (       a  UR                  OUn	[        R
                  " [        5      n
U(       aF  U H?  n[        R                  R                  UR                  5      nX   R                  U5        MA     OU
S   R                  U5        / nU
R                  5        Hv  u  p[        R                  " U[        R                  R!                  X.5      [        R                  R!                  X5      X0R"                  XEUU5	      nUR                  U5        Mx     U R                  R$                  R                  U5        U$ Nr   )r   r  r  rX  r   r   r   r  r8  r  r  r   r  r   r   r  r  r   r  )r   r  r  r  r$  taginstall_data_typer  r  install_dir_namerR  r  r  ret_datar  rO  rc  s                    r   r'  Interpreter.install_data_impl	  s     3=[%J\J\2]2];..cn&&t,''//$**5$$T*   HOOG$#zz|OH

5"'',,{"Erww||TdGo'&GX*,A OOA	  , 	

x(r   rZ  strip_directoryexclude_filesz0.42.0c                8    [        S U  5       5      (       a  S$ S $ )Nc              3  `   #    U  H$  n[         R                  R                  U5      v   M&     g 7fr0  r  r8  r  r  s     r   r  r  
  $     A^\]WX"''--PQBRBR\]   ,.cannot be absoluter  ru  s    r   rw  rx  
      cA^\]A^>^>^&:&hdh&hr   )r  r   rp  ry  exclude_directoriesc                8    [        S U  5       5      (       a  S$ S $ )Nc              3  `   #    U  H$  n[         R                  R                  U5      v   M&     g 7fr0  r4  r  s     r   r  r  
  r5  r6  r7  r8  ru  s    r   rw  rx  
  r9  r   c                .   [        US   5      [        US   5      4n[        R                  R                  U R                  R
                  U R                  US   5      n[        R                  R                  U5      (       a$  [        [        R                  " U5      5      (       dE  [        R                  " SSU R                  US9  [        R                  " SSU R                  SU5        U R                  US	   5      nUS
   n[        U[         R"                  5      (       a  UR$                  n[&        R(                  " U R                  US   US
   UUUUS   U R                  US   US   S9
nU R&                  R*                  R-                  U5        U$ )Nr1  r:  r   z#install_subdir with empty directoryr  rW  r[  zAIt worked by accident and is buggy. Use install_emptydir instead.r  r  r0  r  r  )r  r  )r  r  r8  r  r   r  r  r  r  listdirr4   r   r   r5   r  r   r  r  rX  r   r  r  r   )	r   r  r(  r   excluderJ  r  	idir_nameidirs	            r   r  Interpreter.func_install_subdir	  s`   " vo./V<Q5R1STd..994;;QPww}}V$$C

60B,C,C!!"GSWSbSbmqr(()NPXZ^ZiZi)lnrt;;F><RS=)	i!3!344!))IKKG=!$%OO}-"#45
7 	

&&t,r   rG  z0.47.0,r  )r   configurationr(  r!  r  r   r  >   r  r  cmake@)r  rp  ry  r  r  c                    U SL a  S$ S $ )NTzmust be `false` if booleanr   ru  s    r   rw  rx  G
  s    a4i&B&YUY&Yr   output_formatr  json>   r  rG  r  )r  rp  r  ry  
macro_namec                  ^ [        U4S jS 5       5      n[        U5      nUS:X  a  [        S5      eUS:X  a  [        SR                  " U6 5      eUS:X  a  [        SR                  " U6 5      eTS	   (       a  TS
   (       d  [	        S5      eU R                  TS   5      nTS   nTS   nTS   n	U R                  TS   5      n
/ nU
 H  n[        U[        R                  5      (       a\  UR                  UR                  U R                  R                  U R                  R                  5      5        U R                  U5        M~  [        S5      e   TS   nU(       aV  [        R                   " US 5      n[        R"                  " U/U5      nUS   nU	(       a  [        R"                  " U	/U5      S   n	[$        R&                  R)                  U R*                  U5      nUU R,                  ;   a  [$        R&                  R)                  U R*                  S5      nU SU R.                  R0                   3nSR                  UU R,                  U   5      n[2        R4                  " S[2        R6                  " US5      SUSU5        O#U R.                  R0                  U R,                  U'   [$        R&                  R9                  [$        R&                  R)                  U R*                  U5      5      u  nn[$        R&                  R)                  U R                  R                  UU5      nTS   Gb\  TS   n[        U[:        5      (       a  [<        R>                  " SSU R@                  US9  URC                  5        H:  u  nn[        U[D        [F        [H        45      (       a  M(  [	        SU< SU< S 35      e   [J        RL                  " U5      n[2        RN                  " S![2        R6                  " U5      S"5        [        U
5      S#:  a  [        S$5      eU
(       GaH  [$        RP                  " [$        R&                  R)                  U R                  R                  U R*                  5      SS%9  TS&   n[        RR                  " US   UUUUU R@                  5      u  nnU(       a@  S'R)                  S( [        U5       5       5      n[2        R4                  " S)U S*U
S    S+3US9  U(       ax  [$        R&                  RU                  US   5      n[<        RV                  " U R@                  5      n[<        RX                  " US,5      (       a  [2        R4                  " S-U< S.3US9  OTS/   n [        RZ                  " UUUU 5        SUl.        GOTS
   Gb  [        U
5      S#:  a!  [<        R>                  " S0S1U R@                  US9  [        R                   " UU/5      nU	(       a<  [$        R&                  R)                  U R                  R_                  5       U	5      n	XS2'   [        R"                  " TS
   U5      n![2        RN                  " S![2        R6                  " U5      S35        U!tn"nU Ra                  U"U4SS[c        5       S4.S5      n#TS	   (       aq  US5-   n$TS&   n[e        U$S6US79 nURg                  U#Rh                  5        S S S 5        U(       a  [j        Rl                  " US   U$5        [        Rn                  " UU$5        U	(       a  [2        RN                  " S8[2        R6                  " U	5      5        [e        U	S9S79 n[q        URs                  5       5      n%U%Ru                  U5      n&U& H  n'U R                  U'5        M     S S S 5        OOTS:   (       a  [        U5      S#:w  a  [        S;5      e[$        RP                  " [$        R&                  R)                  U R                  R                  U R*                  5      SS%9  [j        Rv                  " US   U5        TS<   n(U(S=L a$  S>n([x        R>                  " S?S@U R@                  SAUS9  TSB   b  TSB   OU(S>:g  n)U)(       a  U((       d  [        SC5      eU(n*[        U*[z        R|                  5      (       a  U*R~                  n*[        R                  R                  UU5      n+TSD   n,U RJ                  R                  R                  [J        R                  " U+/U(U*X`R@                  U,SESF95        [        R                  R                  U R*                  U5      $ ! , (       d  f       GN{= f! , (       d  f       GN;= f)GNc              3  >   >#    U  H  nTU   S ;  d  M  Uv   M     g7f)r  Nr   )r  rv  r   s     r   r  2Interpreter.func_configure_file.<locals>.<genexpr>O
  s&      <$Hq"1I]: $Hs   	)rC  r  r(  r   zbMust specify an action with one of these keyword arguments: 'configuration', 'command', or 'copy'.r   zXMust not specify both {!r} and {!r} keyword arguments since they are mutually exclusive.   z]Must specify one of {!r}, {!r}, and {!r} keyword arguments since they are mutually exclusive.r  r  z=configure_file: "capture" keyword requires "command" keyword.r  r   rF  r  r  z*Inputs can only be strings or file objectsr  r  r   z{}:{}zOutput fileTzfor configure_file() atz%overwrites configure_file() output atrC  z'configure_file.configuration dictionaryr^  rW  r_  r`  ru  Configuringzusing configurationrA   z6At most one input file can given in configuration moder  r!  rE  c              3  8   #    U  H  n[        U5      v   M     g 7fr0  )repr)r  r   s     r   r  rK  
  s     (T:SQa:Ss   zThe variable(s) z in the input file 'z2' are not present in the given configuration data.r  zVGot an empty configuration_data() object and found no substitutions in the input file z_. If you want to copy a file to the build dir, use the 'copy:' keyword argument added in 0.47.0rH  z#multiple inputs in configure_file()rS  z	@DEPFILE@zwith command)r  r  r  ~r  r   zReading depfile:r  r(  z1Exactly one input file must be given in copy moder  Fr   z!configure_file install_dir: falser  z Use the `install:` kwarg insteadr  zJ"install_dir" must be specified when "install" in a configure_file is truer  	configure)r  	data_type)CrW  r   r.   r   r/   r  r  r   r   r   r   r  r   r  r  rN  get_filenames_templates_dictsubstitute_valuesr  r8  r  r  r  rb  linenor	   rp  r   rQ  r   r4   r   r   r   r   r   r   r   r  r   r
  do_conf_filebasenamer  r  dump_conf_headerusedget_scratch_dirr  r   r%  
writelinesr  r   copymodereplace_if_differentr"   	readlinesget_all_dependenciescopy2r5   r  r  rX  from_built_filer  r  )-r   r  r(  r   actionsnum_actionsr  fmtrF  r  r  
inputs_absrI  r  r   r  ofile_rpathmesonbuildfilecurrent_call
first_call
ofile_pathofile_fname	ofile_absconfr   r   file_encodingmissing_variablesconfdata_uselessvar_listifbaser  rH  _cmdr  resdst_tmprk  r  rl  rA  r  r@  cfiler  s-      `                                         r   r  Interpreter.func_configure_file(
  s:   N  <$H < <'l!& (C D D A& (==CV(DEL(N O O A& (==CV(DEL(N O O )VI%6"#bcc;;F><RSX/# --fWo>
A!X]]++!!!//$2B2B2M2M262B2B2L2L#N O''**+WXX  !:::tLF00&6BGQZF"44gYGJggll4;;7$555WW\\$++}EN,-Qt/@/@/G/G.HIL 8S8ST_8`aJLL		+t(DF_am  pW  Yc  d7;7H7H7O7OD''4$&GGMM"'',,t{{F2S$T![GGLL!1!1!;!;ZU	 /"./*D$%%%%&OQY[_[j[juyz JJLDAq%a#sD)9::.RSTRWW{|}  |A  AB  CD D ) ..t4HH]DIIf$57LM6{Q*+cddBGGLL)9)9)C)CT[[Q\`a &z 2))*Q-D*-}dooO 4!#3 %#yy(T&AR:S(TTHLL*8*4HPQ TC CMQS $WW--jm<F#66tGB!//H== &HHNz R@&@ KOP
 $L1
)))T=*UDII*6{Q%%&KXW[WfWfquv :::	{SF'',,t'7'7'G'G'I7S&-{#--fY.?HDHH]DIIf$5~FJC$''d484PdPf(g(,.C i #c/ &z 2'3?1LL, @OOJqM7;--iA+TYYw-?@'G4 /B22;?D#//4  $ 54  F^:!#*+^__KKT%5%5%?%?MX\]LLA	2
 m$5=D(()Lh)-:\gkm'-i'8'D&#$RT**`b bI)U%7%788%--	MM11*kJE /KJJOO""5::ugtYVeVe:EQ\$^ _}},,T[[&AAO @? 54s   &d6>Ae6
e
erU  c           	        [        X5      nUS:X  aQ  U HK  n[        U[        5      (       d  M  [        R                  " SSU R
                  SU< S3U R                  S9    O   / nU GHU  n[        U[        R                  5      (       a  UR                  U5        M6  [        U[        5      (       Ga  US:X  a  [        R                  R                  U5      R                  U R                  R                  5       5      (       a  [         R                  " SS	U R
                  S
U R                  S9  [        R                  R#                  U[        R                  R%                  U R                  R                  5       U R&                  5      5      nUR                  U R)                  U/5      5        GMM  [+        S5      e   U$ )NrU  z(include_directories kwarg of type stringr  zUse include_directories(z	) insteadrW  r  z5Building absolute path to source dir is not supportedz0.45zUse a relative path instead.zRInclude directory objects can only be created from strings or include directories.)r   r   r   r4   r   r   rb  r   r  r   r  r8  r9  r<  r   r  r5   relpathr  r  build_incdir_objectr.   )r   r   r  prospectivesr   r  r  s          r   r  Interpreter.extract_incdirs
  si   &v3''!a%%))*TV^`d`o`o,DQE*S^b^o^oq	 " -/A!U..//a As##/)bgg.>.>q.A.L.LTM]M]MlMlMn.o.o%001h171O:>:K:KM 277<<8H8H8W8W8Y[_[f[f+ghAd66s;<*+  A  A  r   	is_systemc                2    U R                  US   US   5      $ )Nr   r}  )rz  r  s       r   r  $Interpreter.func_include_directories   s      ''Q1DEEr   c           	     :   [        U[        5      (       d  [        S5      eU R                  R	                  5       nU R                  R                  5       n[        R                  R                  X0R                  5      n[        R                  R                  X@R                  5      nU H  n[        [        U5      [        U5      5      (       a  [        [        R                  " S5      5      e U R                  U R                  U5        [        R                  R                  XW5      n[        R                  R                  Xg5      n	[        R                  R)                  U5      (       a  M  [        R                  R)                  U	5      (       a  M  [        SU S35      e   [*        R,                  " U R                  X5      n
U
$ ! [         aG    [         R"                  " SU R$                  S9  ['        [        R                  " SU< S35      5         GNf = f)	NzIs_system must be boolean.a                      Tried to form an absolute path to a dir in the source tree.
                    You should not do that but use relative paths instead, for
                    directories that are part of your project.

                    To get include path to any directory relative to the current dir do

                    incdir = include_directories(dirname)

                    After this incdir will contain both the current source dir as well as the
                    corresponding build dir. It can then be used in any subdirectory and
                    Meson will take care of all the busywork to make paths work.

                    Dirname can even be '.' to mark the current directory. Though you should
                    remember that the current source and build directories are always
                    put in the include directories by default so you only need to do
                    include_directories('.') if you intend to use the result in a
                    different subdirectory.

                    Note that this error message can also be triggered by
                    external dependencies being installed within your source
                    tree - it's not recommended to do this.
                    z&include_directories sandbox violation!rW  zF                        The project is trying to access the directory aG   which belongs to a different
                        subproject. This is a problem as it hardcodes the relative paths of these two projects.
                        This makes it impossible to compile the project in any other directory layout and also
                        prevents the subproject from changing its own directory layout.

                        Instead of poking directly at the internals the subproject should be executed and
                        it should set a variable that the caller can then use. Something like:

                        # In subproject
                        some_dep = declare_dependency(include_directories: include_directories('include'))

                        # In subproject wrap file
                        [provide]
                        some = some_dep

                        # In parent project
                        some_dep = dependency('some')
                        executable(..., dependencies: [some_dep])

                        This warning will become a hard error in a future Meson release.
                        zInclude dir rJ  )r   r   r/   r   r  r=  r  r8  r  r  r   r|   textwrapdedentvalidate_within_subprojectr.   r	   rp  rb  r  r  r   r  )r   incdir_stringsr}  src_root
build_rootabsbase_srcabsbase_buildr  
absdir_srcabsdir_buildr   s              r   rz  Interpreter.build_incdir_object  s   )T**"#?@@##224%%335
ggll8[[9Z=AtAwX77&x 8 (  033DKKC2 k5J77<<9L77==,,RWW]]<5P5P&aS8H'IJJo  p dkk>E; , LL!ITXTeTef(// /GGHe L+  s   /G		AHHr@  exe_wrappergdbtimeout_multiplierexclude_suites
is_defaultc                   US   n[         R                  " SU5      c  [        S5      eSU;  a8  U R                  (       a  U R                  OU R                  R
                   SU 3n/ nUS    H]  n[        U[        5      (       a  UR                  U5        M+  UR                  5       (       d  [        S5      eXVR                  5       -  nM_     US   nUS::  a%  [        SS	5      R                  U R                  5        US
   (       aJ  U R                  R                  b#  [        U R                  R                  < S35      eX@R                  l        [        R                  " XSS   XsS   US   5      U R                  R                  U'   g )Nr   z0([_a-zA-Z][_0-9a-zA-Z]*:)?[_a-zA-Z][_0-9a-zA-Z]*z4Setup name may only contain alphanumeric characters.r   r  z"Tried to use non-found executable.r  z(add_test_setup() timeout_multiplier <= 0r   r  zC is already set as default. is_default can be set to true only oncer  r  r  )r  	fullmatchr.   r   r   r   r   r   r   r  r  r4   r\  test_setup_default_name	TestSetuptest_setups)r   r  r(  r   
setup_namer  r   r  s           r   r|  Interpreter.func_add_test_setupI  sh    !W
<<JJW_&']^^j 04T__TZZE\E\^^_`j_klJ#%&A!S!!""1%wwyy./STT}}. ' $$89"A8LPPQUQ`Q`a,zz11=*djj.P.P-S TU ,U V V1;JJ.-2__[QV-Yktymz=CDT=U.W

z*r   r:  c                d    U R                  XR                  R                  US      US   U5        g Nr   r   )_add_global_argumentsr   global_argsr  s       r   rv  %Interpreter.func_add_global_argumentso  s2     	""4)?)?x@P)QSWXYSZ\bcr   r;  c                d    U R                  XR                  R                  US      US   U5        g r  )r  r   global_link_argsr  s       r   rw  *Interpreter.func_add_global_link_argumentst  s2     	""4)D)DVHEU)VX\]^X_aghr   r=  c                d    U R                  XR                  R                  US      US   U5        g r  )_add_project_argumentsr   projects_argsr  s       r   ry  &Interpreter.func_add_project_argumentsy  s2     	##D***B*B6(CS*TVZ[\V]_efr   r?  c                d    U R                  XR                  R                  US      US   U5        g r  )r  r   projects_link_argsr  s       r   r{  +Interpreter.func_add_project_link_arguments~  s2     	##D***G*GxHX*Y[_`a[bdjkr   r>  c           
        US   nUS    H$  nXPR                   U   ;  d  M  [        SU S35      e   [        R                  " US   5       GH9  n[	        UR                  5       5      nUR                  5       S:H  nUR                  5        H  n	US    H  nU R                  R                   U   U   n
U	R                  U R                  R                  5       U R                  R                  5       5       H#  nUR                  U
R                  X5      5        M%     M     M     U R                  XR                   R"                  U   Xs5        U R                  XR                   R$                  U   UR'                  5       U5        GM<     g )Nr   r   zFadd_project_dependencies() called before add_language() for language "ru  r   system)r   r0   r   get_leaf_external_dependenciesr   get_compile_argsr]  get_include_dirsr   to_string_listr   r  r=  r  get_include_argsr  r   r  r  get_link_args)r   r  r(  r   rg  r  rc  r  system_incdirr   r  rA  s               r   rz  )Interpreter.func_add_project_dependencies  s_    X&:&D>>+66!$jkojppq"rss ' <<T!WEA 2 2 45L..0H<M'')":.D==22;?ED ! 0 01A1A1P1P1RTXTdTdTrTrTt u$++D,A,A$,VW !v / * ''jj.F.F{.SUaj''jj.K.KK.XZ[ZiZiZkmst Fr   c                   SnSnU GHA  nXB;   a%  [         R                  " SU S3U R                  S9  M.  XC;   a%  [         R                  " SU S3U R                  S9  MX  US:X  a%  [         R                  " SU S3U R                  S9  M  US	:X  a%  [         R                  " S
U S3U R                  S9  M  US;   d  UR                  S5      (       a%  [         R                  " SU S3U R                  S9  M  UR                  S5      (       d  UR                  S5      (       d  GM  [         R                  " SU S3U R                  S9  GMD     g )N)z/W1z/W2z/W3z/W4z/Wallz-Wallz-Wextra)z-O0z-O2z-O3z-Osz-Ozz/O1z/O2z/OszCConsider using the built-in warning_level option instead of using "rf  rW  zAConsider using the built-in optimization level instead of using "z-Werrorz<Consider using the built-in werror option instead of using "z-gz;Consider using the built-in debug option instead of using ">   
-fsanitize
/fsanitize)z-fsanitize=z/fsanitize=zDConsider using the built-in option for sanitizers instead of using "z-std=z/std:zSConsider using the built-in option for language standard version instead of using ")r	   rp  rb  r<  )r   r(  warnargsr  r  s        r   _warn_about_builtin_args$Interpreter._warn_about_builtin_args  sA   
 MJCbcfbggij&*&7&79`ad`eegh&*&7&79	![\_[``bc&*&7&79Z[^Z__ab&*&7&79 44Ge8f8fcdgchhjk&*&7&79((CNN7,C,Crsvrwwyz&*&7&79% r   c                    U R                  5       (       a%  SUR                  R                   S3n[        U5      eU R                  =(       d    U R
                  nU R                  XXcU5        g )Nz
Function 'a  ' cannot be used in subprojects because there is no way to make that reliable.
Please only call this if is_subproject() returns false. Alternatively, define a variable that
contains your language-specific arguments and add it to the appropriate *_args kwarg in each target.)r  r  r   r0   r  r  _add_arguments)r   r  argsdictr(  r   r  frozens          r   r  !Interpreter._add_global_arguments  sd     4 45 6$ $C c""))DT-D-DDF&Ar   c                    U R                   U;  a  0 X R                   '   U R                  XU R                      U R                  X45        g r0  )r   r  r  )r   r  r  r(  r   s        r   r  "Interpreter._add_project_arguments  s?    ??(*(*H__%D4??"; 44d	Dr   c                    U(       a%  SUR                   R                   S3n[        U5      eU R                  U5        US    H  nUR	                  U/ 5      U-   X''   M     g )NzTried to use 'zr' after a build target has been declared.
This is not permitted. Please declare all arguments before your targets.r   )r  r   r0   r  r8  )r   r  r  args_frozenr(  r   r  r  s           r   r  Interpreter._add_arguments  sd    #DNN$8$8#9 :] ]Cc""%%d+:&D%\\$3d:HN 'r   r   c                   US   nUb  [         R                  " SSU R                  US9  [        R                  " U5      nU(       a  [        SU 35      e[        U[        5      (       aF  [        S UR                  5        5       5      (       a!  [         R                  " SSU R                  US9  [        XCS	   US
   5      $ [        5       $ )Nr   z environment positional argumentsrS  rW  z"environment": c              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7fr0  rt  r  s     r   r  /Interpreter.func_environment.<locals>.<genexpr>  s     -^A*UVX\J]aas   (	(z"List of string in dictionary valuer  r   	separator)r4   r   r   ra   ry  r/   r   r   r  r   rz   r   )r   r  r(  r   initr  s         r   r  Interpreter.func_environment  s    
 Aw!!"DhPTP_P_jno""4(C&'>??$%%#-^-^*^*^%%&JHVZVeVeptu,T(3CVKEXYY#%%r   r_  c                   US   n[         R                  R                  " S/USS  Q76 R                  SS5      n[         R                  R                  " U6 R                  SS5      n[	        US   [
        R                  5      (       a  SU;  a  [
        R                  " U5      $ [	        US   [
        R                  5      (       aC  [         R                  R                  US   R                  U5      n[
        R                  " Xg5      $ U$ )Nr   r   rA   \/r  )	r  r8  r  ry  r   r  r  r  rX  )r   r  r(  r   partsotherretr  s           r   r  Interpreter.func_join_paths  s     QR,%),44T3?ggllE"**45eAh > >??DPUDU11#66a%"4"45577<<a 0 0%8D%%c00Jr   c           
       > [         TU ]  5         [        R                  " S[        R                  " [        [        U R                  R                  5      5      5      5        [        R                  " U R                  5        [        R                  " U R                  5        [        R                  " U R                  5        U R                  5       (       d!  U R                  5         U R!                  5         g g )NzBuild targets in project:)r  r*  r	   r   r   r   r   r   targetsr4   reportr   r5   r6   r  print_extra_warningsr  )r   r%  s    r   r*  Interpreter.run  s    ,diiC

@R@R<S8T.UV$//*  1T__-!!##%%'! $r   c                    U R                   R                  R                  R                  5        H)  nUR	                  5       S:X  d  M  U R                  5           g    g )Nclang)r   r   r4  r   get_idcheck_clang_asan_lundef)r   r  s     r   r   Interpreter.print_extra_warnings  sB    ((--446AxxzW$,,. 7r   c                   [        S5      U R                  R                  ;  a  g [        S5      U R                  R                  ;  a  g U R                  R                  R                  S5      (       a  U R                  R                  R                  S5      (       a]  U R                  R                  R                  S5      n[        R
                  " [        R                  " SU S35      U R                  S9  g g g )Nb_lundefrK  z"                    Trying to use z sanitizer on Clang with b_lundef.
                    This will probably not work.
                    Try setting b_lundef to false instead.rW  )	r   r   r  	get_valuer	   rp  r  r  rb  )r   r   s     r   r  #Interpreter.check_clang_asan_lundef  s    Z (>(>>\"$--*@*@@MM"",,Z88&&00>>MM**44\BELL .##(' *;*> ? **	, ? 9r   c                  ^ ^^ T R                   R                  mT R                   R                  m[        U[        R
                  5      (       a#  SUU U4S jjn[        U5      nU" U5      (       a  g SUU U4S jjn[        R                  R                  X5      nUT R                  ;   a  g [        R                  R                  [        R                  R                  TU5      5      nU" U5        T R                  R                  U5        g )Nc           
       > [        5       nTR                  R                   H@  nUR                   H-  nUR	                  [        UR                  TT5      5      5        M/     MB     TR                  R                   Vs/ s H"  n[        [        TUR                  5      5      PM$     nnX;   a  gU H$  n[        U 5      R                  U5      (       d  M$    g   gs  snf )NTF)r  r   r  r  rH  r|   r  r  r   source_subdirr<  )fpathinstallablefilesrc  rM  installabledirsrK  r   rJ  s        r   validate_installable_fileIInterpreter.validate_within_subproject.<locals>.validate_installable_file  s    03 AYY(,,T!//&(2S-TU ' ) PTzzOfOf"gOf!3tFAOO'D#EOf"g,(A5z,,Q//# )  #hs   >)Cc                  > [         R                  R                  U 5      (       a  SnOSn[        R                  TR
                  ;   a  [        TU 5      (       a  g [        TU 5      (       d  g [         R                  R                  TTR                  5      n[        X 5      (       d1  [         R                  R                  U 5      n[        SU SU S35      e[         R                  R                  UTR                  5      n[        X@5      (       a1  [         R                  R                  U 5      n[        SU SU S35      eg )N	directoryr  z!Sandbox violation: Tried to grab r   z outside current (sub)project.z from a nested subproject.)r  r8  r  r   r   r  r   r  r  rW  r.   r	  )norm	inputtyper  r  r	  rK  r   rJ  s        r   do_validate_within_subprojectMInterpreter.validate_within_subproject.<locals>.do_validate_within_subproject2  s   ww}}T""'	"	(HHDL\L\\aopxz~aa!&$//
 77<<0@0@AL!,55ww''-*-NykYZ[_Z``~+  A  AWW\\,8K8KLNn33ww''-*-NykYZ[_Z``z+{|| 4r   )r  r|   r   r   )r  r   r   r   )r   r  r  r   r  r  r|   r  r8  r  r  r  rH  )r   r  r  r  r  r  rK  rJ  s   `     @@r   r  &Interpreter.validate_within_subproject  s    !!,,##--eU;;<<  ;D )..	} 	}2 V+D(((wwrww||FE:;%d+  'r   c                    g r0  r   r   r  r  s      r   r  #Interpreter.source_strings_to_filesS  s	     BEr   c                    g r0  r   r  s      r   r  r  V  s	     KNr   c                    g r0  r   )r   r  s     r   r  r  Y  s	     gjr   c                    g r0  r   r  s      r   r  r  \  s    x{r   c                    g r0  r   r  s      r   r  r  _  s    |r   c           
         [         R                  " U5        [        U[        5      (       d  U/n/ nU GH  n[        U[        5      (       a  UR                  S5      (       a  [        U< S35      eU(       de  UR                  U R                  R                  5       5      (       a7  UR                  U5        [        R                  " SU< S3U R                  S9  M  U R                  U R                  U5        UR                  [         R                   R#                  U R                  R$                  U R                  U5      5        GM  [        U[         R                   5      (       a  UR                  U5        GMJ  [        U[&        R(                  [&        R*                  [&        R,                  [&        R.                  [&        R0                  [&        R2                  45      (       a  UR                  U5        GM  [5        SU< S35      e   U$ )a  Lower inputs to a list of Targets and Files, replacing any strings.

:param sources: A raw (Meson DSL) list of inputs (targets, files, and
    strings)
:raises InterpreterException: if any of the inputs are of an invalid type
:return: A list of Targets and Files
r   z. ends with a space. This is probably an error.zSource item zp cannot be converted to File object, because it is a generated file. This will become a hard error in meson 2.0.rW  zSource item is z& instead of string or File-type object)r   r  r   r   r   r@  r   r<  r   r=  r   r	   rp  rb  r  r  r   r
  r  r   r  r  r  r  r  r  r.   )r   r  r  resultsrM  s        r   r  r  b  s    	&&w/'4((iG+-A!S!!::c??(A50^)_``!,,t/?/?/M/M/O"P"PNN1%LL<u 5O "OY]YjYjl 33DKKCNN8==#A#A$BRBRB]B]_c_j_jlm#noAx}}--q!A 3 3U5F5F % 7 79K9K % 6 68O8O Q R R q!*_QE BH ,H I I% ( r   c                    U R                  S5      (       a  [        S5      eU R                  S5      (       a  SU ;  a  [        S5      eU [        R                  ;   a  [        SU  S35      eg )Nzmeson-internal__zcTarget names starting with 'meson-internal__' are reserved for Meson's internal use. Please rename.r  r
  zvTarget names starting with 'meson-' and without a file extension are reserved for Meson's internal use. Please rename.zTarget name 'z6' is reserved for Meson's internal use. Please rename.)r<  r/   r   FORBIDDEN_TARGET_NAMES)r  s    r   r  &Interpreter.validate_forbidden_targets  s    ??-.." $N O O??8$$D" $[ \ \8222"]4& 9B $B C C 3r   c           	     "   U R                   R                  S:X  a  [        S5      eUS:X  a  [        S5      eUR                  5       S:X  a  [        S5      e[	        U5      (       a  [
        R                  R                  U R                  [
        R                  R                  U5      S   5      n[
        R                  R                  [
        R                  R                  U R                  U5      5      (       a&  [        [        R                  " SU SU S	35      5      eU R                  U5        UR!                  5       nUR#                  5       nX4nX@R$                  R&                  ;   a  [)        S
U S35      e[+        U[$        R,                  5      (       aR  X`R$                  R.                  ;   a9  [0        R2                  " SUR                   S3SU R4                  U R6                  S9  [+        U[$        R8                  5      (       aH  U R;                  UR<                  SUR>                  5        URA                  5         U RC                  U5        X R$                  R&                  U'   [+        U[$        R,                  5      (       a&  U R$                  R.                  RE                  U/5        X@RF                  RH                  ;  aD  [K        [L        RN                  " 5       5      RQ                  5       U RF                  RH                  U'   g g )NrL  zOInstall-only backend cannot generate target rules, try using `--backend=ninja`.r   zTarget name must not be empty.z0Target name must not consist only of whitespace.r   z                    Target "z," has a path segment pointing to directory "z". This is an error.
                    To define a target that builds in that directory you must define it
                    in the meson.build file in that directory.
            zTried to create target "z,", but a target of that name already exists.z*multiple executables with the same name, "z/", but different suffixes in the same directoryrC  rW  T))r  r  r.   stripr   r  r8  r  r  rQ  existssource_rootr/   r  r  r  r  
get_subdirr   r  r0   r   r  targetnamesr4   r   r   rb  r  r<  missing_languagesrg  process_compilers_lateadd_stdlib_infor  r   target_guidsr   uuiduuid4upper)r   r  tobjpathsegidnamer  namedirs          r   r  Interpreter.add_target  sW   <<&&'xyy2:&'GHH::<2&'YZZggll4;;d0CA0FGGww~~bggll4+;+;WEFF&x <!F"Nwi X8 (  
 	''- ".ZZ''' 8>jklldE,,--'ZZ=S=S2S!!$Ntyyk  ZI  #J")4??TEVEVX dE--..t55tT=M=MN'')  &%)

6"dE,,--JJ""))7)433314TZZ\1B1H1H1JDMM&&v. 4r   c                   U R                  XU[        R                  5      nU R                  XU[        R                  5      nU R                  R
                  R                  [        SU R                  S95      nUS:X  a?  U R                  R
                  R                  [        SU R                  S95      nUS:X  a  SnU R                  R                  S:X  a  SnOLUR                  5       (       a  SnO4[        S	 UR                  5        5       5      (       a  SnOUR                  nU(       a  UR                  R!                  [        R"                  " XDR$                  UR&                  / 5      5        / Ul        / Ul        UR(                  R                  5        VV	s0 s H  u  pU[(        R*                  ;   d  M  X_M     sn	nUl        UR-                  U5        UR/                  U5        [        R0                  " XEU5      $ s  sn	nf )
Ndefault_both_librariesr  autodefault_librarybothr  xcodeFc              3  Z   #    U  H!  u  pUR                  S 5      =(       a    Uv   M#     g7f))static_argsshared_argsN)r@  )r  r   r   s      r   r  3Interpreter.build_both_libraries.<locals>.<genexpr>  s$     ]nda:;AAns   )+)rE  r   r  r  r   r  r6  r   r   r  r  	uses_rustr  r   picr  r   r  r  	generatedr   clink_langs
set_static
set_sharedr  )
r   r  r(  r   
shared_lib
static_libpreferred_libraryreuse_object_filesr   r   s
             r   ry   Interpreter.build_both_libraries  s   &&t65;N;NO
&&t65;N;NO
 MM22@@Kcptpp  BA  B& $ 6 6 D DYO`mqm|m|E} ~ F*$,!<<' "'!!## "']flln]]]!&!+
 %%e&<&<ZI[I[]g]q]qsu&vw!#J#%J  6@5I5I5O5O5Q#p5QTQUVZcZoZoUoDAD5Q#pJ  	j)j)"":;LMM $qs   H=Hc                   U R                   R                  R                  [        SU R                  S95      n[        U[        5      (       d   S5       eUS:X  a6  U R                  X[        R                  " SU5      [        R                  5      $ US:X  a6  U R                  X[        R                  " SU5      [        R                  5      $ US:X  a  U R                  XU5      $ [        S	U S
35      e)Nr  r  r$  r  kwtypes.SharedLibraryr   kwtypes.StaticLibraryr  zUnknown default_library value: r
  )r   r  r6  r   r   r   r   rE  Tcastr   r  r  ry  r.   )r   r  r(  r   r  s        r   r~  Interpreter.build_library  s    --00>>yIZgkgvgv?wx/3//;;/h&$$T8OQW1XZ_ZmZmnn($$T8OQW1XZ_ZmZmnn&,,T@@&)HHYYZ'[\\r   c                v   / n/ n[         R                  " U R                  R                  5       U R                  R	                  5       5      nU Hf  n[        U[         R                  5      (       a3  UR                  U5        UR                  UR                  U5      5        MU  UR                  U5        Mh     X#4$ )a   Convert raw target arguments from File | str to File.

This removes files from the command line and replaces them with string
values, but adds the files to depends list

:param raw: the raw arguments
:return: A tuple of file dependencies and raw arguments
)	r   ry  r   r  r=  r   r   r   rel_to_builddir)r   rawr  r(  build_to_sourcer  s         r   __convert_file_argsInterpreter.__convert_file_args  s     /1"**4+;+;+J+J+L+/+;+;+I+I+KM A!X]]++##A&A--o>?A  !!r   c                    UR                  S/ 5      n[        R                  " [        5      n[        R
                   H0  nU R                  X S3   5      u  pVXcU'   UR                  U5        M2     X1S'   g)a"  Convert split language args into a combined dictionary.

The Meson DSL takes arguments in the form `<lang>_args : args`, but in the
build layer we store these in a single dictionary as `{<lang>: args}`.
This function extracts the arguments from the DSL format and prepares
them for the IR.
r  _argslanguage_argsN)r  r   r   r   r   all_languages_Interpreter__convert_file_argsr  )r   r   rc  new_argsri  r  r(  s          r   __process_language_args#Interpreter.__process_language_args
  sm     nb14?4K4KD4Q((A11&3e2EFJDQKHHTN ) #+r   c                    g r0  r   r   r  r(  r   targetclasss        r   rE  Interpreter.build_target  s    mpr   c                    g r0  r   r3  s        r   rE  r5        vyr   c                    g r0  r   r3  s        r   rE  r5  #  r7  r   c                    g r0  r   r3  s        r   rE  r5  '  s    svr   c                    g r0  r   r3  s        r   rE  r5  +  s    X[r   c                $   Uu  pVUS   nUR                  S5      S:X  a  [        R                  nXcS   -   n[        S U 5       5      (       a$  [        R
                  " SSU R                  SU5        [        S	 U 5       5      (       a$  [        R
                  " S
SU R                  SU5        U Vs/ s H6  n[        U[        R                  [        R                  45      (       a  M4  UPM8     nn[        US   [        5      (       d$  [        R
                  " SSU R                  SU5        U R                  U5      nUS   n	[        US5      US'   U R                  US   5      US'   U R                  [        R                   R#                  U R$                  U R&                  5      U5        U[        R(                  [        R*                  [        R,                  [        R.                  [        R0                  1;  a+  [2        R4                  " S[7        U5      5        [9        S5      eU R;                  U5        U[        R.                  L am  [<        R>                  S1-
   HT  n
U RA                  UR                  U
 S3/ 5      5      u  pUS   U
   RC                  U5        US   RC                  U5        MV     OU[        R*                  L al  [<        R>                  S1-
   HT  n
U RA                  UR                  U
 S3/ 5      5      u  pUS   U
   RC                  U5        US   RC                  U5        MV     U[        R0                  La&  U RE                  Xd5        U RG                  US5      US'   URI                  5        VVs0 s H  u  pXRJ                  S1-  ;   d  M  X_M     nnn/ n[        RL                  " 5       nU H9  n[        U[        RL                  5      (       a  X-   nM(  URO                  U5        M;     U(       d  S nGO URP                  RS                  5        H  n[U        5       nU H  n[        U[6        5      (       a!  [        R                   RW                  U5      /nO=[        U[X        RZ                  5      (       a  UR\                  /nOUR_                  5       nURa                  U5      nU(       a0  [b        Rd                  " SSR#                  [g        U5      5       3US9eURi                  U5        M     M     U RG                  U5      US'   U[        R(                  L a  [j        Rl                  " SU5      nUS    b*  US!   b  [b        Rd                  " S"US9eUS    (       a  S#US!'   US!   c  S$US!'   US%   (       a0  US&   S'L a"  [n        R
                  " S(SU R                  S)US*9  S+US&'   O"US&   (       a  US%   S'L a  [c        S,5      eS+US%'   US&   c  S'US&'   US%   c  S'US%'   U" XPR&                  U R                  X~XU Rp                  U R<                  U   U5
      nU	(       a7  URs                  5       (       a"  [t        R
                  " S-S.U R                  5        U Rw                  UU5        S+U l<        U$ s  snf s  snnf )/Nr   rust_crate_typez
proc-macror  c              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr0  )r   r   r  r  rM  s     r   r  +Interpreter.build_target.<locals>.<genexpr>;  s      AAz!U..//r  z4passing references to built targets as a source filer  zpConsider using `link_with` or `link_whole` if you meant to link, or dropping them as otherwise they are ignored.c              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr0  )r   r   r  r>  s     r   r  r?  ?  s      Fgz!U3344gr  zpassing object files as sourceszUPass these to the `objects` keyword instead, they are ignored when passed as sources.r  z$install kwarg with non-boolean valuerC  zjThis was never intended to work, and is essentially the same as using `install: true` regardless of value.r  r   r  zUnknown target type:zUnreachable coder   r   r,  r  r   r  z+Conflicting sources in structured sources: rE  r  rU  kwtypes.Executablegui_appwin_subsystemzZExecutable got both "gui_app", and "win_subsystem" arguments, which are mutually exclusivewindowsr  implibexport_dynamicFz,implib overrides explicit export_dynamic offzCDo not set ths if want export_dynamic disabled if implib is enabledrW  TzM"implib" keyword" must not be false if "export_dynamic" is set and not false.zobjects in Rust targetsz1.8.0)=r8  r   r\  r  r6   r   r   r   r   r  r  r   r  r   check_sources_existr  r8  r  r  r  r  r  r  r  r  r	   rI  r   r  #_Interpreter__process_language_argsr   r-  r.  r  check_for_jar_sourcesr  r   known_kwargsr  r   r  r   r  rW  r   r   r  get_outputsintersectionr/   r  rW  r  r!  r"  r5   r   r  r4   r  r  )r   r  r(  r   r4  r  r  rg  rM  objsr  r  r   r   srcsstructr  rI  r  	conflictsr5  s                        r   rE  r5  /  s
    X&::'(L8 (--K9--AAAA$$%[]dfjfufu &X%)+ FgFFF$$%FQUQ`Q`%|%)+
 & Vg$Q):):E<R<R(ST g V &+T22$$%KWVZVeVe &R%)+ ..w7i !0!H~ $ < <VM=R S}  d.>.>!LgVu//1D1DeFXFXZ_ZmZmotoxoxyyJJ-s;/?@122$$V,%---!//6(:!55fjjD6AVXZ6[\
'-44T:~&--d3 ; E///!//6(:!55fjjD6AVXZ6[\
'-44T:~&--d3 ; eii'&&w<&*&:&:6?&SF?# $*<<>g>41Q:R:RVeUf:f5f$!$>g')6;6M6M6OA!U4455A	  F
 ^^**,&)eA!!S))WW--a01#Ax}}55WWIMMO ' 4 4Q 7I .88I$))TZ[dTeJfIgh!%' ' NN1%  -" )-(<(<V(D$%%***VV0&9Fi ,/*6*44t!# # )$.7F?+o&.*3'h*+u4%001_ahjnjyjy1v:>@ ,0'(()(#u,*+z{{#'x &'/+0'(h'#(x T;;TZ!--t~~k/JFTF$$&&!!";WdooVf%#' OVD hs   03Z'ZZ Zc                    UR                   R                  5        HP  nU R                  R                  UR                     R                  US 5      nU(       d  M?  UR                  U5        MR     g r0  )r   r^  r   re  rg  r8  add_deps)r   r5  ri  rl  s       r   r  Interpreter.add_stdlib_info  sS    !!&&(A**$$V%7%78<<QECs$ )r   c                    U Hl  n[        U[        5      (       d  M  [        R                  R	                  X5      n[        R                  R                  U5      (       a  M_  [        SU S35      e   g )Nz&Tried to add non-existing source file r
  )r   r   r  r8  r  r;  r.   )r   r  r  rM  r  s        r   rG  Interpreter.check_sources_exist  sY    Aa%%GGLL+E77>>%((*-STUSVVW+XYY r   c           
        U H  n[        U[        [        R                  45      (       aR  [        R
                  " U5      (       a7  [        SUR                   SU S[        R                  R                   S35      e[        U[        R                  5      (       d  M  U R                  UR                  5       U5        M     g )NzBuild target of type "z" cannot build java source: "z". Use "z
" instead.)r   r   r   r   r   is_javar/   typenamer   r  r  rI  as_list)r   r  r4  rM  s       r   rI  !Interpreter.check_for_jar_sources  s    A!c8==122y7H7H7K7K&)?@T@T?UUrstruu}  D  H  H  Q  Q  ~R  R\  (]  ^  ^Au6677**199;D	 r   c                N    U R                   UR                   :w  a  [        S5      eg )Nz5Tried to extract objects from a different subproject.)r   r.   )r   buildtargets     r   validate_extractionInterpreter.validate_extraction  s%    ??k444&'^__ 5r   c                     U R                   S:g  $ r*  r  r(  s    r   r  Interpreter.is_subproject  s    "$$r   rg  c                    Uu  pE[         R                  R                  U5      c  [        SU-   5      eU R	                  XESS9  g )NzInvalid variable name: T)	holderify)r   IDENT_REr  r0   rg  )r   r  r(  r   varnamer   s         r   r  Interpreter.func_set_variable  sF    
 %%g.67'ABB'D9r   rS  c                    Uu  pE[        U[        5      (       a  U$  U R                  U   $ ! [         a    Ub  U R	                  U5      s $  Of = f[        SU S35      e)NzTried to get unknown variable "rf  )r   r2   rR  ra  
_holderifyr.   )r   r  r(  r   rd  r   s         r   r  Interpreter.func_get_variable  sr     !gx((N	1>>'** 	1#x00 $	1 #%DWIR#PQQs   , AAr]  c                &    US   U R                   ;   $ r   rQ  r  s       r   r  Interpreter.func_is_variable  s     Aw$..((r   rn  c                d    US   n U R                   U	 g ! [         a    [        SU S35      ef = f)Nr   z!Tried to unset unknown variable "rf  )rR  ra  r.   )r   r  r(  r   rd  s        r   r  Interpreter.func_unset_variable  sF     q'	Xw' 	X&)J7)SU'VWW	Xs    /c                    U R                  SS5      n[        U[        5      (       d  [        S5      eU(       a  [        R
                  $ [        R                  $ )Nr   Fz'Argument to "native" must be a boolean.)r8  r   r   r/   r   r\  rZ  )r   r   s     r   r  %Interpreter.machine_from_native_kwarg  sD    He,&$''"#LMM&,}""D-2D2DDr   r\  c                (    [        US   [        5      $ r   )r   r2   r  s       r   r  Interpreter.func_is_disabler  s     $q'8,,r   rd  c                    Uu  pEnUc  UnSnUc  SnUS:  a  [        S5      eXT:  a  [        S5      eUS:  a  [        S5      e[        R                  " XEX`R                  S9$ )Nr   rA   zstart cannot be negativezstop cannot be less than startzstep must be >=1r  )r.   r  RangeHolderr   )r   r  r(  r   startstopsteps          r   r  Interpreter.func_range  sw     !T <DE<D19&'ABB<&'GHH!8&'9::  dOOr   )r  r  r  r   r   r  r  r  r   r  r  r   r  r	  r  r  r  r!  r  )Nr   r   r  NNNN)r$  zbuild.Buildr  zT.Optional[Backend]r   r   r  r   r	  r   r  T.Optional[OptionDict]r  !T.Optional[mparser.CodeBlockNode]r  ,T.Optional[T.Set[InterpreterRuleRelaxation]]r!  z%T.Optional[coredata.SharedCMDOptions]r   r   )r   z-T.Tuple[T.Tuple[object], T.Dict[str, object]])r   r   )r  zT.Type[mesonlib.HoldableObject]r  zT.Type[ObjectHolder]r   r   )r  z2T.List[T.Union[TYPE_var, ExecutableSerialisation]]r   r   )r  r   r   mparser.BaseNoder   r   )r   zmesonlib.OrderedSet[str])rI  zmesonlib.FileOrStringr   r   )r   zT.Dict[str, InterpreterObject])r  rz  r(  T.Tuple[str]r   z'kwtypes.FuncImportModule'r   zET.Union[ExtensionModule, NewExtensionModule, NotFoundExtensionModule])r  mparser.FunctionNoder(  T.Tuple[T.List[str]]r   'TYPE_kwargs'r   T.List[mesonlib.File])r  rz  r(  T.List[TYPE_var]r   zkwtypes.FuncDeclareDependencyr   zdependencies.Dependency)r  r|  r(  zT.Tuple[bool, T.Optional[str]]r   r~  r   r   )r  rz  r(  T.Tuple[T.Union[build.Executable, ExternalProgram, compilers.Compiler, mesonlib.File, str], T.List[T.Union[build.Executable, ExternalProgram, compilers.Compiler, mesonlib.File, str]]]r   'kwtypes.RunCommand'r   rH   )F)r(  r  r   r  r  r   r   rH   )r  rz  r(  r{  r   zkwtypes.Subprojectr   rF   )NN)r  r   r  r   rr  zT.Optional[Exception]r   rF   )
r  r   r   kwtypes.DoSubprojectr  zT.Optional[wrap.Method]r  rw  r   rF   )NNN)r  r   r  r   r   r   r   r  r  rx  r2  T.Optional[T.List[str]]r  ry  r   rF   )
r  r   r  r   r   r   r   r  r   rF   )r  rz  r(  r{  r   r   r   z'T.Union[options.UserOption, 'TYPE_var'])r  rz  r(  z'T.Tuple[T.Optional[T.Dict[str, T.Any]]]r   r~  r   zbuild.ConfigurationData)r  r|  r(  zT.Tuple[str, T.List[str]]r   z'kwtypes.Project'r   r   )r  r|  r(  r}  r   z'kwtypes.FuncAddLanguages'r   r   )r(  r  r  r   r   T.List[str])r  rz  )r  rz  r(  z<T.Tuple[T.Union[str, T.Dict[str, T.Any]], T.Optional[T.Any]]r   'kwtypes.Summary'r   r   )r   r   r   r  r   r   )r  rz  r(  r{  r   r   r   r9   )r(  r  r   r   rg  r   r   r   )rg  r   r   r   )rg  r   r  T.List[mesonlib.FileOrString]r   T.Optional[ExternalProgram])r(  r  r  r  r  T.List[mlog.TV_Loggable]r   r  )r  r  r  zT.List['mlog.TV_Loggable']r   zOT.Optional[T.Union[ExternalProgram, OverrideProgram, build.OverrideExecutable]])r  r  r   r   )r  r   r  zET.Union[build.OverrideExecutable, ExternalProgram, 'OverrideProgram']r   r   )r(  r  r   r   )r(  r  rg  r   r   rw  r   r   r  r   r  T.Union[str, T.List[str]]r  r  r5  r   r6  T.Optional[ProgramVersionFunc]r   zIT.Union['ExternalProgram', 'build.OverrideExecutable', 'OverrideProgram'])r(  r  rg  r   r   rw  r   r   r  r  r  r  r5  r   r6  r  r  r  r   GT.Optional[T.Union[ExternalProgram, build.Executable, OverrideProgram]])
r7  z;T.Union[ExternalProgram, build.Executable, OverrideProgram]r  r  r6  r  r  r  r   r   )r   r   r(  r  r   r   r   r   r  r  r   r  )r  rz  r(  z&T.Tuple[T.List[mesonlib.FileOrString]]r   z'kwtypes.FindProgram'r   z?T.Union['build.Executable', ExternalProgram, 'OverrideProgram'])r  rz  r(  r}  r   zkwtypes.FuncDependencyr   r!   )r   rA  r   zkwtypes._BuildTarget)r  rz  r(   T.Tuple[str, SourcesVarargsType]r   rA  r   build.Executable)r  rz  r(  r  r   r   r   build.StaticLibrary)r  rz  r(  r  r   r  r   build.SharedLibrary)r  rz  r(  r  r   kwtypes.Libraryr   zbuild.BothLibraries)r  rz  r(  r  r   kwtypes.SharedModuler   build.SharedModule)r  rz  r(  r  r   r  r   r  )r  rz  r(  zGT.Tuple[str, T.List[T.Union[str, mesonlib.File, build.GeneratedTypes]]]r   kwtypes.Jarr   	build.Jar)r  rz  r(  r  r   zkwtypes.BuildTargetr   zwT.Union[build.Executable, build.StaticLibrary, build.SharedLibrary, build.SharedModule, build.BothLibraries, build.Jar])r  rz  r(  zT.List['TYPE_var']r   z'kwtypes.VcsTag'r   build.CustomTarget)r  rz  r(  r   r   r   r   z
T.NoReturn)r  r   r  zT.Iterable[str]r  r   r   r   )r  r|  r(  r{  r   z'kwtypes.CustomTarget'r   r  )r  r|  r(  r{  r   z'kwtypes.RunTarget'r   zbuild.RunTarget)r  rz  r(  z@T.Tuple[str, T.List[T.Union[build.Target, build.BothLibraries]]]r   r   r   zbuild.AliasTarget)r  r|  r(  z3T.Tuple[T.Union[build.Executable, ExternalProgram]]r   z'kwtypes.FuncGenerator'r   zbuild.Generator)r  rz  r(  zRT.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File]]r   z'kwtypes.FuncBenchmark'r   r   )r  rz  r(  T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]]r   z'kwtypes.FuncTest'r   r   )r   zOT.Union[EnvironmentVariables, T.Dict[str, 'TYPE_var'], T.List['TYPE_var'], str]r   r   )
r  rz  r(  r  r   z'kwtypes.BaseTest'r  zT.Type[TestClass]r   r   )r  rz  r(  r  r   r   r  r   )r  rz  r(  (T.Tuple[T.List['mesonlib.FileOrString']]r   z'kwtypes.FuncInstallHeaders'r   zbuild.Headers)r  rz  r(  r  r   z'kwtypes.FuncInstallMan'r   z	build.Man)r  rz  r(  r{  r   r   )r  rz  r(  r}  r   zbuild.SymlinkData)r  rz  r(  z0T.Tuple[object, T.Optional[T.Dict[str, object]]]r   r~  r   zbuild.StructuredSources)r  rz  r(  r{  r   z'kwtypes.Subdir'r   r   )r"  r   r   r   )r  rz  r(  r  r   z'kwtypes.FuncInstallData'r   
build.Data)NFN)r  r  r  r   r  r   r$  r  r+  r   r,  r   r  r   r  zT.Optional[bool]r   r  )r  rz  r(  r{  r   z'kwtypes.FuncInstallSubdir'r   zbuild.InstallDir)r  rz  r(  r  r   zkwtypes.ConfigureFile)rU  )r  r   r   zT.List[build.IncludeDirs])r  rz  r(  r}  r   z 'kwtypes.FuncIncludeDirectories'r   build.IncludeDirs)r  r  r}  r   r   r  )r  rz  r(  r{  r   z'kwtypes.AddTestSetup'r   r   )r  r|  r(  r}  r   'kwtypes.FuncAddProjectArgs'r   r   )r  r|  r(  z(T.Tuple[T.List[dependencies.Dependency]]r   r  r   r   )r(  r  r   r   )
r  r|  r  T.Dict[str, T.List[str]]r(  r  r   r  r   r   )
r  r|  r  z%T.Dict[str, T.Dict[str, T.List[str]]]r(  r  r   r  r   r   )r  r|  r  r  r  r   r(  r  r   r  r   r   )r  r|  r(  zHT.Tuple[T.Union[None, str, T.List['TYPE_var'], T.Dict[str, 'TYPE_var']]]r   r~  r   r   )r  rz  r(  r}  r   r~  r   r   )T)r  T.List['mesonlib.FileOrString']r  r   r   zT.List['mesonlib.File'])r  r  r  r   r   r  )r  z<T.List[T.Union[mesonlib.FileOrString, build.GeneratedTypes]]r   z4T.List[T.Union[mesonlib.File, build.GeneratedTypes]])r  zT.List['SourceInputs']r  r   r   T.List['SourceOutputs'])r  zT.List[SourcesVarargsType]r  r   r   r  )r  r   r   r   )r  r   r  zbuild.Targetr   r   )r  rz  r(  r  r   r  )r&  r  r   z+T.Tuple[T.List[mesonlib.File], T.List[str]])r   z*T.Dict[str, T.List[mesonlib.FileOrString]]r   r   )
r  rz  r(  r  r   rA  r4  zT.Type[build.Executable]r   r  )
r  rz  r(  r  r   r   r4  zT.Type[build.StaticLibrary]r   r  )
r  rz  r(  r  r   r  r4  zT.Type[build.SharedLibrary]r   r  )
r  rz  r(  r  r   r  r4  zT.Type[build.SharedModule]r   r  )
r  rz  r(  r  r   r  r4  zT.Type[build.Jar]r   r  )
r  rz  r(  r  r   zlT.Union[kwtypes.Executable, kwtypes.StaticLibrary, kwtypes.SharedLibrary, kwtypes.SharedModule, kwtypes.Jar]r4  zjT.Type[T.Union[build.Executable, build.StaticLibrary, build.SharedModule, build.SharedLibrary, build.Jar]]r   zbT.Union[build.Executable, build.StaticLibrary, build.SharedModule, build.SharedLibrary, build.Jar])r\  zmesonlib.HoldableObjectr   r   )r   r   )r  rz  r(  zT.Tuple[str, object]r   r~  r   r   )r  rz  r(  z3T.Tuple[T.Union[str, Disabler], T.Optional[object]]r   r~  r   z
'TYPE_var')r  rz  r(  r{  r   r~  r   r   )r  rz  r(  r{  r   r~  r   r   )r   r   r   r   )r  rz  r(  zT.Tuple[object]r   r~  r   r   )r(  z.T.Tuple[int, T.Optional[int], T.Optional[int]]r   r   r   zP_OBJ.RangeHolder)r   r   r   r   r   r)  r#  r  r   r  r  r!  r-  r3  rN  rS  rm  r'   r   r&   rp   r  r_   r3   r  r)   r  r(   r%   r#   r   rd   r`   rZ   ri   rj   rs   r   r   rv   rx   r   r  r  r   r~  r  r  r   r   r  ra   r  r  r  rY   r  r  r  r  r  r  r  r   r  rq  r   r  rx  r  r+   r  r  r4   objectr  r  r  r  r  r  r  ry   r  r<  r  r  r  r  r   r$  r*  r-  r   rZ  r8  r2  r3  r?  rn   r  r7   r*   permitted_dependency_kwargsr[   r  r  rj  known_exe_kwargsrt   rT   r  known_stlib_kwargsru   r  known_shlib_kwargsrq   r  known_library_kwargsrV   r,   r  known_shmod_kwargsrr   r  r  known_jar_kwargsr  r  r  r  rU   r  known_build_target_kwargsrL   r  rQ   rW   re   rf   rl   rg   r  r  r  rM   rN   rO   rP   rR   rk   r\   r]   r^   r  r  Targetr  r}  r  r  rw   r  r  r  rG   r  r  ro   rh   r  r  r  r  r  r  r  r  r'  r  r   r  rX   r  r  r  rz  r|  rm   rv  rw  ry  r{  r   r!   rz  r  r  r  r  rb   rc   r  r  r*  r  r  r  r!  overloadr  staticmethodr  r  ry  r~  r.  rH  rE  r  rG  rI  r]  r  r  r2   r-   r  r  r  r  r  r  r   r  r  s   @r   r  r  
  s   
 04"$ &3IM9=LPNR+"#+" -+"  	+"
 +" !$+" 1G+" 7+" J+" 'L+" +" +"Z=L$@HD@D	^<>
>$
!(F9* Hc"**
 I6I <AI  #IV GS)5  *5 ."3D#">VXY""xH##(3+0s;TSUV8,-!24(--9M!NX\fhpwx($9IJ)c8_-).tU5K5KLVZdfnuv "(E"Ja"! ""H HdSE2D)D.2D  3DG 			?I,>,>sS!!?I4F4FWZ[] 'D(+8<)T4x@H%	3 C3 "63 ;E3	]3 .3	IQ CIQ "6IQ '+	IQ 8B	IQV@ L#&X.).tS92tT	/ '/ W[?C'<HX sw?C]&<]HX]D GKHLY]:+.8:+%9:+ #D:+ /F	:+
 +W:+
 cs:+x.8%9>N66.86%96>N6" L#&2 +20W2  '2h (4&9	7(5	7:Q	7  :	7+@ IsC0/C?3(--400B	
 	)/c:HEt]ab/#4T3#?UYahi"C?t! 1 t!l /9Xh7Gx#XZefOS1 2 g.? $  $/ 	8$IT{VH=)S"-)T51*sHoX>	
=.
=37
= > % 
=U- ^ 	8$/  % / Q  Q "(  # ( 5  5 NC(%i;KYX\L];^_J	 )
J6;z#>(@E`:
+E
$s
7
M 8E7I7IDH+/>@AE9;IM'4+A %) :> #<	
 (? (7 )G  i@*(>*!%* %<*  9	*
 %4* &D* $<* d*X&?,J +C HL0=/9=(,=:R= $k=  NS(--,@aP*&+D#6DX`a).tS92t[cd$c2WEW-	 ?"7?^? 	 Q?  lH/F.GHlH/?.@AlH|n=lH~.>?lH.fglHzl;lHxj901L#1=,DDtD& E > 2  : < h @ > B I&P 
H%   & U++,L#?,DDtD	G>	G 2	G7G	G E @ -	G U--.$c?C"H^H4HJ>J 5J:MJ I D /J
 U--.$c?C"H^H4H> 5:M I D / )*$c?C"E[EE!=<=-=2E= " F D +=
 *U--.OS/B/GNG$GI!AI#7I<NI H C / +I
 )*IsO<)>k>>!6;6,61A6 " ? = +6
 U++,E3hmmU=O=OQVQhQhjoj}j}  @E  @V  @V  X]  Xi  Xi  )j  k%6'66@^@$@)2@ 7 k -@
 nh?Q0RS./NCA.H#3H4H@ @@"5@ [@ I B 0 T@* D)dS%*;*;U=O=OQVQhQhjy  |D  |I  |I  %J  K		
 	*sHo."C=(G,G,W-!$>% &>@ x("   )"%$ OcU3H%X.&$X>)T51)T5A%([#9[>P[) 4*[z L#&H%	 38G ' )NC%,,@S@S1Tbcd"-2C  e *  K%"2"2O!DE+0sNY]gkl(-dCUKVZdhi)T5A2P262;J2 F2 Ku'7'7OU]UbUbdidvdvx}  yP  yP  'Q  R+))1o161;?1 * R1
 FC%"2"2EIIPXP]P]_d_q_qsx  tK  tK  "L  M&R8RY}dD%QR0 X0,0150 S M0
) .2.( X.(,.( +.( 7@.(`D WD+D;?D  %X]]/CD(S(O,X.#K%AFS E@ MC+?@(S(O8<X.	G!9>G A* "H--#xA
 . !8,NC(-t4-t4	#7(9 ) - $h/(&4&A0(0B0 "0 '>0   B 002 Hc"dF+y	

V
 #V> NS(--,@A).tc8==5IJTXbde(-dC8"dZbcX.H-h/	Q HQ";Q@JQ	 BQ@ @D05>B(0:Q. .= *.	
 ,<
 HR2 $c*-t4#T59/#4T3#?d(h	j 	'):4)Ed(h	j 	X.H-$?DT +: )Y/H-)T5Ate&6&6I[I[]e]j]jlo%p  D  E  GO  P	

 	tc3%568O8OQYZ	
 	D%x	
 	*c7(C(C,-IJ	LdX]]C$89		
 	)dH-X>-#tbY	[/38SY[bRc,-BC	E,hWME#HXB$9XBI# JXBt 2 )37';e)TUF)IFN_F V 8FA AF $c*-!24#9O!PZ^hjk%u-&Q7"$5dC$@$XZbjk,e8DW +W8 *C8()[Ad B 9d /=()[Ai B >i +S9)9kBg C :g 0#>()[Al B ?l *H5.8O8OP,iEu F Q 6u$98B$/B9UBZ^BD%0D:VD[_D
;$(
;0;
;Ea
;fj
; MS$,=+>?-0@0G0Gh0WX&!.&3G& Y @ & L#1=
  >
" ",06(p ZZ E  E  EZZ N  N  NZZ j  jZZ{{ {ZZ    D 	C 	C'KR  (++N ,+NZ
]".+" ZZq/q>Vq[kq q ZZz2zA\zatz z ZZz2zA\zatz z ZZw1w@Zw_qw w ZZ\(\7H\MV\ \} J} #M} }}~%ZE`% NC0!: "   1: NS(OfXFR"/R4>R    GR M3')  ()  (+$c*X  + ,X E E x(M6*-  + )- "GS3*5P 6 # Pr   r  )r   z)T.Union[T.List, str, mesonlib.File, None]r   r   )
__future__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   programsr   r    r!   r  r"   interpreterbaser#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   optinterpreterr@   rB   r6  rC   r  	mesonmainrD   dependencyfallbacksrE   rF   rG   rH   rI   rJ   rK   type_checkingrL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r  pathlibr|   enumr}   r  r   r  r  r@  r   typingr!  r  rz  r(  TYPE_CHECKINGtyping_extensionsr~   r   kwtypesbackend.backendsr   interpreterbase.baseobjectsr   r   r   r   r   r   Unionr   r  r  r  r  r  r  r   SourceInputsr  SourceOutputsFileOrStringGeneratedTypesBuildTargetSourceCallabler  ProgramVersionFuncTypeVarr   r   r   r  r  r-  r  r  r  r  r   r  r  r  )ri  s   0r   <module>r     s6  
 #            ! T T T T   B %  i i D  D d d : \ \ @ 4 u u * ' %   : 0 0 0 0 0 0 0 0 0 0 0 0 0b "   	   	      ???)#*VV$*1 778==%*=*=u?P?PRWReRe 22E4F4FH[H[ 1137 8L GGHMM5+>+>!--u/F/FHZHZ!22E4G4GI`I`a bM  5 5u7K7KUMdMd deQWW_e>N>NP_-_%`$acf$fg		+T2ID? D?N 
	!*!8!8F8!CD!CAs,!CDE "+!8!8F8!CD!CAs,!CDE  		 O ( ( , F K4P/> K4P_ EDs   O>+P