
    -Ph_m                    Z   d dl mZ d dl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 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 d dlZd dlZd dlZd dlZ e j!        rd dl"m#Z# ddl$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.dS )    )annotations)Path   )ExternalDependencyDependencyExceptionsort_libpathsDependencyTypeName   )EnvironmentVariables
OrderedSet
PerMachine
Popen_safePopen_safe_loggedMachineChoice	join_argsMesonException)	OptionKey)find_external_programExternalProgram)mlog)PurePath)	lru_cacheN)Literal)ImmutableListProtocol)Environment)EnvironOrDict)PkgConfigDefineTypec                  >   e Zd ZU dZ edd          Zded<    edd          Zded<    edd          Zded	<   e	d/d            Z
e	d0d            Ze	d1d2d            Ze	d1d3d            Ze		 d1d4d            Zd5dZd6d Zd7d$Z	 	 d8d9d)Z	 	 d:d;d+Zd<d-Zd=d.ZdS )>PkgConfigInterfacez/Base class wrapping a pkg-config implementationFzCPerMachine[T.Union[Literal[False], T.Optional[PkgConfigInterface]]]
class_implz=PerMachine[T.Union[Literal[False], T.Optional[PkgConfigCLI]]]class_cli_implNz'PerMachine[T.Optional[ExternalProgram]]pkg_bin_per_machinepkg_binr   for_machiner   returnNonec                n    t           j        |         rt          d| d          | t           j        |<   d S )Nz)Tried to override pkg-config for machine zP but it was already initialized.
pkg-config must be overridden before it's used.)r   r    r   r"   )r#   r$   s     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/pkgconfig.pyset_program_overridez'PkgConfigInterface.set_program_override$   sV    (5 	U  "T[ "T "T "T U U U>E.{;;;    envr   silentboolT.Optional[PkgConfigInterface]c                Z   |                                  r|nt          j        }t          j        |         }|du rrt          | ||t          j        |                   }|                                sd}|s)|s't          j	        dt          j
        d                     |t          j        |<   |S )z,Return a pkg-config implementation singletonFNFound pkg-config:NO)is_cross_buildr   HOSTr   r    PkgConfigCLIr"   foundr   logredr+   r$   r,   impls       r(   instancezPkgConfigInterface.instance+   s     &)%7%7%9%9Qkk}?Q!,[95==[&:L:`al:mnnD::<<  > >,dhtnn===9=)+6r*   T.Optional[PkgConfigCLI]c                   |                                  r|nt          j        }t                              | ||          }|rrt          |t                    s]t          j        |         }|du rGt          | ||t          j        |                   }|	                                sd}|t          j        |<   t          j        d|          S )zReturn the CLI pkg-config implementation singleton
        Even when we use another implementation internally, external tools might
        still need the CLI implementation.
        FNr;   )r2   r   r3   r   r:   
isinstancer4   r!   r"   r5   Tcastr8   s       r(   _clizPkgConfigInterface._cli9   s     &)%7%7%9%9Qkk}?Q!**3VDD 	F
466 	F%4[ADu}}#Cf>P>dep>qrrzz||  DAE"1+>v0$777r*   uninstalledr   c                    t                               | |          }|r|                    |          nt                      S N)r   r@   _get_envr   )r+   r$   rA   clis       r(   get_envzPkgConfigInterface.get_envK   s:     %%c;77,/Ks||K(((5I5K5KKr*   environr   c                l    t                               ||          }|r|                    | |          n| S rC   )r   r@   
_setup_env)rG   r+   r$   rA   rE   s        r(   	setup_envzPkgConfigInterface.setup_envP   s7     !%%c;777:Gs~~g{333Gr*   c                "    || _         || _        d S rC   )r+   r$   )selfr+   r$   s      r(   __init__zPkgConfigInterface.__init__V   s    &r*   c                    t           )z&Return whether pkg-config is supportedNotImplementedErrorrL   s    r(   r5   zPkgConfigInterface.foundZ       !!r*   namestrT.Optional[str]c                    t           )z*Return module version or None if not foundrO   )rL   rS   s     r(   versionzPkgConfigInterface.version^   rR   r*   allow_systemdefine_variabler   ImmutableListProtocol[str]c                    t           )zeReturn module cflags
           @allow_system: If False, remove default system include paths
        rO   )rL   rS   rX   rY   s       r(   cflagszPkgConfigInterface.cflagsb   s
    
 "!r*   staticc                    t           )zReturn module libs
           @static: If True, also include private libraries
           @allow_system: If False, remove default system libraries search paths
        rO   )rL   rS   r]   rX   rY   s        r(   libszPkgConfigInterface.libsi   s
     "!r*   variable_namec                    t           )z9Return module variable or None if variable is not definedrO   )rL   rS   r`   rY   s       r(   variablezPkgConfigInterface.variableq   s
     "!r*   c                    t           )z'Return all available pkg-config modulesrO   rQ   s    r(   list_allzPkgConfigInterface.list_allv   rR   r*   )r#   r   r$   r   r%   r&   )r+   r   r$   r   r,   r-   r%   r.   F)r+   r   r$   r   r,   r-   r%   r;   )r+   r   r$   r   rA   r-   r%   r   )
rG   r   r+   r   r$   r   rA   r-   r%   r   )r+   r   r$   r   r%   r&   r%   r-   rS   rT   r%   rU   FNrS   rT   rX   r-   rY   r   r%   rZ   FFN
rS   rT   r]   r-   rX   r-   rY   r   r%   rZ   rS   rT   r`   rT   rY   r   r%   rU   r%   rZ   )__name__
__module____qualname____doc__r   r    __annotations__r!   r"   staticmethodr)   r:   r@   rF   rJ   rM   r5   rW   r\   r_   rb   rd    r*   r(   r   r      s        99V`V`afhmVnVnJnnnnT^T^_dfkTlTlNllllCM:dTXCYCYYYYYF F F \F    \ 8 8 8 8 \8" L L L L \L &+H H H H \H
' ' ' '" " " "" " " " 6;6:" " " " " JO48" " " " "" " " "
" " " " " "r*   r   c                  x    e Zd ZdZ	 d0d1 fdZd2dZ ed          d3d            Zed4d            Z	 ed          	 	 d5d6d            Z
 ed          	 	 d7d8d            Z ed          d9d            Z ed          d:d             Zed;d"            Zd0d<d#Zd=d%Zd>d?d(Zd>d@d+Zd0dAd/Z xZS )Br4   zpkg-config CLI implementationNr+   r   r$   r   r,   r-   pkgbinT.Optional[ExternalProgram]r%   r&   c           	     j   t                                          ||           |                     |           | j        rq|sqt	          j        dt	          j        d          t	          j        d| j                                         d          t	          j	        | j
                             d S d S d S )Nr0   YES())superrM   _detect_pkgbinrv   r   r6   greenboldget_pathbluepkgbin_version)rL   r+   r$   r,   rv   	__class__s        r(   rM   zPkgConfigCLI.__init__}   s    k***F###; 	Gv 	GH($*U*;*;TYGd4;K_K_KaKaGdGdGd=e=egkgpqu  rE  hF  hF  G  G  G  G  G	G 	G 	G 	Gr*   c                *    t          | j                  S rC   )r-   rv   rQ   s    r(   r5   zPkgConfigCLI.found   s    DK   r*   )maxsizerS   rT   rU   c                    t          j        d|d| j                                                   |                     d|g          \  }}}|dk    r|nd S )NzDetermining dependency z with pkg-config executable z--modversionr   )r   debugrv   r   _call_pkgbin)rL   rS   retrW   _s        r(   rW   zPkgConfigCLI.version   sc    
kTkkQUQ\QeQeQgQgkklll++^T,BCCWa((ww,r*   rY   r   T.List[str]c                n    g }| r0| D ]-}|                     dd                    |          z              .|S )Nz--define-variable==)appendjoin)rY   r   pairs      r(   _define_variable_argsz"PkgConfigCLI._define_variable_args   sK     	B' B B

/#((4..@AAAA
r*   FrX   rZ   c                *   d }|r#t           j                                        }d|d<   g }||                     |          z  }|d|gz  }|                     ||          \  }}}|dk    rt          d| d| d          |                     |          S )	N1PKG_CONFIG_ALLOW_SYSTEM_CFLAGSz--cflagsr+   r   zCould not generate cflags for :

)osrG   copyr   r   r   _split_args)	rL   rS   rX   rY   r+   argsr   outerrs	            r(   r\   zPkgConfigCLI.cflags   s      	8*//##C47C01**?;;;T""))$C)88S#!88%&Wt&W&WPS&W&W&WXXX$$$r*   r]   c                X   d }|r#t           j                                        }d|d<   g }||                     |          z  }|r|                    d           |d|gz  }|                     ||          \  }}}	|dk    rt          d| d|	 d	          |                     |          S )
Nr   PKG_CONFIG_ALLOW_SYSTEM_LIBSz--staticz--libsr   r   zCould not generate libs for r   r   )r   rG   r   r   r   r   r   r   )
rL   rS   r]   rX   rY   r+   r   r   r   r   s
             r(   r_   zPkgConfigCLI.libs   s      	6*//##C25C./**?;;; 	$KK
###4  ))$C)88S#!88%&UT&U&Uc&U&U&UVVV$$$r*   r`   c                   g }||                      |          z  }|d|z   |gz  }|                     |          \  }}}|dk    rt          d| d| d          |                                }|sA|                     d|g          \  }}}	t	          j        d| d|t          j                  sd S t          j        d	| d
|            |S )Nz--variable=r   zCould not get variable for r   r   z--print-variables^$zGot pkg-config variable z : )	r   r   r   stripresearch	MULTILINEr   r   )
rL   rS   r`   rY   r   r   r   r   rb   r   s
             r(   rb   zPkgConfigCLI.variable   s     **?;;;.55))$//S#!88%&TD&T&TS&T&T&TUUU99;;  	++-@$,GHHKCa92-222CFF t
JmJJJJKKKr*   c                    |                      dg          \  }}}|dk    rt          d| d          d |                                D             S )Nz
--list-allr   zcould not list modules:
r   c                F    g | ]}|                     d d          d         S ) r   r   )split).0is     r(   
<listcomp>z)PkgConfigCLI.list_all.<locals>.<listcomp>   s)    ===qQ"===r*   )r   r   
splitlines)rL   r   r   r   s       r(   rd   zPkgConfigCLI.list_all   s^    ))<.99S#!88%&I#&I&I&IJJJ==CNN,<,<====r*   cmdc                *    t          j        |           S rC   )shlexr   )r   s    r(   r   zPkgConfigCLI._split_args   s     {3r*   c                     d
 fd}|r ||          rd S t           j         j        dd j        j        d	          D ]} ||          r d S d  _        d S )Npotential_pkgbinr   r%   r-   c                V                         |           }|r| _        |_        dS dS )NTF)_check_pkgconfigrv   r   )r   version_if_okrL   s     r(   validatez-PkgConfigCLI._detect_pkgbin.<locals>.validate   s8     112BCCM .&3#t5r*   z
pkg-configz
Pkg-configF)allow_default_for_cross)r   r   r%   r-   )r   r+   r$   default_pkgconfigrv   )rL   rv   r   r   s   `   r(   r}   zPkgConfigCLI._detect_pkgbin   s    	 	 	 	 	 	  	hhv&& 	F 5dh@PR^`l6:h6Pjo!q !q !q 	 	x()) r*   r   c                
   |                                 st          j        d|j                   d S d                    |                                          }	 t          |                                dgz             d         }d|v rt          j        d|d           d S t          |                                dgz             d	d
         \  }}|j        d	k    rt          j        d|d           d S nw# t          $ r t          j        d|d           Y d S t          $ rF d|d}| j        j        j                                        s|dz  }t          j        |           Y d S w xY w|                                S )Nz Did not find pkg-config by name r   z--helpr   z	Pure-PerlzFound pkg-config z7 but it is Strawberry Perl and thus broken. Ignoring...z	--versionr   r
   z but it failed when ranzWe thought we found pkg-config z! but now it's not there. How odd!z' but didn't have permissions to run it.zO

On Unix-like systems this is often caused by scripts that are not executable.)r5   r   r6   rS   r   get_commandr   
returncodewarningFileNotFoundErrorPermissionErrorr+   machinesbuild
is_windowsr   )rL   rv   command_as_stringhelptextpr   msgs          r(   r   zPkgConfigCLI._check_pkgconfig   s   ||~~ 	HGGGHHH4HHV%7%7%9%9::	!&"4"4"6"6("CDDQGHh&&y->yyyzzzt 2 2 4 4} DEEacJFAs|q  ]1B]]]^^^t ! ! 	 	 	Lr;Lrrrsss44 	 	 	c&7cccC8$*5577 kjjL44	 yy{{s!   AC: $AC: :"E.AE.-E.rA   r   c                2   t                      }t          d| j                  }| j        j        j                            |          }t          |t                    sJ |d d          }|rW| j        	                                }|<t          |d                                          }||vr|                    d|           |                    d|           | j        j        | j                                                 }|r|                    d|g           | j        j        | j                                                 }	|	r|                    d|	           |                    dt#          | j                                                  g           |S )	Npkg_config_pathmachinezmeson-uninstalledr   PKG_CONFIG_PATHPKG_CONFIG_SYSROOT_DIRPKG_CONFIG_LIBDIR
PKG_CONFIG)r   r   r$   r+   coredataoptstoreget_value_forr=   listget_build_dirr   as_posixinsertset
propertiesget_sys_rootget_pkg_config_libdirr   rv   r   )
rL   rA   r+   keypathlistextra_pathsbpathuninstalled_pathsysrootpkg_config_libdir_props
             r(   rD   zPkgConfigCLI._get_env   s   "$$)43CDDD8$-;;C@@(D)))))#+AAA; 	<H**,,E #'/B#C#C#L#L#N#N #;66&&q*:;;;!;///(%d&67DDFF 	9GG,wi888!%!4T5E!F!\!\!^!^! 	AGG')?@@@y)@)@)B)BCCDEEE
r*   r   T.Dict[str, str]c                    |                      |          }|                    |          }|                                D ]4\  }}|                    d          rt	          j        d| d|            5|S )NPKG_zenv[z]: )rD   rF   items
startswithr   r   )rL   r+   rA   envvarsr   values         r(   rI   zPkgConfigCLI._setup_env  sz    --,,ooc""))++ 	3 	3JC~~f%% 3
1#11%11222
r*   r   T.Optional[EnvironOrDict]T.Tuple[int, str, str]c                >   t          | j        t                    sJ |pt          j        }|                     |          }| j                                        |z   }t          ||          \  }}}|j        |	                                |	                                fS )Nr   )
r=   rv   r   r   rG   rI   r   r   r   r   )rL   r   r+   r   r   r   r   s          r(   r   zPkgConfigCLI._call_pkgbin   s    $+77777RZooc""k%%''$.'5553|SYY[[#))++55r*   rC   )
r+   r   r$   r   r,   r-   rv   rw   r%   r&   rf   rg   )rY   r   r%   r   rh   ri   rj   rk   rl   rm   )r   rT   r%   r   )rv   rw   r%   r&   )rv   r   r%   rU   re   )rA   r-   r%   r   )r+   r   rA   r-   r%   r   )r   r   r+   r   r%   r   )rn   ro   rp   rq   rM   r5   r   rW   rs   r   r\   r_   rb   rd   r   r}   r   rD   rI   r   __classcell__r   s   @r(   r4   r4   z   s       '' 8<G G G G G G G! ! ! ! Yt- - - -
    \ Yt5:6:% % % % % YtIN48% % % % %  Yt   $ Yt> > > >       \ 
    $   2    .    6 6 6 6 6 6 6 6 6r*   r4   c                       e Zd Z	 d)d* fdZd+dZd,dZd-dZd.dZd-dZd/dZ	d0dZ
d0dZd0dZed+d            Zddddddddd1d(Z xZS )2PkgConfigDependencyNrS   rT   environmentr   kwargsT.Dict[str, T.Any]languagerU   r%   r&   c                   t                                          t          d          |||           || _        d| _        t
                              | j        | j        | j	                  }|s7d| j         d}| j
        rt          |          t          j        |           d S || _        | j                            |          }|d S || _        d| _        	 |                                  |                                  d S # t          $ rI}t          j        d| d|            | j
        r g | _        g | _        d| _        || _        Y d }~d S d }~ww xY w)	N	pkgconfig)r   FzPkg-config for machine z not found. Giving up.TzPkg-config error with 'z': )r|   rM   r	   rS   
is_libtoolr   r:   r+   r$   r,   requiredr   r   r   r   rW   is_found
_set_cargs	_set_libscompile_args	link_argsreason)
rL   rS   r   r   r   r   r   rW   er   s
            r(   rM   zPkgConfigDependency.__init__+  st   +K88+vX`aaa	&//$:JDKXX	 	TD,<TTTC} /)#...JsOOOF".((..?F	 OONN" 	  	  	 J===!==>>>}  $&!!# %	 s   (D 
E>EEc                h    d}|                     | j        j        | j        | j        | j                  S )Nz<{0} {1}: {2} {3}>)formatr   rn   rS   r   version_reqs)rL   ss     r(   __repr__zPkgConfigDependency.__repr__O  s2     xx/DM)+ + 	+r*   r   rZ   r   c           	     N   | j         j        j                                        s|                                S g }|D ]g}t                      }|                    d          rt          |dd                   j        }d}n|                    d          rt          |dd                   j        }d}nv|                    d          rt          |          j        }d}nJ|                    d	          st          |          dk    r"|d
         dk    r|
                    dd          }t          |          d
k    rPt          |d
                   d
k    r7|                    |d
         d                    |dd                             }|                    |           i|S )a$  
        Both MSVC and native Python on Windows cannot handle MinGW-esque /c/foo
        paths so convert them to C:/foo. We cannot resolve other paths starting
        with / like /home/foo so leave them as-is so that the user gets an
        error/warning from the compiler/linker.
        z-L/r
   Nz-L{}:/{}z-I/z-I{}:/{}/z{}:/{})-Lz-Ir   :z\ r   )r+   r   r   r   r   tupler   r   partslenreplacer   r   r   )rL   r   	convertedargpargstmpls         r(   _convert_mingw_pathsz(PkgConfigDependency._convert_mingw_pathsT  s    x &1133 	99;;	 	" 	"C',wwE~~e$$ . QRR))/!&& 	. QRR))/!$$ . +-- .#c((Q,,3q6S==kk%--5zzA~~#eAh--1"4"4kk%(CHHU122Y,?,?@@S!!!!r*   c                    d}| j         dk    rd}| j                            | j        |          }|                     |          | _        d S )NFfortranT)r   r   r\   rS   r  r   )rL   rX   r\   s      r(   r   zPkgConfigDependency._set_cargss  sP    =I%%  L&&ty,?? 55f==r*   libs_inraw_libs_in!T.Tuple[T.List[str], T.List[str]]c                	   t                      }|                     |          }|D ]}|                    d          r|                    d          su|dd         }t          j                            |          s7t          j                            | j                                        |          }|	                    |           | j        j
        j                            t          d| j                            }|                     |          }t          t          t!          |          |                    }t                      }|                     |          }	|	D ]V}|                    d          r|                    d          r)|dd         |vr|	                    |dd                    Wt!          |          t!          |          z   }
t                      }g }g }|	D ]}|                    d          rn|                    d          r0|                    d          r||v rJ|dd         }d}|
D ]E}t          j                            ||          }t          j                            |          r|} nF|I||v rt%          j        d	                    || j                             |                    |           n|}n|                    d
          r||v r| j        r2| j                            |dd         | j        |
| j        d          }nd}|>|	                    |           |r%|d                             d
          s|d         }n`||v r| j        r5t%          j        d                    |dd         | j                             |                    |           n|                    d          r|                     |          }t          j                            t          j                            |          |          }t          j                            |          s>t          j                            t          j                            |          d|          }t          j                            |          st=          d| d          d| _        |}||v r|                    |           |rd |D             |z   }||fS )aQ  
        @libs_in: PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 pkg-config --libs
        @raw_libs_in: pkg-config --libs

        We always look for the file ourselves instead of depending on the
        compiler to find it with -lfoo or foo.lib (if possible) because:
        1. We want to be able to select static or shared
        2. We need the full path of the library to calculate RPATH values
        3. De-dup of libraries is easier when we have absolute paths

        Libraries that are provided by the toolchain or are not found by
        find_library() will be added with -L -l pairs.
        r  )z-L-lz-L-Lr
   Nr   r   z-l:   zJLibrary {!r} not found for dependency {!r}, may not be successfully linkedz-lF)lib_prefix_warningr   zOStatic library {!r} not found for dependency {!r}, may not be statically linkedz.laz.libszGot a libtools specific "zD" dependenciesbut we could not compute the actual sharedlibrary pathTc                    g | ]}d |z   S )r  rt   )r   lps     r(   r   z4PkgConfigDependency._search_libs.<locals>.<listcomp>  s    ===r===r*   ) r   r  r   r   pathisabsr   r+   r   addr   r   	get_valuer   r$   r   r   existsr   r   r   rS   r   clib_compilerfind_librarylibtyper]   endswithextract_libtool_shlibdirnamer   r   )rL   r  r  prefix_libpathsraw_link_argsr  r  r   system_libpaths	full_argslibpaths
libs_foundlibs_notfoundr   liblibfilename	foundnamelibdirtargetr   shared_libname
shared_libs                         r(   _search_libsz PkgConfigDependency._search_libs|  sH   2 ,6<<11+>>  	* 	*C~~d## *CNN;K,L,L *122ww}}T** H7<<(>(>(@(@$GGD##D))) (,x'8'A'K'KIVgqu  rB  MC  MC  MC  (D  (D33ODD$]43H3H/%Z%Z[[+5<<--g66	 	- 	-C~~.// ~~d## -ABB(F(F##CG,,,((4+@+@@&0ll
	 Q	" Q	"C~~.// O%% L&& I *$$!!""g 	&  FW\\&+>>Fw~~f-- $*	 $m++  &BBH&VZV_B`B`b b b!((----#CC%% 1*$$%  -::3qrr7DH;CT\NS ; U UDD  D#NN3'''  !#Aw11$77 *"&q'C  m++ { \ &@@Fs122wPTPY@Z@Z\ \ \!((----e$$ !%!;!;C!@!@W\\"'//#*>*>OO
w~~j11 ]!#bgooc.B.BG^!\!\Jw~~j11 >- /=# /= /= /= > > > #' )##S!!!! 	J >=_===	II-''r*   c                    | j                             | j        | j        d          }| j                             | j        | j        d          }|                     ||          \  | _        | _        d S )NT)rX   F)r   r_   rS   r]   r3  r   r&  )rL   r_   raw_libss      r(   r   zPkgConfigDependency._set_libs  sk     ~""49dk"MM >&&ty$+E&RR-1->->tX-N-N****r*   la_file	fieldnamec                   t          |d          5 }|D ]S}|                                                    d          }|d         |k    r|d         dd         c cd d d            S T	 d d d            n# 1 swxY w Y   d S )Nzutf-8)encodingr   r   r   )openr   r   )rL   r6  r7  flinearrs         r(   extract_fieldz!PkgConfigDependency.extract_field  s    'G,,, 	( ( (jjll((--q6Y&&q6!B$<''		( 	( 	( 	( 	( 	( 	( 	( '(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
 ts   A	A6(A66A:=A:c                .    |                      |d          S )Ndlnamer?  rL   r6  s     r(   extract_dlname_fieldz(PkgConfigDependency.extract_dlname_field&      !!'8444r*   c                .    |                      |d          S )Nr/  rB  rC  s     r(   extract_libdir_fieldz(PkgConfigDependency.extract_libdir_field)  rE  r*   c                t   |                      |          }|dS | j        j        | j                                                 rXt
          j                            |          }|                     |          }||S t
          j        	                    ||          S t
          j                            |          S )z_
        Returns the path to the shared library
        corresponding to this .la file
        N)
rD  r+   r   r$   	is_darwinr   r  basenamerG  r   )rL   r6  rA  
dlbasenamer/  s        r(   r#  z)PkgConfigDependency.extract_libtool_shlib,  s    
 **733>4 8T-.88:: 	4))&11J..w77F~!!7<<
333 w'''r*   c                     dS )Nr   rt   rt   r*   r(   	log_triedzPkgConfigDependency.log_triedA  s    {r*   )cmaker   
configtoolinternalsystemdefault_valuepkgconfig_definerN  r   rO  rP  rQ  rR  rS  r   c                   |r7	 | j                             | j        ||          }||S n# t          $ r Y nw xY w||S t          d|           )Nz>Could not get pkg-config variable and no default provided for )r   rb   rS   r   )	rL   rN  r   rO  rP  rQ  rR  rS  rb   s	            r(   get_variablez PkgConfigDependency.get_variableE  s      	>2249iIYZZ'#O (&   $  !"kcg"k"kllls   $* 
77rC   )
rS   rT   r   r   r   r   r   rU   r%   r&   )r%   rT   )r   rZ   r%   r   )r%   r&   )r  rZ   r  rZ   r%   r  )r6  rT   r7  rT   r%   rU   )r6  rT   r%   rU   )rN  rU   r   rU   rO  rU   rP  rU   rQ  rU   rR  rU   rS  r   r%   rT   )rn   ro   rp   rM   r  r  r   r3  r   r?  rD  rG  r#  rs   rM  rU  r   r   s   @r(   r   r   )  sd        .2"  "  "  "  "  "  " H+ + + +
   >> > > >V( V( V( V(pO O O O   5 5 5 55 5 5 5( ( ( (*    \ 8<Z^37UY/3VZ=Am m m m m m m m m mr*   r   )/
__future__r   pathlibr   baser   r   r   r	   mesonlibr   r   r   r   r   r   r   r   optionsr   programsr   r    r   r   	functoolsr   r   r   r   typingr>   TYPE_CHECKINGtyping_extensionsr   _typingr   r   r   
utils.corer   interpreter.type_checkingr   r   r4   r   rt   r*   r(   <module>rd     sM   # " " " " "       \ \ \ \ \ \ \ \ \ \ \ \3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3       = = = = = = = =                   				 				     ? @))))))//////))))))******??????[" [" [" [" [" [" [" ["zl6 l6 l6 l6 l6% l6 l6 l6^im im im im im, im im im im imr*   