
    <h_m                    Z   S SK Jr  S SKJr  SSKJrJrJrJr  SSK	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  S SKrS SKrS SKrS SKr \ RB                  (       a  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5      r, " S S\,5      r- " S S\5      r.g)    )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                  P   \ rS rSr% Sr\" SS5      rS\S'   \" SS5      rS\S'   \" SS5      r	S	\S
'   \
SS j5       r\
SS j5       r\
SSS jj5       r\
SSS jj5       r\
 S   SS jj5       rSS jrSS jrS S jr  S!   S"S jjr  S#   S$S jjr    S%S jrS&S jrSrg)'PkgConfigInterface   z/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_machinec                x    [         R                  U   (       a  [        SU S35      eU [         R                  U'   g )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#   )pkg_binfor_machines     ڂ/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/dependencies/pkgconfig.pyset_program_override'PkgConfigInterface.set_program_override$   sD    ((5 #L[M ZT "T U U>E..{;    c                   U R                  5       (       a  UO[        R                  n[        R                  U   nUSL a  [        XU[        R                  U   5      nUR                  5       (       d  SnU(       d2  U(       d+  [        R                  " S[        R                  " S5      5        U[        R                  U'   U$ )z,Return a pkg-config implementation singletonFNFound pkg-config:NO)is_cross_buildr   HOSTr   r!   PkgConfigCLIr#   foundr   logredenvr&   silentimpls       r'   instancePkgConfigInterface.instance+   s     &)%7%7%9%9k}?Q?Q!,,[95=&:L:`:`al:mnD::<<,dhhtn=9=))+6r*   c                   U R                  5       (       a  UO[        R                  n[        R	                  XU5      nU(       au  [        U[        5      (       d`  [        R                  U   nUSL aH  [        XU[        R                  U   5      nUR                  5       (       d  SnU[        R                  U'   [        R                  " SU5      $ )zReturn the CLI pkg-config implementation singleton
Even when we use another implementation internally, external tools might
still need the CLI implementation.
FNT.Optional[PkgConfigCLI])r.   r   r/   r   r8   
isinstancer0   r"   r#   r1   Tcastr4   s       r'   _cliPkgConfigInterface._cli9   s     &)%7%7%9%9k}?Q?Q!**3VD
466%44[ADu}#Cf>P>d>dep>qrzz||DAE"11+>vv0$77r*   c                p    [         R                  X5      nU(       a  UR                  U5      $ [        5       $ N)r   r?   _get_envr   )r5   r&   uninstalledclis       r'   get_envPkgConfigInterface.get_envK   s,     %%c7,/s||K(K5I5KKr*   c                `    [         R                  X5      nU(       a  UR                  X5      $ U $ rB   )r   r?   
_setup_env)environr5   r&   rD   rE   s        r'   	setup_envPkgConfigInterface.setup_envP   s*     !%%c77:s~~g3GGr*   c                    Xl         X l        g rB   r5   r&   )selfr5   r&   s      r'   __init__PkgConfigInterface.__init__V   s    &r*   c                    [         e)z&Return whether pkg-config is supportedNotImplementedErrorrO   s    r'   r1   PkgConfigInterface.foundZ       !!r*   c                    [         e)z*Return module version or None if not foundrS   )rO   names     r'   versionPkgConfigInterface.version^   rW   r*   c                    [         e)zRReturn module cflags
@allow_system: If False, remove default system include paths
rS   )rO   rY   allow_systemdefine_variables       r'   cflagsPkgConfigInterface.cflagsb   s
    
 "!r*   c                    [         e)zReturn module libs
@static: If True, also include private libraries
@allow_system: If False, remove default system libraries search paths
rS   )rO   rY   staticr]   r^   s        r'   libsPkgConfigInterface.libsi   s
     "!r*   c                    [         e)z9Return module variable or None if variable is not definedrS   )rO   rY   variable_namer^   s       r'   variablePkgConfigInterface.variableq   s
     "!r*   c                    [         e)z'Return all available pkg-config modulesrS   rU   s    r'   list_allPkgConfigInterface.list_allv   rW   r*   rN   )r%   r   r&   r   returnNone)r5   r   r&   r   r6   boolrl   zT.Optional[PkgConfigInterface]F)r5   r   r&   r   r6   rn   rl   r;   )r5   r   r&   r   rD   rn   rl   r   )
rJ   r   r5   r   r&   r   rD   rn   rl   r   )r5   r   r&   r   rl   rm   rl   rn   rY   strrl   T.Optional[str]FNrY   rr   r]   rn   r^   r   rl   ImmutableListProtocol[str]FFN
rY   rr   rb   rn   r]   rn   r^   r   rl   rv   rY   rr   rf   rr   r^   r   rl   rs   rl   rv   )__name__
__module____qualname____firstlineno____doc__r   r!   __annotations__r"   r#   staticmethodr(   r8   r?   rF   rK   rP   r1   rZ   r_   rc   rg   rj   __static_attributes__ r*   r'   r   r      s#   9V`afhmVnJSnT^_dfkTlNQlCMdTXCY@YF F   8 8" L L &+H#H0=H H
'"" 6;6:" 3"?Y" JO48"1"=W"""5":I"
"r*   r   c                  `  ^  \ rS rSrSr S   SU 4S jjjrSS jr\" SS9SS j5       r\	SS j5       r
\" SS9  S   SS	 jj5       r\" SS9  S   SS
 jj5       r\" SS9    SS j5       r\" SS9SS j5       r\	SS j5       rSS S jjrS!S jrS"S#S jjrS"S$S jjrSS%S jjrSrU =r$ )&r0   z   zpkg-config CLI implementationNc           	     p  > [         TU ]  X5        U R                  U5        U R                  (       a  U(       d|  [        R
                  " S[        R                  " S5      [        R                  " SU R                  R                  5        S35      [        R                  " U R                  5      5        g g g )Nr,   YES())superrP   _detect_pkgbinpkgbinr   r2   greenboldget_pathbluepkgbin_version)rO   r5   r&   r6   r   	__class__s        r'   rP   PkgConfigCLI.__init__}   s    *F#;;vHH($**U*;TYY4;;K_K_KaJbbcGd=egkgpgpqu  rE  rE  hF  G  &;r*   c                ,    [        U R                  5      $ rB   )rn   r   rU   s    r'   r1   PkgConfigCLI.found   s    DKK  r*   )maxsizec                    [         R                  " SU< SU R                  R                  5       < 35        U R	                  SU/5      u  p#nUS:X  a  U$ S $ )NzDetermining dependency z with pkg-config executable z--modversionr   )r   debugr   r   _call_pkgbin)rO   rY   retrZ   _s        r'   rZ   PkgConfigCLI.version   sX    

,TH4PQUQ\Q\QeQeQgPjkl++^T,BCa(w,,r*   c                p    / nU (       a,  U  H&  nUR                  SSR                  U5      -   5        M(     U$ )Nz--define-variable==)appendjoin)r^   r   pairs      r'   _define_variable_args"PkgConfigCLI._define_variable_args   s3    '

/#((4.@A (
r*   c                   S nU(       a#  [         R                  R                  5       nSUS'   / nXPR                  U5      -  nUSU/-  nU R	                  XTS9u  pgnUS:w  a  [        SU SU S35      eU R                  U5      $ )	N1PKG_CONFIG_ALLOW_SYSTEM_CFLAGSz--cflagsr5   r   zCould not generate cflags for :

)osrJ   copyr   r   r   _split_args)	rO   rY   r]   r^   r5   argsr   outerrs	            r'   r_   PkgConfigCLI.cflags   s     **//#C47C01**?;;T""))$)8#!8%(FtfCPSuTV&WXX$$r*   c                8   S nU(       a#  [         R                  R                  5       nSUS'   / nX`R                  U5      -  nU(       a  UR	                  S5        USU/-  nU R                  XeS9u  pxn	US:w  a  [        SU SU	 S	35      eU R                  U5      $ )
Nr   PKG_CONFIG_ALLOW_SYSTEM_LIBSz--staticz--libsr   r   zCould not generate libs for r   r   )r   rJ   r   r   r   r   r   r   )
rO   rY   rb   r]   r^   r5   r   r   r   r   s
             r'   rc   PkgConfigCLI.libs   s     **//#C25C./**?;;KK
#4  ))$)8#!8%(DTF#cURT&UVV$$r*   c                   / nX@R                  U5      -  nUSU-   U/-  nU R                  U5      u  pVnUS:w  a  [        SU SU S35      eUR                  5       nU(       dF  U R                  SU/5      u  pVn	[        R
                  " SU S3U[        R                  5      (       d  g [        R                  " S	U S
U 35        U$ )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   )
rO   rY   rf   r^   r   r   r   r   rg   r   s
             r'   rg   PkgConfigCLI.variable   s     **?;;.55))$/#!8%(CD6SEQS&TUU99; ++-@$,GHKCa99-2CFF

-m_CzJKr*   c                    U R                  S/5      u  pnUS:w  a  [        SU S35      eUR                  5        Vs/ s H  oDR                  SS5      S   PM     sn$ s  snf )Nz
--list-allr   zcould not list modules:
r    r   )r   r   
splitlinessplit)rO   r   r   r   is        r'   rj   PkgConfigCLI.list_all   sb    ))<.9#!8%(A#b&IJJ,/NN,<=,<qQ",<===s   Ac                .    [         R                  " U 5      $ rB   )shlexr   )cmds    r'   r   PkgConfigCLI._split_args   s     {{3r*   c           	        ^  SU 4S jjnU(       a  U" U5      (       a  g [        T R                  T R                  SST R                  R                  SS9 H  nU" U5      (       d  M    g    S T l        g )Nc                T   > TR                  U 5      nU(       a  U Tl        UTl        gg)NTF)_check_pkgconfigr   r   )potential_pkgbinversion_if_okrO   s     r'   validate-PkgConfigCLI._detect_pkgbin.<locals>.validate   s,     112BCM.&3#r*   z
pkg-configz
Pkg-configF)allow_default_for_cross)r   r   rl   rn   )r   r5   r&   default_pkgconfigr   )rO   r   r   r   s   `   r'   r   PkgConfigCLI._detect_pkgbin   sh    	 hv&& 5dhh@P@PR^`l6:hh6P6Pjo!q())!q r*   c                   UR                  5       (       d%  [        R                  " SUR                  < 35        g SR	                  UR                  5       5      n [        UR                  5       S/-   5      S   nSU;   a  [        R                  " SU< S35        g [        UR                  5       S/-   5      S	S
 u  pEUR                  S	:w  a  [        R                  " SU< S35        g  UR                  5       $ ! [         a    [        R                  " SU< S35         g [         aX    SU< S3nU R                  R                  R                  R                  5       (       d  US-  n[        R                  " U5         g f = f)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.)r1   r   r2   rY   r   get_commandr   
returncodewarningFileNotFoundErrorPermissionErrorr5   machinesbuild
is_windowsr   )rO   r   command_as_stringhelptextpr   msgs          r'   r   PkgConfigCLI._check_pkgconfig   se   ||~~HH7GHHHV%7%7%9:	!&"4"4"6("CDQGHh&,->,AAxyz 2 2 4} DEaJFA||q 01B0EE\]^ ! yy{ ! 	LL:;L:OOqrs 	%&7%::bcC88$$**5577jjLL	s!   AC< AC< <%F#AFFc                8   [        5       n[        SU R                  S9nU R                  R                  R
                  R                  U5      n[        U[        5      (       d   eUS S  nU(       aN  U R                  R                  5       nUb1  [        US5      R                  5       nXu;  a  UR                  SU5        UR                  SU5        U R                  R                  U R                     R                  5       nU(       a  UR                  SU/5        U R                  R                  U R                     R!                  5       n	U	(       a  UR                  SU	5        UR                  S[#        U R$                  R'                  5       5      /5        U$ )	Npkg_config_pathmachinezmeson-uninstalledr   PKG_CONFIG_PATHPKG_CONFIG_SYSROOT_DIRPKG_CONFIG_LIBDIR
PKG_CONFIG)r   r   r&   r5   coredataoptstoreget_value_forr<   listget_build_dirr   as_posixinsertset
propertiesget_sys_rootget_pkg_config_libdirr   r   r   )
rO   rD   r5   keypathlistextra_pathsbpathuninstalled_pathsysrootpkg_config_libdir_props
             r'   rC   PkgConfigCLI._get_env   sG   "$)43C3CD88$$--;;C@(D))))#+A;HH**,E #'/B#C#L#L#N #6&&q*:;!;/((%%d&6&67DDFGG,wi8!%!4!4T5E5E!F!\!\!^!GG')?@y)@)@)BCDE
r*   c                    U R                  U5      nUR                  U5      nUR                  5        H9  u  pEUR                  S5      (       d  M  [        R
                  " SU SU 35        M;     U$ )NPKG_zenv[z]: )rC   rF   items
startswithr   r   )rO   r5   rD   envvarsr   values         r'   rI   PkgConfigCLI._setup_env  s_    --,ooc"))+JC~~f%%

T#c%12 & 
r*   c                @   [        U R                  [        5      (       d   eU=(       d    [        R                  nU R                  U5      nU R                  R                  5       U-   n[        X2S9u  pEnUR                  UR                  5       UR                  5       4$ )Nr   )
r<   r   r   r   rJ   rI   r   r   r   r   )rO   r   r5   r   r   r   r   s          r'   r   PkgConfigCLI._call_pkgbin   sw    $++7777RZZooc"kk%%'$.'5||SYY[#))+55r*   )r   r   rB   )
r5   r   r&   r   r6   rn   r   T.Optional[ExternalProgram]rl   rm   rp   rq   )r^   r   rl   T.List[str]rt   ru   rw   rx   ry   rz   )r   rr   rl   r  )r   r  rl   rm   )r   r   rl   rs   ro   )rD   rn   rl   r   )r5   r   rD   rn   rl   zT.Dict[str, str])r   r  r5   zT.Optional[EnvironOrDict]rl   zT.Tuple[int, str, str])r{   r|   r}   r~   r   rP   r1   r   rZ   r   r   r_   rc   rg   rj   r   r   r   rC   rI   r   r   __classcell__r   s   @r'   r0   r0   z   s-   ' 8<G4G@DG G! t- -
   t5:6:% 3%?Y% % tIN48%1%=W% %  t"5:I $ t> >    
$2.6 6r*   r0   c                     ^  \ rS rSr S   SU 4S jjjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jr\SS j5       rSSSSSSSS.           SS jjrSrU =r$ )PkgConfigDependencyi)  Nc                  > [         T	U ]  [        S5      X#US9  Xl        SU l        [
        R                  U R                  U R                  U R                  5      nU(       dC  SU R                   S3nU R                  (       a  [        U5      e[        R                  " U5        g XPl        U R                  R                  U5      nUc  g Xpl        SU l         U R#                  5         U R%                  5         g ! [         aS  n[        R                  " SU SU 35        U R                  (       a  e / U l        / U l        SU l        Xl         S nAg S nAff = f)	N	pkgconfig)languageFzPkg-config for machine z not found. Giving up.TzPkg-config error with 'z': )r   rP   r	   rY   
is_libtoolr   r8   r5   r&   r6   requiredr   r   r   r	  rZ   is_found
_set_cargs	_set_libscompile_args	link_argsreason)
rO   rY   environmentkwargsr
  r	  r   rZ   er   s
            r'   rP   PkgConfigDependency.__init__+  s   +K8+X`a	&//$:J:JDKKX	+D,<,<+==STC}})#..JJsO"..((.?	 OONN" 	 JJ0c!=>}}$&!!# %	 s    C: :
EA	EEc                    SnUR                  U R                  R                  U R                  U R                  U R
                  5      $ )Nz<{0} {1}: {2} {3}>)formatr   r{   rY   r  version_reqs)rO   ss     r'   __repr__PkgConfigDependency.__repr__O  s9     xx//DMM))+ 	+r*   c           	        U R                   R                  R                  R                  5       (       d  UR	                  5       $ / nU GH7  n[        5       nUR                  S5      (       a  [        USS 5      R                  nSnOUR                  S5      (       a  [        USS 5      R                  nSnOnUR                  S5      (       a  [        U5      R                  nSnO@UR                  S	5      (       d  [        U5      S:  a  US
   S:X  a  UR                  SS5      n[        U5      S
:  a9  [        US
   5      S
:X  a'  WR                  US
   SR                  USS 5      5      nUR                  U5        GM:     U$ )z
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   )r5   r   r   r   r   tupler   r   partslenreplacer  r   r   )rO   r   	convertedargpargstmpls         r'   _convert_mingw_paths(PkgConfigDependency._convert_mingw_pathsT  sB    xx  &&113399;	C',wE~~e$$ QR)//!&& QR)//!$$ ++--#c(Q,3q6S=kk%-5zA~#eAh-1"4kk%(CHHU12Y,?@S!% & r*   c                    SnU R                   S:X  a  SnU R                  R                  U R                  U5      nU R	                  U5      U l        g )NFfortranT)r
  r	  r_   rY   r)  r  )rO   r]   r_   s      r'   r  PkgConfigDependency._set_cargss  sG    ==I%  L&&tyy,? 55f=r*   c           	     (
   [        5       nU R                  U5      nU H  nUR                  S5      (       d  M  UR                  S5      (       a  M3  USS n[        R                  R                  U5      (       d8  [        R                  R                  U R                  R                  5       U5      nUR                  U5        M     U R                  R                  R                  R                  [        SU R                  S95      nU R                  U5      n[        [        [!        U5      U5      5      n[        5       nU R                  U5      n	U	 HR  nUR                  S5      (       a  M  UR                  S5      (       d  M3  USS U;  d  M>  UR                  USS 5        MT     [!        U5      [!        U5      -   n
[        5       n/ n/ nU	 GH  nUR                  S5      (       a  GOUR                  S5      (       a  M4  UR                  S5      (       a  X;   a  MQ  USS nSnU
 HK  n[        R                  R                  UU5      n[        R                  R#                  U5      (       d  MI  Un  O   UcI  X;   a  M  [$        R&                  " S	R)                  XR*                  5      5        UR-                  U5        GOUnGOUR                  S
5      (       a  X;   a  GM  U R.                  (       a4  U R.                  R1                  USS U R                  XR2                  SS9nOSnUb;  UR                  U5        U(       a   US   R                  S
5      (       d  US   nGOlGM  X;   a  GM  U R4                  (       a3  [$        R&                  " SR)                  USS U R*                  5      5        UR-                  U5        GO
UR7                  S5      (       a  U R9                  U5      n[        R                  R                  [        R                  R;                  U5      U5      n[        R                  R#                  U5      (       d>  [        R                  R                  [        R                  R;                  U5      SU5      n[        R                  R#                  U5      (       d  [=        SU S35      eSU l        UnX;   a  GM  UR-                  U5        GM     U(       a  U Vs/ s H  nSU-   PM
     snU-   nX4$ s  snf )a  
@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 pathT) r   r)  r   r   pathisabsr   r5   r   addr   r   	get_valuer   r&   r   r   existsr   r   r  rY   r   clib_compilerfind_librarylibtyperb   endswithextract_libtool_shlibdirnamer   r  )rO   libs_inraw_libs_inprefix_libpathsraw_link_argsr&  r1  r   system_libpaths	full_argslibpaths
libs_foundlibs_notfoundr  liblibfilename	foundnamelibdirtargetr   shared_libname
shared_liblps                          r'   _search_libs PkgConfigDependency._search_libs|  s<   2 ,6<11+> C~~d##CNN;K,L,L12www}}T**77<<(>(>(@$GD##D) !  (,xx'8'8'A'A'K'KIVgqu  rB  rB  MC  (D33OD$]43H/%Z[+5<--g6	C~~.//~~d##AB(F##CG,  (4+@@&0l
	C~~.//%%&& $!!"g 	&FWW\\&+>Fww~~f--$*		 '
 $+  &BBH&V_V_B`b!((-#C%%$%%--::3qr7DHH;C\\NS ; UD  D#NN3' #Aw11$77"&q'C  + {{ &@@Fs12wPTPYPY@Z\!((-e$$!%!;!;C!@WW\\"''//#*>O
ww~~j11!#bggooc.BG^!\Jww~~j11-0I# O= /= > > #' #S!c f  .==_r_=	II'' >s   7Tc                    U R                   R                  U R                  U R                  SS9nU R                   R                  U R                  U R                  SS9nU R	                  X5      u  U l        U l        g )NT)r]   F)r	  rc   rY   rb   rM  r  r?  )rO   rc   raw_libss      r'   r  PkgConfigDependency._set_libs  sf     ~~""499dkk"M >>&&tyy$++E&R-1->->t-N**r*   c                    [        USS9 nU H>  nUR                  5       R                  S5      nUS   U:X  d  M-  US   SS s  sS S S 5        $    S S S 5        g ! , (       d  f       g = f)Nzutf-8)encodingr   r   r   )openr   r   )rO   la_file	fieldnameflinearrs         r'   extract_field!PkgConfigDependency.extract_field  sh    'G,jjl((-q6Y&q6!B<'	 -, -
  -,
 s   ,A	AA
A'c                &    U R                  US5      $ )Ndlnamer[  rO   rV  s     r'   extract_dlname_field(PkgConfigDependency.extract_dlname_field&      !!'844r*   c                &    U R                  US5      $ )NrH  r_  r`  s     r'   extract_libdir_field(PkgConfigDependency.extract_libdir_field)  rc  r*   c                ~   U R                  U5      nUc  gU R                  R                  U R                     R	                  5       (       aT  [
        R                  R                  U5      nU R                  U5      nUc  U$ [
        R                  R                  XC5      $ [
        R                  R                  U5      $ )zG
Returns the path to the shared library
corresponding to this .la file
N)
ra  r5   r   r&   	is_darwinr   r1  basenamere  r   )rO   rV  r^  
dlbasenamerH  s        r'   r:  )PkgConfigDependency.extract_libtool_shlib,  s    
 **73> 88T--.88::))&1J..w7F~!!77<<33 ww''r*   c                     g)Nr	  r   r   r*   r'   	log_triedPkgConfigDependency.log_triedA  s    r*   )cmaker	  
configtoolinternalsystemdefault_valuepkgconfig_definec                   U(       a-   U R                   R                  U R                  X'5      nUb  U$  Ub  U$ [        SU < 35      e! [         a     N f = f)Nz>Could not get pkg-config variable and no default provided for )r	  rg   rY   r   )	rO   ro  r	  rp  rq  rr  rs  rt  rg   s	            r'   get_variable PkgConfigDependency.get_variableE  sm     >>22499iZ'#O ( $  !$bcgbj"kll	 ' s   *A	 	
AA)	r  r  r  r  rY   r	  r?  r  rZ   rB   )
rY   rr   r  r   r  zT.Dict[str, T.Any]r
  rs   rl   rm   )rl   rr   )r   rv   rl   r  )rl   rm   )r<  rv   r=  rv   rl   z!T.Tuple[T.List[str], T.List[str]])rV  rr   rW  rr   rl   rs   )rV  rr   rl   rs   )ro  rs   r	  rs   rp  rs   rq  rs   rr  rs   rs  rs   rt  r   rl   rr   )r{   r|   r}   r~   rP   r  r)  r  rM  r  r[  ra  re  r:  r   rm  rv  r   r  r  s   @r'   r  r  )  s     .2" *" 6:"  " H+
>>V(pO55(*   8<Z^37UY/3VZ=Am!0mCRm,mDSm (;m GJ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   r0   r  r   r*   r'   <module>r     s    #  \ \3 3 3  =    	 	  ??)/)*?[" ["zl6% l6^im, imr*   