
    -Ph<[                       d dl mZ d dlZd dlZd dlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
mZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z& ej'        rZd dl(m)Z)m*Z* ddl+m,Z, ddlm-Z-m.Z. ddlm/Z/ ddl0m1Z1  G d de*          Z2 G d de*          Z3 G d de*          Z4 G d de*          Z5 G d de          Z6dS )    )annotationsN   )mesonlib)dependencies)build)mlogcoredata)MachineChoice)	OptionKey)OverrideProgramExternalProgram)ENV_KWENV_METHOD_KWENV_SEPARATOR_KWenv_convertor_with_method)
MesonInterpreterObject
FeatureNewFeatureDeprecatedtyped_pos_argsnoArgsFlattening	noPosargsnoKwargstyped_kwargs	KwargInfoInterpreterException   )MesonVersionString)	NATIVE_KWNoneType)Literal	TypedDict)Compiler)TYPE_kwargsTYPE_var)ExecutableSerialisation)Interpreterc                  $    e Zd ZU ded<   ded<   dS )FuncOverrideDependencymesonlib.MachineChoicenativeT.Optional[bool]staticN__name__
__module____qualname____annotations__     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/interpreter/mesonmain.pyr(   r(   !   s*         &&&&      r3   r(   c                  .    e Zd ZU ded<   ded<   ded<   dS )AddInstallScriptKWboolskip_if_destdirstrinstall_tagdry_runNr-   r2   r3   r4   r6   r6   &   s1         r3   r6   c                      e Zd ZU ded<   dS )NativeKWr)   r*   Nr-   r2   r3   r4   r=   r=   ,   s         &&&&&&r3   r=   c                  $    e Zd ZU ded<   ded<   dS )AddDevenvKWz#Literal['set', 'prepend', 'append']methodr9   	separatorNr-   r2   r3   r4   r?   r?   0   s%         3333r3   r?   c                  
    e Zd Zd fdZddZddZ edeej	        e
j        efeej	        e
j        e
j        e
j        ef           ed ededd           edeefd           ededd                    dd                         Z ed!eej	        efeej	        ef          edd$                        Z ed%eej	        efeej	        ef          e ed%d&          dd'                                    Zeedd)                        Zeedd*                        Zeedd+                        Zee ed,d-d.          dd/                                    Zee ed0d-d1          dd2                                    Zee ed3d-          dd4                                    Z ee ed5d-          dd6                                    Z!ee ed7d8          dd9                                    Z"ee ed:d8          dd;                                    Z#ee ed<d=d>          dd@                                    Z$ee edAd=          ddB                                    Z%ddCZ&eeddD                        Z' edEe           edEe(          ddI                        Z)eeddJ                        Z*eeddK                        Z+ edLe          eddM                        Z, edNdO           edNeej	        ee
j        f          eddQ                                    Z- edRe( edSeefd                     edRee.j/                   edRdT          ddW                                    Z0	 ddd\Z1eedd]                        Z2 ed^d_          eedd`                                    Z3 edad          eedde                                    Z4eeddg                        Z5eeddh                        Z6ddoZ7e8 edpd8dq           edpee9gr          eddt                                                Z:e8 edudT           eduee9gr           edue(          ddv                                                Z; edwd8           edwe           edwe(          ddx                                    Z< edyd8           edze= e>j?        d{                     edyee@eAejB        f          dd~                                    ZCee edd          dd                                    ZD xZES )	MesonMainr   'build.Build'interpreter'Interpreter'c                d   t                                          |j                   || _        || _        | j                            i d| j        d| j        d| j	        d| j
        d| j        d| j        d| j        d	| j        d
| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        | j        | j        | j        | j        | j        | j        | j        | j        | j         | j!        | j"        | j#        | j$        | j%        d           d S )N
subproject
add_devenvadd_dist_scriptadd_install_scriptadd_postconf_scriptbackendbuild_options
build_rootcan_run_host_binariescurrent_source_dircurrent_build_dirget_compilerget_cross_propertyget_external_propertyglobal_build_rootglobal_source_roothas_exe_wrapperhas_external_property)install_dependency_manifestis_cross_buildis_subprojectis_unityoverride_dependencyoverride_find_programproject_build_rootproject_licenseproject_license_filesproject_nameproject_source_rootproject_versionsource_rootversion)&super__init__rI   r   rE   methodsupdateadd_devenv_methodadd_dist_script_methodadd_install_script_methodadd_postconf_script_methodbackend_methodbuild_options_methodbuild_root_methodcan_run_host_binaries_methodcurrent_source_dir_methodcurrent_build_dir_methodget_compiler_methodget_cross_property_methodget_external_property_methodglobal_build_root_methodglobal_source_root_methodhas_exe_wrapper_methodhas_external_property_method"install_dependency_manifest_methodis_cross_build_methodis_subproject_methodis_unity_methodoverride_dependency_methodoverride_find_program_methodproject_build_root_methodproject_license_methodproject_license_files_methodproject_name_methodproject_source_root_methodproject_version_methodsource_root_methodversion_method)selfr   rE   	__class__s      r4   rj   zMesonMain.__init__6   s   K$:;;;
& \4+A .0K143Q 3D4S '(;	
 -d.G *4+A 5d6W 243Q 1$2O ,T-E 243Q 5d6W 1$2O 243Q /0K  5d6W!" =A<c/3/I.2.G)-)=484S6:6W373Q040K6:6W-1-E484S040K,0,C(,(;=   	  	  	  	  	 r3   namer9   prog>T.Union[str, mesonlib.File, build.Executable, ExternalProgram]argsT.List[str]return'ExecutableSerialisation'c                .   g }t          |t          j        t          f          r;t	          j        d| d| j        | j                   |                    |           not          |t          j
                  r%t	          j        d| d| j        | j                   | j                            |g          }|                    |           |                    |           | j        j                            |d          }| j        j        |_        |S )Nz?Passing executable/found program object to script parameter of 0.55.0locationz+Passing file object to script parameter of 0.57.0T)verbose)
isinstancer   
Executabler   r   
single_userI   current_nodeappendr   FilerE   find_program_implextendrN   get_executable_serialisation)r   r   r   r   largsfoundess          r4   _find_source_scriptzMesonMain._find_source_script[   s(    JLdU-?@@ 		 !"jdh"j"j"*DOdFWY Y Y YLL$.. ]%&ZTX&Z&Z&.$J[] ] ] ]$66v>>ELLT%BB5RVBWW(3	r3   xT.Sequence[T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, ExternalProgram]]c                   g }d}|D ]5t          t                    r|                               .t          t          j                  r:d}|                                        | j        j        j                             t          t          j
        t          j        t          j        f          rfd}|                    fd                                D                        t          t          j                  rdj        _        d_        |                    j                   d}7|r+t%          j        d| dd| j        j        | j                   |S )NFTc                t    g | ]4}t           j                                                            |          5S r2   )ospathjoin
get_subdir).0oas     r4   
<listcomp>z2MesonMain._process_script_args.<locals>.<listcomp>   s1    #]#]#]BGLL$C$C#]#]#]r3   z	Calling "zP" with File, CustomTarget, Index of CustomTarget, Executable, or ExternalProgramr   r   )r   r9   r   r   r   rel_to_builddirrE   environment
source_dirr   BuildTargetCustomTargetCustomTargetIndexr   get_outputstargetbuild_by_defaultcommandr   r   rI   r   )r   r   r   script_argsnewr   s        @r4   _process_script_argszMesonMain._process_script_argsp   s     	 	A!S!! ""1%%%%Ax}-- ""1#4#4T5E5Q5\#]#]^^^^A 153EuG^_`` ""#]#]#]#]Q]]__#]#]#]^^^ a!899 .04AH--)-A&&""19--- 	S!1D 1 1 1$*5@QS S S S r3   zmeson.add_install_script)varargsr8   Fr   )defaultsincer:   z0.60.0)r   r;   z1.1.0T.Tuple[T.Union[str, mesonlib.File, build.Executable, ExternalProgram], T.List[T.Union[str, mesonlib.File, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, ExternalProgram]]]kwargs'AddInstallScriptKW'Nonec                   |                      d|d                   }|                     d|d         |          }|d         |_        |d         |_        |d         |_        | j        j                            |           d S )NrL   r   r   r8   r:   r;   )r   r   r8   tagr;   r   install_scriptsr   r   r   r   r   scripts        r4   ro   z#MesonMain.add_install_script_method   s      //0Dd1gNN))*>QUU!'(9!:M*
	*
"))&11111r3   zmeson.add_postconf_scriptkT.Tuple[T.Union[str, mesonlib.File, ExternalProgram], T.List[T.Union[str, mesonlib.File, ExternalProgram]]]'TYPE_kwargs'c                    |                      d|d                   }|                     d|d         |          }| j        j                            |           d S )NrM   r   r   )r   r   r   postconf_scriptsr   r   s        r4   rp   z$MesonMain.add_postconf_script_method   sY     //0EtAwOO))*?a+VV
#**622222r3   zmeson.add_dist_scriptz0.48.0c                   |d         r't          j        dd| j        j        | j                   | j        j        dk    r't          j        dd| j        j        | j                   |                     d|d                   }|                     d|d	         |          }| j        j        	                    |           d S )
Nr   z1Calling "add_dist_script" with multiple argumentsz0.49.0r    z)Calling "add_dist_script" in a subproject0.58.0rK   r   )
r   r   rE   rI   r   r   r   r   dist_scriptsr   r   s        r4   rn   z MesonMain.add_dist_script_method   s     7 	e!"U"*D,<,GRVRce e e e&",,!"M"*D,<,GRVRce e e e//0A47KK))*;T!WkRR
&&v.....r3   T.List['TYPE_var']c                    | j         j        j        }| j         j        }|dk    r|S t          j                            ||          S Nr   )rE   r   r   subdirr   r   r   r   r   r   srcsubs        r4   ru   z#MesonMain.current_source_dir_method   sA     *5%"99Jw||C%%%r3   c                    | j         j        j        }| j         j        }|dk    r|S t          j                            ||          S r   )rE   r   	build_dirr   r   r   r   r   s        r4   rv   z"MesonMain.current_build_dir_method   sA     *4%"99Jw||C%%%r3   c                $    | j         j        j        S N)rE   rN   r   r   r   r   s      r4   rq   zMesonMain.backend_method   s     ',,r3   zmeson.source_rootz0.56.0zFuse meson.project_source_root() or meson.global_source_root() instead.c                $    | j         j        j        S r   rE   r   r   r   s      r4   r   zMesonMain.source_root_method        +66r3   zmeson.build_rootzDuse meson.project_build_root() or meson.global_build_root() instead.c                $    | j         j        j        S r   rE   r   r   r   s      r4   rs   zMesonMain.build_root_method        +55r3   zmeson.project_source_rootc                    | j         j        j        }| j         j        }|dk    r|S t          j                            ||          S r   )rE   r   r   root_subdirr   r   r   r   s        r4   r   z$MesonMain.project_source_root_method   sA     *5*"99Jw||C%%%r3   zmeson.project_build_rootc                    | j         j        j        }| j         j        }|dk    r|S t          j                            ||          S r   )rE   r   r   r   r   r   r   r   s        r4   r   z#MesonMain.project_build_root_method   sA     *4*"99Jw||C%%%r3   zmeson.global_source_rootr   c                $    | j         j        j        S r   r   r   s      r4   r{   z#MesonMain.global_source_root_method  r   r3   zmeson.global_build_rootc                $    | j         j        j        S r   r   r   s      r4   rz   z"MesonMain.global_build_root_method  r   r3   zmeson.has_exe_wrapperr   z(use meson.can_run_host_binaries instead.r7   c                *    |                                  S r   _can_run_host_binaries_implr   s      r4   r|   z MesonMain.has_exe_wrapper_method       //111r3   zmeson.can_run_host_binariesc                *    |                                  S r   r   r   s      r4   rt   z&MesonMain.can_run_host_binaries_method  r   r3   c                    | j         j                                        o0| j         j                                        o| j         j        j        d u  S r   )r   r   r\   need_exe_wrapperexe_wrapper)r   s    r4   r   z%MesonMain._can_run_host_binaries_impl   sN    J"1133 7J"33557J".$6
 	
r3   c                >    | j         j                                        S r   )r   r   r\   r   s      r4   r   zMesonMain.is_cross_build_method'  s     z%44666r3   zmeson.get_compilerT.Tuple[str]
'NativeKW'
'Compiler'c                    |d         }|d         }| j         j        j        |         }	 ||         S # t          $ r) t	          d| d|                                 d          w xY w)Nr   r*   z'Tried to access compiler for language "z", not specified for z	 machine.)rE   r	   	compilersKeyErrorr   get_lower_case_name)r   r   r   cnamefor_machineclists         r4   rw   zMesonMain.get_compiler_method,  s     QX& )3K@	[< 	[ 	[ 	[&  (ZQV  (Z  (Zmx  nM  nM  nO  nO  (Z  (Z  (Z  [  [  [	[s	   1 3A$c                    | j         j        j        j                            t          d                    }|dk    p|dk    o| j                                         S )Nunityonsubprojects)rE   r   r	   optstoreget_value_forr   r]   )r   r   r   optvals       r4   r   zMesonMain.is_unity_method7  sT     !-6?MMiX_N`N`aa~_&M"9"^d>N>\>\>^>^_r3   c                4    | j                                         S r   )rE   r]   r   s      r4   r   zMesonMain.is_subproject_method=  s     --///r3   z!meson.install_dependency_manifestc                *    |d         | j         _        d S )Nr   )r   dep_manifest_namer   s      r4   r~   z,MesonMain.install_dependency_manifest_methodB  s     (,Aw
$$$r3   zmeson.override_find_programz0.46.0GT.Tuple[str, T.Union[mesonlib.File, ExternalProgram, build.Executable]]c                   |\  }}t          |t          j                  r|                    | j        j        j        | j        j        j                  }t          j	        
                    |          st          d| d          t          || j        j        |g          }| j                            ||           d S )NzTried to override z! with a file that does not exist.)r   )r   r   r   absolute_pathrE   r   r   r   r   r   existsr   r   rf   add_find_program_override)r   r   r   r   exeabspaths         r4   r   z&MesonMain.override_find_program_methodG  s     	cc8=)) 	]''(8(D(O(,(8(D(NP PG7>>'** i*+g+g+g+ghhh!$(8(HSZR[\\\C224=====r3   zmeson.override_dependencyr,   z0.54.0%T.Tuple[str, dependencies.Dependency]'FuncOverrideDependency'c                   |\  }}|st          d          t          j        |          }||_        t          d| j        j                  }| j        j        j                            |          }t          |t                    s
J d            |d         }||                     |||d            |dk    r|                     |||d           d S |dk    r|                     |||d	           d S |                     |||d           |                     |||d	           d S |                     |||d d
           |                     ||||           d S )Nz3First argument must be a string and cannot be emptydefault_libraryrH   zfor mypyr,   )r,   TsharedF)r,   
permissive)r   copyr   r   rE   rI   r	   r  r  r   r9   _override_dependency_impl)r   r   r   r   depoptkeyr  r,   s           r4   r   z$MesonMain.override_dependency_methodT  s    	c 	^&'\]]] inn,9I9TUUU*3<JJ6RR/3//;;;;;!> **4fT*JJJ(**..tS&.NNNNN H,,..tS&.OOOOO..tS&.NNN..tS&.OOOOO **4fTVZ*[[[**4fV*LLLLLr3   r  dependencies.Dependencyr+   r  c                   t          j        d|                                          }||d= n||d<   t          j        ||          }|d         }| j        j        |                             |          }	|	rR|rd S d}
t          j	        |	j
        j        |	j
        j                  }t          |
                    ||                    t          j        || j        j                  | j        j        |         |<   d S )NzT.Dict[str, T.Any]r,   r*   zUTried to override dependency {!r} which has already been resolved or overridden at {})Tcastr  r   get_dep_identifierr   dependency_overridesgetr   get_error_location_stringnodefilenamelinenor   formatDependencyOverriderE   r   )r   r   r  r   r,   r  nkwargs
identifierr   overridemr   s               r4   r  z#MesonMain._override_dependency_impl  s     &-v{{}}==>!! &GH!4T7CC
X&:2;?CCJOO 	A gA5hm6LhmNbccH&qxxh'?'?@@@$S$*:*GHH 	
'4Z@@@r3   c                D    | j         j        | j        j                 j        S r   )r   dep_manifestrE   active_projectnamerh   r   s      r4   r   z MesonMain.project_version_method  s     z&t'7'JKSSr3   zmeson.project_license()z0.45.0c                D    | j         j        | j        j                 j        S r   )r   r+  rE   r,  licenser   s      r4   r   z MesonMain.project_license_method  s     z&t'7'JKSSr3   zmeson.project_license_files()T.List[TYPE_var]r#   T.List[mesonlib.File]c                X    d | j         j        | j        j                 j        D             S )Nc                    g | ]
}|d          S )r   r2   )r   ls     r4   r   z:MesonMain.project_license_files_method.<locals>.<listcomp>  s    iii!iiir3   )r   r+  rE   r,  license_filesr   s      r4   r   z&MesonMain.project_license_files_method  s,     jidj5d6F6YZhiiiir3   r   c                >    t          | j        j        j                  S r   )r   rE   r	   rh   r   s      r4   r   zMesonMain.version_method  s     "$"2";"CDDDr3   c                    | j         j        S r   )rE   r,  r   s      r4   r   zMesonMain.project_name_method  s     22r3   propnamefallbackT.Optional[object]machiner
   objectc                    	 | j         j        j        |         |         S # t          $ r. ||cY S t	          d|                                 d|           w xY w)zGShared implementation for get_cross_property and get_external_property.NzUnknown property for z
 machine: )rE   r   
propertiesr   r   r   )r   r7  r8  r:  s       r4   __get_external_property_implz&MesonMain.__get_external_property_impl  s{    	t#/:7CHMM 	t 	t 	t#&'rw?Z?Z?\?\'r'rhp'r'rsss	ts    A(Azmeson.get_cross_propertyz)Use meson.get_external_property() instead)optargs T.Tuple[str, T.Optional[object]]c                N    |\  }}|                      ||t          j                  S r   )&_MesonMain__get_external_property_implr
   HOSTr   r   r   r7  r8  s        r4   rx   z#MesonMain.get_cross_property_method  s)    
 "(008]EWXXXr3   zmeson.get_external_propertyc                F    |\  }}|                      |||d                   S )Nr*   )rB  rD  s        r4   ry   z&MesonMain.get_external_property_method  s+    
 "(008VHEUVVVr3   zmeson.has_external_propertyc                P    |d         }|| j         j        j        |d                  v S )Nr   r*   )rE   r   r=  )r   r   r   	prop_names       r4   r}   z&MesonMain.has_external_property_method  s+     G	D,8CF8DTUUUr3   rJ   r   z0.62.0@T.Tuple[T.Union[str, list, dict, mesonlib.EnvironmentVariables]]'AddDevenvKW'c                    |d         }t          j        |          }|rt          j        d|           t	          ||d         |d                   }t          |t          j                  sJ | j        j        	                    |           d S )Nr   z"add_devenv": r@   rA   )
r   	validatorr   InvalidArgumentsr   r   r   EnvironmentVariablesdevenvr   )r   r   r   envmsg	converteds         r4   rm   zMesonMain.add_devenv_method  s    
 1gs## 	A()?#)?)?@@@-c6(3CVKEXYY	)X%BCCCCC
  +++++r3   zmeson.build_optionsc                J    | j         j        }|dS t          j        |          S r   )rE   user_defined_optionsr	   format_cmd_line_options)r   r   r   optionss       r4   rr   zMesonMain.build_options_method  s*     "7?2/888r3   )r   rD   rE   rF   )r   r9   r   r   r   r   r   r   )r   r9   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r9   )r   r   r   r   r   r7   )r   r7   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r  r   r   r   r   )r   r  r   r  r   r   )F)r   r9   r  r  r   r  r,   r+   r  r7   r   r   )r   r   r   r   r   r   )r   r/  r   r#   r   r0  )r   r   r   r   r   r   )r7  r9   r8  r9  r:  r
   r   r;  )r   r@  r   r   r   r;  )r   r@  r   r   r   r;  )r   r   r   r   r   r7   )r   rH  r   rI  r   r   )Fr.   r/   r0   rj   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r7   r   ro   r   rp   r   rn   r   ru   rv   rq   r   r   rs   r   r   r{   rz   r|   rt   r   r   r   rw   r   r   r~   r   r   
Dependencyr   r  r   r   r   r   r   rB  r   r;  rx   ry   r}   r   r   evolvelistdictrM  rm   rr   __classcell__)r   s   @r4   rC   rC   5   s	       #  #  #  #  #  # J   *# # # #J ^"	hmU-?hmU%68JELcetu  
 \"	#T5III	-#xAAA	)T5@@@	 
2 
2 
2  
2 ^#	hm_-hm_5  
 3 3 3 X 3 ^	hm_-hm_5  
 Z'22/ / / 32 X / & & & X Y& & & & X Y& - - - X Y- *H6~7 7 7 @ X Y7 )85{||6 6 6 }| X Y6 Z+X66& & & 76 X Y& Z*H55& & & 65 X Y& Z*H557 7 7 65 X Y7 Z)8446 6 6 54 X Y6 .:dee2 2 2 fe X Y2 Z-x882 2 2 98 X Y2
 
 
 
 7 7 7 X Y7 ^(#..\&	22[ [ [ 32 /.[ ` ` ` X Y` 0 0 0 X Y0 ^7==/ / / X >=/ Z-x88^13Y^Yi8jkk> > > X lk 98> \#	(T8,H=== 
 ^/l6MNNZ+X66(M (M (M 76 ON (MV PUI I I I I* T T T X YT Z)844T T T X Y 54T Z/99j j j X Y :9j E E E X YE 3 3 3 X Y3t t t t 18=hii^.fXFFFY Y Y X GF ji Y Z-x88^13III\/;;W W W <; JI 98 W Z-x88^1377\/;;V V V <; 87 98V Zh''\-0G0@0Gh0W0W0WXX^L3dH4Q"RSS, , , TS YX (', Z%w//9 9 9 0/ X Y9 9 9 9 9r3   rC   )7
__future__r   r  r   typingr  r   r   r   r   r   r	   r
   rU  r   programsr   r   interpreter.type_checkingr   r   r   r   interpreterbaser   r   r   r   r   r   r   r   r   r   
primitivesr   type_checkingr   r   TYPE_CHECKINGtyping_extensionsr    r!   r   r"   r#   r$   r%   rE   r&   r(   r6   r=   r?   rC   r2   r3   r4   <module>rd     s   # " " " " "  				                               $ $ $ $ $ $       7 7 7 7 7 7 7 7 j j j j j j j j j j j jN N N N N N N N N N N N N N N N N N N N N N N N + * * * * * . . . . . . . .? 44444444$$$$$$77777777222222((((((! ! ! ! ! ! ! !
    Y   ' ' ' ' '9 ' ' '    i   
t9 t9 t9 t9 t9& t9 t9 t9 t9 t9r3   