
    -Ph2)                       d dl mZ d dlZd dl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 dd	lmZ ej        r&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  G d d          Z G d de          Z  G d de           Z!ej"         G d d                      Z# G d de           Z$ G d de$          Z% G d de$          Z&d/d"Z' G d# d$          Z( G d% d&ej)                  Z* G d' d(ej)                  Z+ G d) d*ej)                  Z, G d+ d,ej)                  Z- G d- d.ej)                  Z.dS )0    )annotationsN   )buildmesonlib)	OptionKey)IncludeDirs)noKwargs	noPosargs)relpathHoldableObjectMachineChoice)ExternalProgram)Interpreter)ProgramVersionFunc)TYPE_varTYPE_kwargs)OverrideProgram)
Dependency)ElementaryOptionValuesc                      e Zd ZdZd;dZd<d=dZddddej        fd>dZ	 	 d?d@d$Z		 	 dAdBd'Z
	 	 	 dCdDd/Zdej        fdEd3Zdej        dfdFd5ZdGd9ZdHd:ZdS )IModuleStatezObject passed to all module methods.

    This is a WIP API provided to modules, it should be extended to have everything
    needed so modules does not touch any other part of Meson internal APIs.
    interpreter'Interpreter'returnNonec                2   || _         |j                                        | _        t	          |j                                        |j                                                  | _        |j        | _        |j        | _        |j	        | _	        |j
        j        | _        |j        | _        |j        j        | _        |j        j        |j                 j        | _        |j        | _        |j        j        | _        |j        j        | _        |j                                        | _        |j                                        | _        |j        j        j        | _        |j        j        j                            |j        i           | _        |j
        | _
        d S N)_interpreterenvironmentget_source_dirsource_rootr   get_build_dirbuild_to_src
subprojectsubdirroot_subdircurrent_nodelinenocurrent_linenor   project_namedep_manifestactive_projectnameversionproject_versionbackendtargetsdataget_headersheadersget_manmanglobal_argshostprojects_argsgetproject_args)selfr   s     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/modules/__init__.py__init__zModuleState.__init__    sP   '&2AACC#K$;$J$J$L$L$/$;$I$I$K$KM M%0!(&2)6=&2'-:*0=k>\]e #*"(0%*	"(4466$,,..&,8='-;@DD[E[]_``'4    -Iinclude_dirs+T.Iterable[T.Union[str, build.IncludeDirs]]prefixstrT.List[str]c                   |sg S | j                                         }| j                                         }g }|D ]}t          |t                    r| | gz  }"|                    fd|                    ||          D                        |                    fd|                                D                        |S )Nc                    g | ]} | 	S  rG   .0irB   s     r<   
<listcomp>z0ModuleState.get_include_args.<locals>.<listcomp>E   s!     _ _ _AFA _ _ _r>   c                    g | ]} | 	S rG   rG   rH   s     r<   rK   z0ModuleState.get_include_args.<locals>.<listcomp>F   s!     U U UAFA U U Ur>   )r   r    r"   
isinstancerC   extendto_string_listget_extra_build_dirs)r;   r@   rB   srcdirbuilddirdirs_strdirss     `    r<   get_include_argszModuleState.get_include_args9   s     	I!0022#1133 "  	W 	WD$$$ W...// _ _ _ _9L9LVU]9^9^ _ _ _``` U U U U9R9R9T9T U U UVVVVr>   TN Fprog=T.Union[mesonlib.FileOrString, T.List[mesonlib.FileOrString]]requiredboolversion_funcT.Optional[ProgramVersionFunc]wantedT.Union[str, T.List[str]]silentfor_machiner   ;T.Union[ExternalProgram, build.Executable, OverrideProgram]c                r    t          |t                    s|g}| j                            ||||||          S )N)rY   r[   r]   r_   r`   )rM   listr   find_program_impl)r;   rW   rY   r[   r]   r_   r`   s          r<   find_programzModuleState.find_programJ   sO    
 $%% 	6D 224(Ye:@]h 3 j j 	jr>   namedepnamevarnameT.Optional[str]?T.Union['build.Executable', ExternalProgram, 'OverrideProgram']c           	        | j                             |gg           }||S | j                            t          j        |          }|t          j        ||          S |                     |dd|          }|	                                rk|j
        dk    r`|                    |          }	|	rHt          |	          }|	                                s#d|d|d|	d	| d
	}
t          j        |
          |S |                     |||          S )NTF)nativerY   r]   	pkgconfig)rm   zDependency z tool variable z contains erroneous value: z:

This is a distributor issue -- please report it to your z
 provider.)rY   r]   )r   program_from_overridesr   lookup_binary_entryr   HOSTr   
from_entry
dependencyfound	type_nameget_variabler   MesonExceptionre   )r;   rf   rg   rh   rY   r]   progobj	prog_listdepvaluemsgs              r<   	find_toolzModuleState.find_toolT   sL    #::D62FFN $889KTRR	 "-dI>>> oogdU6oRR99;; 	3=K77$$w$77E )%00}} 7j j j7 j jin j jV]j j jC"1#666    HHHr>   rl   'Dependency'c                ^    ||d}|r||d<   | j                             | j        |g|          S )N)rl   rY   r-   )r   func_dependencyr'   )r;   rg   rl   rY   r]   kwargss         r<   rr   zModuleState.dependencyo   sC    17X&N&N 	' &F9  001BWIvVVVr>   argsTT.Tuple[str, T.Union[build.Executable, build.Jar, 'ExternalProgram', mesonlib.File]]workdirenv+T.Union[T.List[str], T.Dict[str, str], str]depends6T.List[T.Union[build.CustomTarget, build.BuildTarget]]c                r    |||d}t          |          }| j                            | j        ||           d S )N)r   r   r   )rc   r   	func_testr'   )r;   r   r   r   r   r   	real_argss          r<   testzModuleState.testy   sJ     %$  JJ	##D$5y&IIIIIr>   r$   machiner   c                h    | j         j        j                            t	          |||                    S r   )r   coredataoptstoreget_value_forr   )r;   rf   r$   r   s       r<   
get_optionzModuleState.get_option   s-    (1??	$PZ\c@d@deeer>   langc                J    t          |||          }|| j        j        j        v S r   )r   r   user_defined_optionscmd_line_options)r;   rf   r$   r   r   keys         r<   is_user_defined_optionz"ModuleState.is_user_defined_option   s)     j'22d'<MMMr>   rT   %T.Iterable[T.Union[str, IncludeDirs]]T.Iterable[IncludeDirs]c              #     K   |D ]9}t          |t                    r|V  | j                            |g          V  :dS )zConvert raw include directory arguments to only IncludeDirs

        :param dirs: An iterable of strings and IncludeDirs
        :return: None
        :yield: IncludeDirs objects
        N)rM   r   r   build_incdir_object)r;   rT   ds      r<   process_include_dirsz ModuleState.process_include_dirs   se        	A 	AA![)) A';;QC@@@@@@		A 	Ar>   c                @    | j                             |gd|           d S NT)r   add_languages)r;   r   r`   s      r<   add_languagezModuleState.add_language   s%    ''kBBBBBr>   r   r   r   r   )r?   )r@   rA   rB   rC   r   rD   )rW   rX   rY   rZ   r[   r\   r]   r^   r_   rZ   r`   r   r   ra   )TN)rf   rC   rg   rC   rh   rC   rY   rZ   r]   ri   r   rj   )FTN)
rg   rC   rl   rZ   rY   rZ   r]   ri   r   r}   )NNN)
r   r   r   ri   r   r   r   r   r   r   )rf   rC   r$   rC   r   r   r   r   )
rf   rC   r$   rC   r   r   r   ri   r   rZ   )rT   r   r   r   )r   rC   r`   r   r   r   )__name__
__module____qualname____doc__r=   rU   r   rp   re   r|   rr   r   r   r   r   r   rG   r>   r<   r   r      s~        5 5 5 52    $ '+DH9;E2?2D	j j j j j QU,0I I I I I6 OS-1W W W W W )-@DOSJ J J J J 79,9,>f f f f f CE8E8J7;N N N N NA A A AC C C C C Cr>   r   c                      e Zd ZdZddZdS )ModuleObjectz3Base class for all objects returned by modules
    r   r   c                    i | _         d S r   )methods)r;   s    r<   r=   zModuleObject.__init__   s      	r>   Nr   r   )r   r   r   r   r=   rG   r>   r<   r   r      s2              r>   r   c                      e Zd ZdS )MutableModuleObjectNr   r   r   rG   r>   r<   r   r              Dr>   r   c                  V    e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dS )
ModuleInfozMetadata about a Module.rC   rf   Nri   added
deprecatedFrZ   unstable
stabilized)	r   r   r   r   __annotations__r   r   r   r   rG   r>   r<   r   r      sg          #"III!E!!!!"&J&&&&H"&J&&&&&&r>   r   c                  x     e Zd ZU dZded<   d fdZeedd                        Ze	dd            Z
ddZ xZS )NewExtensionModule=Class for modern modules

    provides the found method.
    r   INFOr   r   c                    t                                                       | j                            d| j        i           d S )Nrs   )superr=   r   updatefound_method)r;   	__class__s    r<   r=   zNewExtensionModule.__init__   sJ    T&
 	 	 	 	 	r>   state'ModuleState'r   T.List['TYPE_var']r   'TYPE_kwargs'rZ   c                *    |                                  S r   )rs   )r;   r   r   r   s       r<   r   zNewExtensionModule.found_method   s     zz||r>   c                     dS r   rG   rG   r>   r<   rs   zNewExtensionModule.found   s    tr>   bbuild.Buildc                    d S r   rG   )r;   r   s     r<   postconf_hookz NewExtensionModule.postconf_hook   s    r>   r   )r   r   r   r   r   r   r   rZ   r   rZ   )r   r   r   r   )r   r   r   r   r   r=   r
   r	   r   staticmethodrs   r   __classcell__r   s   @r<   r   r      s          
          X Y    \       r>   r   c                        e Zd Zd fdZ xZS )ExtensionModuler   r   r   r   c                V    t                                                       || _        d S r   )r   r=   r   )r;   r   r   s     r<   r=   zExtensionModule.__init__   s'    &r>   r   )r   r   r   r=   r   r   s   @r<   r   r      s=        ' ' ' ' ' ' ' ' ' 'r>   r   c                  <     e Zd ZdZd	 fdZed
d            Z xZS )NotFoundExtensionModuler   rf   rC   r   r   c                p    t                                                       t          |          | _        d S r   )r   r=   r   r   )r;   rf   r   s     r<   r=   z NotFoundExtensionModule.__init__   s,    t$$			r>   rZ   c                     dS )NFrG   rG   r>   r<   rs   zNotFoundExtensionModule.found   s    ur>   )rf   rC   r   r   r   )r   r   r   r   r=   r   rs   r   r   s   @r<   r   r      sg         
% % % % % %    \    r>   r   fnamemesonlib.FileOrStringr   rZ   c                @    |                      d          d         }|dv S )z
    Check if the file is a library-like file generated by a module-specific
    target, such as GirTarget or TypelibTarget
    .>   girtypelib)split)r   suffixs     r<   is_module_libraryr      s&    
 [[b!F'''r>   c                      e Zd Zd	dZdS )
ModuleReturnValuereturn_valueT.Optional['TYPE_var']new_objectsCT.Sequence[T.Union['TYPE_var', 'mesonlib.ExecutableSerialisation']]r   r   c                P    || _         t          |t                    sJ || _        d S r   )r   rM   rc   r   )r;   r   r   s      r<   r=   zModuleReturnValue.__init__   s.    (+t,,,,,\gr>   N)r   r   r   r   r   r   )r   r   r   r=   rG   r>   r<   r   r      s.        h h h h h hr>   r   c                      e Zd ZU g Zded<   dS )GResourceTargetrD   source_dirsN)r   r   r   r   r   rG   r>   r<   r   r      s#         !K!!!!!!r>   r   c                      e Zd ZdS )GResourceHeaderTargetNr   rG   r>   r<   r   r     r   r>   r   c                      e Zd ZdS )	GirTargetNr   rG   r>   r<   r   r     r   r>   r   c                      e Zd ZdS )TypelibTargetNr   rG   r>   r<   r   r     r   r>   r   c                      e Zd ZdS )
VapiTargetNr   rG   r>   r<   r   r   
  r   r>   r   )r   r   r   rZ   )/
__future__r   dataclassestypingTrV   r   r   optionsr   r   interpreterbase.decoratorsr	   r
   r   r   r   programsr   TYPE_CHECKINGr   r   interpreter.interpreterr   interpreterbaser   r   r   dependenciesr   r   r   r   r   	dataclassr   r   r   r   r   r   CustomTargetr   r   r   r   r   rG   r>   r<   <module>r      s   # " " " " "                             < < < < < < < < = = = = = = = = = = & & & & & &? 1))))))<<<<<<77777777******))))))000000FC FC FC FC FC FC FC FCP    >   	 	 	 	 	, 	 	 	 ' ' ' ' ' ' ' '       <' ' ' ' '( ' ' '
    0    ( ( ( (h h h h h h h h" " " " "e( " " "	 	 	 	 	E. 	 	 		 	 	 	 	" 	 	 		 	 	 	 	E& 	 	 		 	 	 	 	# 	 	 	 	 	r>   