
    eB                    :   U d dl 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mZmZ 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 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 d	dl m!Z!m"Z"m#Z#m$Z$ e
jJ                  rdd dl&m'Z' ddlm(Z( d	dlm)Z) d	dl*m+Z+ e
jX                  ejZ                  ej\                  e/f   Z0e
jX                  ejb                  e/f   Z2 G d de'      Z3 e"d e!e4e/ejZ                  ejj                  ejl                  ejn                  ejp                  f      g d      Z9de:d<    e"d e!e4e/ejj                  ejl                  ejZ                  f      g d      Z;de:d <   d)d!Z<e G d" d#             Z= G d$ d%      Z> G d& d'e      Z?d*d(Z@y)+    )annotations)defaultdict)	dataclass)PurePathN   )NewExtensionModule
ModuleInfo)ModuleReturnValue   )build)dependencies)mesonlib)mlog)BUILTIN_DIR_OPTIONS)PkgConfigDependencyPkgConfigInterface)D_MODULE_VERSIONS_KWINSTALL_DIR_KWVARIABLES_KWNoneType)
FeatureNewFeatureDeprecated)ContainerTypeInfo	KwargInfotyped_kwargstyped_pos_args)	TypedDict)ModuleState)mparser)Interpreterc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   y)
GenerateKwT.Optional[str]versionnamefilebasedescriptionstrurlT.List[str]subdirs	conflictsbooldataonlyT.List[ANY_DEP]	librarieslibraries_privateWT.List[T.Union[str, build.StaticLibrary, build.SharedLibrary, dependencies.Dependency]]requiresrequires_privateinstall_dirzT.List[T.Union[str, int]]d_module_versionsextra_cflagsT.Dict[str, str]	variablesuninstalled_variablesunescaped_variablesunescaped_uninstalled_variablesN)__name__
__module____qualname____annotations__     >/usr/lib/python3/dist-packages/mesonbuild/modules/pkgconfig.pyr"   r"   ,   sr      !!$$""**iiqq$$44!!##//--)99rB   r"   r0   TdefaultlistifyzKwargInfo[T.List[T.Union[str, dependencies.Dependency, build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]]]_PKG_LIBRARIESr3   zbKwargInfo[T.List[T.Union[str, build.SharedLibrary, build.StaticLibrary, dependencies.Dependency]]]_PKG_REQUIRESc                *    t        | t              sJ | S N)
isinstancer(   )objs    rC   _as_strrM   T   s    c3JrB   c                  :    e Zd ZU ded<   ded<   ded<   dZded<   y	)
MetaDatar(   r&   display_namezmparser.BaseNodelocationFr-   warnedN)r=   r>   r?   r@   rR   rA   rB   rC   rO   rO   Y   s     MFDrB   rO   c                      e Zd ZddZddZddZddZddZddZddZ	ddZ
ddd
Z	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 	 	 	 	 ddZddZddZd dZd!dZd"dZd#dZy	)$DependenciesHelperc                    || _         || _        || _        g | _        g | _        g | _        g | _        g | _        t        t              | _
        g | _        t        j                         | _        y rJ   )stater%   metadatapub_libspub_reqs	priv_libs	priv_reqscflagsr   setversion_reqslink_whole_targetsr   
OrderedSetuninstalled_incdirs)selfrV   r%   rW   s       rC   __init__zDependenciesHelper.__init__c   s`    
	 &(%'')&(#%<G<Luw=E=P=P=R rB   c                    | j                  |d      \  }}}|| j                  z   | _        | xj                  |z  c_        | xj                  |z  c_        y )NT)_process_libsrX   rY   r\   )rb   libsp_libsreqsr\   s        rC   add_pub_libszDependenciesHelper.add_pub_libsp   sG    #11$=f.vrB   c                    | j                  |d      \  }}}|| j                  z   | _        | xj                  |z  c_        y )NF)re   rZ   r[   )rb   rf   rg   rh   _s        rC   add_priv_libsz DependenciesHelper.add_priv_libsv   s8    ,,T59a$..0$rB   c                L    | xj                   | j                  |      z  c_         y rJ   )rY   _process_reqsrb   rh   s     rC   add_pub_reqszDependenciesHelper.add_pub_reqs{   s    ++D11rB   c                L    | xj                   | j                  |      z  c_         y rJ   )r[   rn   ro   s     rC   add_priv_reqsz DependenciesHelper.add_priv_reqs~   s    $,,T22rB   c           	     `   |j                         | j                  v ry | j                  |j                            }|j                  ry t        j                  dt        j
                  |j                        ddt        j
                  |j                        d|j                         d|_        y )NLibraryz|was passed to the "libraries" keyword argument of a previous call to generate() method instead of first positional argument.Addingzto "Requires" field, but this is a deprecated behaviour that will change in a future version of Meson. Please report the issue if this warning cannot be avoided in your case.rQ   T)	get_idrW   rR   r   deprecationboldr%   rP   rQ   )rb   rL   datas      rC   _check_generated_pc_deprecationz2DependenciesHelper._check_generated_pc_deprecation   s    ::<4==(}}SZZ\*;;DIIchh$7 :% '/		$:K:K0LC #'--	1 rB   c                P   g }t        j                  |      D ]
  }t        |t              s+t	        j
                  dd| j                  j                         t        |t        j                  t        j                  t        j                  t        j                  f      rd|j                         | j                  v rH| j                  |       |j!                  | j                  |j                            j"                         t        |t$              rU|j'                         s|j!                  |j(                         | j+                  |j(                  |j,                         Pt        |t              r>| j/                  |      \  }}|j!                  |       | j+                  |||gnd       t        |t0        j2                        r|j'                         st        |t0        j4                        r|j(                  dk(  rt        j6                  d|       |S )z$Returns string names of requirementsz5pkgconfig.generate requirement from non-string object0.46.0Nthreadszjrequires argument not a string, library with pkgconfig-generated file or pkgconfig-dependency object, got )r   rF   rK   r(   r   
single_userV   
subprojectr   CustomTargetCustomTargetIndexSharedLibraryStaticLibraryrw   rW   r{   appendr&   r   foundr%   add_version_reqsr^   split_version_reqr   
DependencyExternalDependencyMesonException)rb   rh   processed_reqsrL   r%   version_reqs         rC   rn   z DependenciesHelper._process_reqs   s   &(##D) 	^Cc3'%%&]_gimisisi~i~3!3!3U5L5LeNaNachcvcv wx

544S9%%dmmCJJL&A&J&JKC!4599;"))#((3))#((C4D4DEC%$($:$:3$?!k%%d+%%d[=T[MZ^_C!8!89#))+C!@!@AchhR[F[-- /UUXT[/] ^ ^)	^. rB   c                T    | xj                   t        j                  |      z  c_         y rJ   )r\   r   stringlistify)rb   r\   s     rC   
add_cflagszDependenciesHelper.add_cflags   s    x--f55rB   Nc                   |D ]b  }|j                         }|j                         D ]=  }t        j                  j	                  ||      }| j
                  j                  |       ? d || j
                  j                  |       y y rJ   )
get_curdirget_incdirsospathjoinra   add)rb   incdirssubdiricurdirdr   s          rC   _add_uninstalled_incdirsz+DependenciesHelper._add_uninstalled_incdirs   sz     	3A\\^F]]_ 3ww||FA.((,,T23	3
 $$((0 rB   c           
        t        j                  |      }g }g }g }|D ]S  }t        |t        j                  t        j
                  t        j                  t        j                  f      rd|j                         | j                  v rH| j                  |       |j                  | j                  |j                            j                         t        |t        j                        r|j                  dk(  rt        |t               rT|j#                         s|j                  |j                         | j%                  |j                  |j&                         >t        |t        j(                        r|j#                         sj|j*                  rt        j,                  d      ||j/                         z  }||j1                         z  }| j3                  |j4                  |j6                  |j8                  |d       | j;                  |j=                                t        |t        j>                        r:|j#                         s2||j/                         z  }||j1                         z  }Zt        |t        j                        rM|j@                  rA|j                  |       | j;                  |j=                         |jC                                t        |t        j                  t        j                  f      r|j                  |       | j;                  |j=                         |jC                                | j3                  |jD                  |jF                  |jH                  t        |t        j                        xr |       zt        |t        j                  t        j
                  f      rc|jK                         st        j,                  d      tM        jN                  dd| jP                  jR                         |j                  |       t        |tT              r|j                  |       *t        j,                  dtW        |      jX                   d	       |||fS )
Nvalgrindz1.pc file cannot refer to individual object files.T)private_external_depsz7library argument contains a not linkable custom_target.z-custom_target in pkgconfig.generate librariesz0.58.0zlibrary argument of type z, not a string, library or dependency object.)-r   rF   rK   r   r   r   r   r   rw   rW   r{   r   r&   r   r   r%   r   r   r   r^   InternalDependencyobjectsr   get_link_argsget_compile_args_add_lib_dependenciesr0   whole_librariesext_depsr   get_include_dirsr   shared_library_only
get_subdirlink_targetsr_   external_depsis_linkable_targetr   r   rV   r   r(   typer=   )rb   rf   publicprocessed_libsr   processed_cflagsrL   s          rC   re   z DependenciesHelper._process_libs   s    % GI&((* 2	LC3!3!3U5L5LeNaNachcvcv wx

544S9%%dmmCJJL&A&J&JKC!@!@AchhR\F\C!4599;"))#((3))#((C4D4DEC!@!@A99;{{&556ijj"c&7&7&99N$(<(<(>>$..s}}c>Q>QSVS_S_ag  @D.  E11#2F2F2HIC!8!8999;"c&7&7&99N$(<(<(>>$C!4!45#:Q:Q %%c*--c.B.B.DcnnFVWC%"5"5u7J7J!KL%%c*--c.B.B.DcnnFVW **3+;+;+.+A+A+.+<+<+5c5;N;N+O+ZTZ\ C%"4"4e6M6M!NO--/"112kll%%&UW_aeakakavavw%%c*C%%%c*--0I$s)J\J\I]  ^J  /K  L  Le2	Lh ~/???rB   c                   |r| j                   n| j                  }|D ]n  }|j                         rSt        |t        j
                  t        j                  t        j                  f      sJ d       | j                  ||       f ||g       p |D ]  }| j                  ||        |r&| j                  t        j                  d|             y  |t        j                  d|             y )Nfor mypyr/   )ri   rl   is_internalrK   r   r   r   r   _add_link_wholeTcast)rb   r   r_   r   r   r   add_libsts           rC   r   z(DependenciesHelper._add_lib_dependencies   s     )/4$$D4F4F 		A }} "!e&9&95;M;MuOfOf%ghtjtth$$Q/!		 $ 	,A  F+	, !qvv&7GHQVV-}=>rB   c                    | j                   j                  |       t        |t        j                        r3| j                  |j                  |j                   |j                  |       y y rJ   )r_   r   rK   r   BuildTargetr   r   r   )rb   r   r   s      rC   r   z"DependenciesHelper._add_link_whole  sP     	&&q)a**+&&q~~q7K7KQ__^de ,rB   c                F    |r| j                   |   j                  |       y y rJ   )r^   update)rb   r%   r^   s      rC   r   z#DependenciesHelper.add_version_reqs  s%     d#**<8	 rB   c                    dD ]@  }|j                  |      }|dkD  s|d| j                         ||d  j                         fc S  |d fS )Nz>=z<=z!=z===><r   )findstrip)rb   sopposs       rC   r   z$DependenciesHelper.split_version_req#  sT    9 	9B&&*CQw3x~~'3488	9 $wrB   c                b    dD ])  }|j                  |      s|dz   |t        |      d  z   c S  |S )Nr    )
startswithlen)rb   vreqr   s      rC   format_vreqzDependenciesHelper.format_vreq*  s=    9 	1Br"Cx$s2wx.00	1 rB   c           	         g }|D ]X  }| j                   j                  |d       }|r2|t        |      D cg c]  }|dz   | j                  |      z    c}z  }S||gz  }Z dj	                  |      S c c}w )Nr   z, )r^   getsortedr   r   )rb   rh   resultr%   vreqsr   s         rC   format_reqszDependenciesHelper.format_reqs1  s      	!D%%))$5E6RW=Y44#:(8(8(>>YY4& 	! yy   Zs   A1c                    t               d fddfd j                  D ]
  } |        t        j                  d	d
d       }t        j                  d	dd       }d	dfd} | j                         _         | j
                  d       _         | j                         _         | j                  d       _        t                | j                         _        y )Nc              3     K   t        | t              r|  y | j                         j                  v r)j                  | j                            j                   | j                          y wrJ   )rK   r(   rw   rW   rP   )xrb   s    rC   _idsz,DependenciesHelper.remove_dups.<locals>._idsA  sO     !S!88:.--
3@@@hhj s   A.A1c                V    d} |       D ]  }|v rd}
j                  |        |S )NFT)r   )r   was_excludedr   r   excludes      rC   _add_excludez4DependenciesHelper.remove_dups.<locals>._add_excludeJ  s:     L!W #<#'LKKN	#
  rB   c                     y rJ   rA   xsrf   s     rC   _fnz+DependenciesHelper.remove_dups.<locals>._fn[  s    EHrB   c                     y rJ   rA   r   s     rC   r   z+DependenciesHelper.remove_dups.<locals>._fn^  s    GJrB   c                    g }| D ]O  }dg}|xr* t        |t              xr |j                  d       xr ||v}|s	 |      r?|j                  |       Q |S )Nz-pthread)-lz-L)rK   r(   r   r   )r   rf   r   r   known_flagscannot_dedupr   s         rC   r   z+DependenciesHelper.remove_dups.<locals>._fna  sx    F 	!  *l#  )
1c(:  )\22 )[(  $Qa 	! MrB   T)r   cT.Union[str, build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary]returnT.Iterable[str])r   r   r   r-   F)r   r*   rf   r-   r   r*   )r   T.List[LIBS]rf   r-   r   r   )r   "T.Union[T.List[str], T.List[LIBS]]rf   r-   r   r   )	r]   r_   r   overloadrY   rX   r[   rZ   r\   )rb   r   r   r   r   r   s   `  @@@rC   remove_dupszDependenciesHelper.remove_dups;  s    !e	!	  (( 	AO	 
H 
H	
J 
J	" DMM*DMM40T^^,T^^T2%$++&rB   )rV   r   r%   r(   rW   zT.Dict[str, MetaData]r   None)rf   r/   r   r   )rh   r2   r   r   )rL   z^T.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary]r   r   )rh   z[T.Sequence[T.Union[str, build.StaticLibrary, build.SharedLibrary, dependencies.Dependency]]r   r*   )r\   r*   r   r   rJ   )r   zT.List[build.IncludeDirs]r   r#   r   r   )rf   r/   r   r-   r   zT.Tuple[T.List[T.Union[str, build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]], T.List[str], T.List[str]]r   )r   z"T.Sequence[build.BuildTargetTypes]r_   zUT.Sequence[T.Union[build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]]r   zT.List[dependencies.Dependency]r   r-   r   r-   r   r   )r   zIT.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary]r   r-   r   r   )r%   r(   r^   zT.Optional[T.List[str]]r   r   )r   r(   r   zT.Tuple[str, T.Optional[str]])r   r(   r   r(   )rh   r*   r   r(   r   r   )r=   r>   r?   rc   ri   rl   rp   rr   r{   rn   r   r   re   r   r   r   r   r   r   r   rA   rB   rC   rT   rT   b   s    S
23"861;@';@15;@ `;@D +0? B? u? ;? 	?
 $(?
 59?4	f9!='rB   rT   c                  0    e Zd ZU  ed      ZdZded<   i Zded<   d3 fdZd4dZ		 	 	 	 	 	 d5d	Z
d6d
Zd7dZ	 	 d8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d9dZ edej                   ej"                  fg       ed ej(                  d      e ed eee      g d       ededd       edeef       ed eee      g dd        ed!eefd" #       edeefd$ #       ed eee      g d       eded%&       edeef       ej(                  d'd()       ej(                  dd()       ej(                  d*ded+i,       ej(                  d-ed+i.      eej)                  d/0      eej)                  d10            	 	 	 	 	 	 d:d2              Z  xZ!S );PkgConfigModule	pkgconfigNz)T.Optional[mesonlib.EnvironmentVariables]devenvz!T.ClassVar[T.Dict[str, MetaData]]	_metadatac                p    t         |           | j                  j                  d| j                  i       y )Ngenerate)superrc   methodsr   r   )rb   	__class__s    rC   rc   zPkgConfigModule.__init__  s.    
 	rB   c                h    | j                   &|j                   j                  | j                          y y rJ   )r   r   )rb   bs     rC   postconf_hookzPkgConfigModule.postconf_hook  s%    ;;"HHOODKK( #rB   c                   t        |t        j                  t        j                  f      rgt        j
                  j                  |j                               }t        j
                  j                  |      d   }|j                  d      r|dd  }|S |j                  s|j                  S |j                  dk(  r*|j                  j                  d      r|j                  dd  S t        |t        j                        r|j                  r|j                  S t        j                   |j#                  |j                  d|j                  |             |j                  S )Nr   lib    name_prefix)rK   r   r   r   r   r   basenameget_filenamesplitextr   name_prefix_setr%   prefixr   import_filenamer   warningformat)rb   lmsgpcfiler  r%   s         rC   
_get_lnamezPkgConfigModule._get_lname  s    a%1153E3EFGww''(89H77##H-a0Du%ABxK  66M 88r>aff//666!": a,,-!2C2C66M 	SZZqvvvFGvvrB   c                f    t        |t              r|j                         }|j                  dd      S )z
        We cannot use quote_arg because it quotes with ' and " which does not
        work with pkg-config and pkgconf at all.
        r   z\ )rK   r   as_posixreplace)rb   values     rC   _escapezPkgConfigModule._escape  s+     eX&NN$E}}S%((rB   c                    t        |      }t        |      }	 |j                  |      }d|z  j                         S # t        $ r |}Y  w xY w)N	${prefix})r   relative_to
ValueErrorr  )rb   r  r   libdirs       rC   _make_relativezPkgConfigModule._make_relative  sW    &!&!	''/F f$..00  	F	s   < A
	A
Fr+   r%   r'   r)   r$   r,   r;   r.   c                   '( j                   j                         }t               }t        j                         D cg c]  }|j
                   }}|s%|ddhz  }|j                  s|j                  r|dhz  }d}d}t               }t               }|
|z   D ]  \  }}||hz  }||hz  } |D ]3  }d| d't        'fd|D              s||v rd}%|s|d	vrd}|d|hz  }5 |r-t        j                  d
dj                  dj                         |r-t        j                  ddj                  j                         rt        j                  j!                  j                   j"                  d      }t        j                  j%                  |      st        j&                  |       t)        j                   j+                               (t)        j                   j-                               }nΉj                   j.                  }t)        t1        |j3                  t5        j6                  d                        (|rt)        |      }|j9                         s(|z  }n5(|j:                  vr't5        j<                  d|j?                          d      t)        dt        j                  jA                  (|            (t        j                  j!                  |      }tC        |dd      5 }|D ]  }|||z
  v s|dk(  r0|jE                  djG                   jI                  (                   @t)        t1        |j3                  t5        j6                  |                        }|jE                  djG                  | jI                  d|z                      r1|s/|jE                  djG                   jI                                     |
s|r|jE                  d       |
D ]5  \  }}|jE                  djG                  | jI                  |                   7 |D ]  \  }}|jE                  | d| d        |jE                  d       |jE                  d| d       tK        |      dkD  r|jE                  d| d       tK        |      dkD  r|jE                  d| d       |jE                  d | d       |jM                  |jN                        } tK        |       dkD  r|jE                  d!|  d       |jM                  |jP                        } tK        |       dkD  r|jE                  d"|  d       tK        |	      dkD  r/|jE                  d#jG                  d$j!                  |	                   d,( fd%}!tK        |j                        dkD  r?|jE                  d&jG                  d$j!                   |!|j                                           tK        |j                        dkD  r?|jE                  d'jG                  d$j!                   |!|j                                           g }"rV|jR                  D ]F  }#d(D ]?  }$ jI                  t)        |$|#      j?                               }%|"jU                  d)|%        A H nJ|D ]E  }#|#dk(  r|"jU                  d*       |"jU                   jI                  t)        d*      |#z               G |"|jV                  D &cg c]  }& jI                  |&       c}&z  }"|"r1|s/|jE                  d+jG                  d$j!                  |"                   d d d        y c c}w c c}&w # 1 sw Y   y xY w)-Nr  
includedirr  Fz${}c              3  @   K   | ]  }|j                          y wrJ   )r   ).0r   optvars     rC   	<genexpr>z;PkgConfigModule._generate_pkgconfig_file.<locals>.<genexpr>  s     <A1<<'<s   T>   r  r  r  z3pkgconfig.generate variable for builtin directoriesz0.62.0z3They will be automatically included when referencedz<pkgconfig.generate implicit variable for builtin directoriesrv   zmeson-uninstalledzfPkgconfig prefix cannot be outside of the prefix when pkgconfig.relocatable=true. Pkgconfig prefix is .z${pcfiledir}wzutf-8)encodingz
prefix={}
z{}={}
r  z
srcdir={}

r   zName: r   zDescription: zURL: z	Version: z
Requires: zRequires.private: zConflicts: {}
r   c           	   3    K   d}g }| D ]  }t        |t              r| r9t        j                  j	                  j
                  j                  |            }n|j                         }|r|d   nd }|du rrt        |t        j                        rjd|j                  v r\t        |t              r<dj                  
j                  
j                  	|            |j                        }nSd|j                  z  }nCt        |t              r1dj                  
j                  
j                  	|                  }nd}||vr|j                  |       | 
j!                  ||      }t        |t        j                        r=|j"                  r1t%        j&                  |j                  |j(                  d	|             t        |t        j*                  t        j,                  f      sd|j                  vsd
|   y w)NzxLibrary target {0!r} has {1!r} set. Compilers may not find it from its '-l{2}' linker flag in the {3!r} pkg-config file.r   Fcsz-r{}/{}z-r${libdir}/%sz-L{}z-L${libdir}name_suffixr   )rK   r(   r   r   dirnamebackendget_target_filename_absget_custom_install_dirr   r   	compilersr  r  r  filenamer   r  name_suffix_setr   r  r%   r   r   )rf   r
  Lflagsr	  r5   _iLflaglnamer  r  rb   rV   uninstalleds           rC   generate_libs_flagszEPkgConfigModule._generate_pkgconfig_file.<locals>.generate_libs_flags  s    /  /A!!S) '*,''//%--:_:_`a:b*cK!"!9!9!;B35"Q%4K&%/$%a):):;@S)+s;(1(8(8dFYFYZ`bmFn9oqrq{q{(|(81::(E)+s;(.dll4CVCVW]_jCk6l(m(5 ."MM%0"'K $3 ? &a):):;@Q@Q LLAFFM5RX)YZ%a%*<*<e>U>U)VW[_ghgrgr[r$&ug,.?/s   G;H Hz	Libs: {}
zLibs.private: {}
)r  z	${srcdir}z-Iz-I${includedir}zCflags: {}
)rf   r   r   r   ),environmentget_coredatar]   r   keysr%   rX   rZ   anyr   r   r   current_noder   r   r   r   	build_direxistsmkdirr   get_build_dirget_source_dirscratch_dirrM   
get_optionr   	OptionKeyis_absoluteparentsr   r  relpathopenwriter  r  r   r   rY   r[   ra   r   r\   ))rb   rV   depsr+   r%   r'   r)   r$   r  r,   r9   r;   r1  r.   pkgrootcoredatareferenced_varsr   optnamesimplicit_vars_warningredundant_vars_warningvarnames
varstringskvoptnameoutdirsrcdirpkgroot_fnameofiledirpathreqs_strr2  r\   r   basedirr   fr  r  s)   ``      `   `                          @@rC   _generate_pkgconfig_filez(PkgConfigModule._generate_pkgconfig_file  s    $$113%$7$<$<$>?qAFF?? ,77O}}H:- %!&5U
 33 	DAqOH1#J	   		;G7)2&F<<<h&-1*  72T#T04-#''::O		; "(()^`h).)9)9;p).););= !!!"`bj"'"2"2U=O=OQ WW\\%"3"3"="=?RSF77>>&) e//==?@Fe//>>@AF&&22Fgh&9&9(:L:LX:V&WXYF#G,++-%/H8#3#33"11 3IIQIZIZI\H]]^3` a a "."''//&(2STVV,%w/ Y	E5# do88(*M$8$8f9M$NO"*783F3FxGYGYZaGb3c+d"eI$4$4Wdll;Y`K`>a$bcd 8M00f1EFG/D!! B1I,,QQ@AB+ *1qc1#RL)*KKKK&b)*;!#mK=;<3x!|eC5O,KK)G9B/0''6H8}q j
"56''7H8}q 0
"=>9~!-44SXXi5HIJ$/ $/L 4==!A%L//9LT]]9[0\]^4>>"Q&077ATUYUcUcAd8efg"$F11 3A#= 3#||HWa,@,I,I,KL4&k233
 ! UACx&78dll8<M3NQR3R&ST	U
 <1t||A<<FhN11#((62BCDsY	E Y	Ek @X =oY	E Y	Es+   ] 1]
?O(]
']?8]
]

]zpkgconfig.generate)optargsz0.43.0)sinceTrD   z0.54.0)rE   r\  r7   z0.42.0)rE   rF   r\  r&   c                    | dk(  rdS d S Nr   zmust not be an empty stringrA   r   s    rC   <lambda>zPkgConfigModule.<lambda>_  s    deikdkC` qu rB   )	validatorc                    | dk(  rdS d S r^  rA   r_  s    rC   r`  zPkgConfigModule.<lambda>`  s    `aeg`g?\ mq rB   r   )rE   r<   z0.59.0)r%   r\  r:   z0.56.0)r%   r\  since_valuesz0.41.0)r\  rc  r1   )r%   r4   c                  ! |j                   }d }d }d }d }dg}	|d   rt        j                  dd|j                         |d   }|j                  }|j
                  dz   |j                  z   }|j                         }
|
rt        |
d   t              rt        j                  j                  |
d   d      }nzd   !t        j                  dd|j                         d	}d
   $t        j                  |j                  d
            d   $t        j                  |j                  d            d   !!rjg }	g d}t        fd|D              rt!        j"                  d|       t        j                  j                  |j$                  j'                         d      }d   xs |	}d   d   n|}d
   d
   n|}t        |t              sJ d       d   d   n|}d   d   n|}d   }d   }d   j)                         }|r|j+                  d|       t-        ||| j.                        }|j1                  |       |j3                  d          |j5                  d          |j7                  d          |j9                  d          d   }|ra|j$                  j:                  j<                  j>                  jA                  d      }|r&|j9                  |jC                  |g g ddd              |jE                          d6!fd} |d         } |d          }|d!z   }d"   xs |x}}|t!        jF                         rt        j                  j                  tI        |j$                  j:                  jK                  t!        jL                  d#                  d$d      }t        j                  j                  d%d$d      }nt!        jN                         rt        j                  j                  tI        |j$                  j:                  jK                  t!        jL                  d#                  d&d'd      }t        j                  j                  d%d&d'd      }nt        j                  j                  tI        |j$                  j:                  jK                  t!        jL                  d(                  d      }t        j                  j                  d)d      }|jK                  d*d+      }| jQ                  |||||||||||d!|r|nd ,       t        jR                  t!        jT                  d-|j$                  jW                         |      g||d |j                  d./      } |d0         } |d1         }|d2z   }| jQ                  |||||||||||d-!3       |r|jY                         | j.                  vr3t[        |||j\                        | j.                  |jY                         <   nt_        j`                  d4t_        jb                  |j                               nq|jd                  D ]b  } t        | t              r| jY                         | j.                  vs1t[        |||j\                        | j.                  | jY                         <   d | jf                  ?ti        jj                  |j$                  t         jl                  jn                  d-5      | _3        tq        ||g      S )7Nr  r   z/pkgconfig.generate optional positional argumentr}   z: r   r$   z+pkgconfig.generate implicit version keywordzopkgconfig.generate: if a library is not passed as a positional argument, the {!r} keyword argument is required.r%   r'   r.   )r0   r1   r4   r7   r+   c              3  (   K   | ]	  }|     y wrJ   rA   )r  rN  kwargss     rC   r  z+PkgConfigModule.generate.<locals>.<genexpr>  s     36!93s   z$Cannot combine dataonly with any of r+   r   r&   r)   r,   r0   r1   r3   r4   r7   r6   r   F)versionsimport_dirsdebugunittestc                    g d}g }| j                         D ]7  \  }}s||v rt        j                  d| d      |j                  ||f       9 |S )N)r  r  r  z
Variable "z" is reserved)itemsr   r   r   )vardictreservedr9   r%   r  r.   s        rC   parse_variable_listz5PkgConfigModule.generate.<locals>.parse_variable_list  sd    9HI&}} 0eDH$4"11JtfM2RSS  $/0 rB   r9   r;   z.pcr5   r  libdataz{prefix}developr   r  z{libdir}relocatable)module)rF  Tdevel)install_tagr:   r<   z-uninstalled.pc)r1  r.   z'Already generated a pkg-config file for)r1  )rm  r8   r   T.List[T.Tuple[str, str]])9project_versionr   r   r   r%   project_namer)  rK   r(   r   r   r   r   InvalidArgumentsr  r6  r   r   r3  get_datadircopyinsertrT   r   ri   rl   rp   rr   r   rG  r*  hostr   get_feature_argsr   
is_freebsdrM   r>  r?  is_haikurZ  DataFileget_scratch_dirrw   rO   r7  r   r  ry   rX   r   r   get_envMachineChoiceHOSTr
   )"rb   rV   argsrf  default_versiondefault_install_dirdefault_descriptiondefault_namemainlibdefault_subdirsr5   r
  blocked_varsr+   r$   r%   r&   r'   r)   r,   r0   rE  	dversionscompilerro  r9   r;   r  rF  pkgroot_namerr  resr   r.   s"      `                             @rC   r   zPkgConfigModule.generateV  s   4  ///3/3(,QU%7!!"SU]_d_o_op1gG"<<L"'"4"4t";gll"J!88:Kz+a.#>&(ggll;q>;&O#i (%%&SU]_d_o_opC f~%,,SZZ-?@@m$,,,SZZ-FGG*% OlL3l33--0TUaTb.cdd"$'',,u/@/@/L/L/NP["\#6'-i'8'D&#/!'!;vf~$$0j0$)/
);)G6*%T/5m/D/Pf]+ViUm;'	
 ;',,.	Q(!%4>>B)$6"567&,-6"456~././	((11;;@@DDSIH 9 9!*2X]^`d!f g 		 ({(;<	1&9N2OPE!!'!6!M:MM,?""$'',,wu/@/@/I/I/T/TU]UgUghpUq/r'su~  AL  M!ww||J	;O""$'',,wu/@/@/I/I/T/TU]UgUghpUq/r'su~  AF  HS  T!ww||J	5+V'',,wu/@/@/I/I/T/TU]UgUghpUq/r's  vA  B!ww||JD&&}[&I%%eT7D+s&-vy)&95(9Dg$ 	& 	P jj(--e.?.?.O.O.QSYZ[]dfrtxz  {K  {K  Y`  a'/F(GH	1&9Z2[\--%%eT7D+s&-vy)&9tV^ 	& 	` ~~t~~53;dE$6$648w~~/0 F		RYR^R^H_`}} <!#s+

DNN0R3; $(:(:4<DNN3::<0< ;;,44U5F5FH^H^HcHcquvDK se,,rB   r   )r   zbuild.Buildr   r   )r	  z^T.Union[build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]r
  r(   r  r(   r   r(   )r  zT.Union[str, PurePath]r   r(   )r  T.Union[PurePath, str]r   r  r   r(   )FFN)rV   r   rE  rT   r+   r*   r%   r(   r'   r(   r)   r(   r$   r(   r  r(   r,   r*   r9   rv  r;   rv  r1  r-   r.   r-   rF  r#   r   r   )rV   r   r  zFT.Tuple[T.Optional[T.Union[build.SharedLibrary, build.StaticLibrary]]]rf  r"   r   r
   )"r=   r>   r?   r	   INFOr   r@   r   rc   r   r  r  r  rZ  r   r   r   r   r   r   evolver   r   r   listr(   r-   r   r   dictrG   rH   r   __classcell__)r   s   @rC   r   r   z  s   k"D 9=F5<35I05)%(-02
)1  NS<@XE*5XE=@XE.1XE8;XEFIXE *-XE :EXE -F	XE
 7PXE /3XE GKXE +:XE FJXEt (E4G4GI\I\3]2^_###(3+0s;RQUV*dEB-#x1."3D#">TX`hi*sHo9uv&3/5qr).tS92tT%b))c8_-!B(S!6hG!8X\^fWgh($9IJ#67"45),}-]}-#}-(9}-- `.}-rB   r   c                    t               S rJ   )r   )interps    rC   
initializer    s    rB   )rL   objectr   r(   )r  r    r   r   )A
__future__r   collectionsr   dataclassesr   pathlibr   r   typingr   r   r   r	   r
   r   r   r   r   rG  r   dependencies.pkgconfigr   r   interpreter.type_checkingr   r   r   r   interpreterbaser   r   interpreterbase.decoratorsr   r   r   r   TYPE_CHECKINGtyping_extensionsr   r   r   interpreterr    Unionr   BuildTargetTypesr(   ANY_DEPLibTypesLIBSr"   r  r   r   r   r   rG   r@   rH   rM   rO   rT   r   r  rA   rB   rC   <module>r     s~   # # !  	  ,      * L d d ; c c??+)ggl--u/E/EsJKG775>>3&'D:Y :. cldS,"9"9"00%2E2E"//1H1HJ K c  `  u~dS%"5"5u7J7JLLcLcde	uq 
   V' V'pp-( p-frB   