
    eu                    T   d dl mZ ddlmZmZmZ ddlmZ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Zd d	lmZ d dlZd dlZd dlZd dlZd dlZd dl Z!e!jD                  rdd
lm#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)  G d de!jT                        Z+ G d de      Z, G d d      Z-y)    )annotations   )ExternalDependencyDependencyExceptionDependencyTypeName   )
is_windowsMesonException
PerMachinestringlistifyextract_as_list)CMakeExecutorCMakeTraceParserCMakeExceptionCMakeToolchainCMakeExecScopecheck_cmake_argsresolve_cmake_trace_targetscmake_is_debug)mlogN)Path)CMakeTarget)Environment)MachineInfo)PkgConfigDefineTypec                  6    e Zd ZU ded<   ded<   ded<   ded<   y)	CMakeInfoT.List[str]module_pathsstr
cmake_rootarchscommon_pathsN)__name__
__module____qualname____annotations__     ?/usr/lib/python3/dist-packages/mesonbuild/dependencies/cmake.pyr   r   #   s    Or)   r   c                      e Zd ZU  edd      Zded<   dZg dZdZded<   ddZ	dd	Z
dd
Zd dZd dZd!dZd"d# fdZddZd$dZe ej(                  d      d%d              Ze ej(                  d      d&d              Zd'dZd(dZd)dZd*dZ	 d+	 	 	 	 	 	 	 d,dZedd       ZddZddddddd	 	 	 	 	 	 	 	 	 d-dZ xZS ).CMakeDependencyNz!PerMachine[T.Optional[CMakeInfo]]class_cmakeinfoz>=3.4) NinjazUnix MakefileszVisual Studio 10 2010T.Optional[str]class_working_generatorc                8    t        d| j                   d|       S )NzDependency z not found: )r   name)selfmsgs     r*   _gen_exceptionzCMakeDependency._gen_exception3   s    "[<u#MNNr)   c                     y)NCMakeLists.txtr(   r4   s    r*   _main_cmake_filez CMakeDependency._main_cmake_file6   s    r)   c                    g S Nr(   r9   s    r*   _extra_cmake_optsz!CMakeDependency._extra_cmake_opts9   s    	r)   c                    |S r<   r(   r4   modules
componentss      r*   _map_module_listz CMakeDependency._map_module_list<   s	     r)   c                    |S r<   r(   r?   s      r*   _map_component_listz#CMakeDependency._map_component_listE   s
     r)   c                    |S r<   r(   )r4   modules     r*   _original_module_namez%CMakeDependency._original_module_nameM   s	     r)   c                   g | _         ||rd }|j                  dd      r!|j                  j                  j                  }n |j                  j                  j
                  }g d}| xj                   |D cg c]	  }||v s| c}z  c_         n| xj                   |gz  c_         d| j                   v r| xj                   dgz  c_         t        t        | j                               | _         t        | %  t        d      |||       || _        d| _        d | _        d | _        |j                  | _        g | _        d | _        t'        |t(        j*                  | j,                  | j.                        | _        | j                  j1                         sDd | _        d	| j,                   d
}	| j2                  rt5        |	      t7        j8                  |	       y t;        | j                  j=                         | j?                         | j@                        | _        tC        tE        |d            }
tG        |
      }
t(        jH                  | j,                     ,| jK                  |
      t(        jH                  | j,                  <   t(        jH                  | j,                     | _        | j                  | jM                  d      |j                  dd      }tO        |tP              st5        d      tC        tE        |d            D cg c]  }|df }}tC        tE        |d            D cg c]  }|df }}|tC        tE        |d            D cg c]  }|df c}z  }tC        tE        |d            }|D cg c]Q  }tR        jT                  jW                  |      r|n-tR        jT                  jY                  |j[                         |      S }}|r#|
j]                  ddjY                  |      z          | j_                  ||| j                  ja                         |jb                  | j,                           st7        j8                  d       y | je                  |||||
       y c c}w c c}w c c}w c c}w c c}w )NnativeF)ccppfortranobjcobjcxxrL   rJ   cmake)language)silentzCMake binary for machine z not found. Giving up.
cmake_argsz)Unable to obtain CMake system informationcmake_package_versionr.   z1Keyword "cmake_package_version" must be a string.rA   Tr@   optional_modulescmake_module_pathz-DCMAKE_MODULE_PATH=;z)Preliminary CMake check failed. Aborting.)3language_listgetcoredata	compilersbuildhostlistsetsuper__init__r   r3   
is_libtoolcmakebin	cmakeinfoscratch_dircmake_root_dirfound_modulestraceparserr   r,   class_cmake_versionfor_machinerQ   foundrequiredr   r   debugr   version_get_build_direnvr   r   r   r-   _get_cmake_infor6   
isinstancer    ospathisabsjoinget_source_dirappend_preliminary_find_checkget_cmake_prefix_pathsmachines_detect_dep)r4   r3   environmentkwargsrP   force_use_global_compilersrZ   
candidatesxr5   cm_argspackage_versionrA   r@   cm_path	__class__s                  r*   r`   zCMakeDependency.__init__R   s   *,9Izz(E*'00::@@	'00::??	BJj"KAN1"KK8*, ***3%' "#d&8&8"9:+G4k6T\]	 5904 *55 +- :> &k?3V3VX\XhXhquq|q|}}}""$ DM-d.>.>-??UVC}})#..JJsO ,DMM,A,A,CTEXEXEZ\`\d\de EF"7+**4+;+;<D@D@T@TU\@]O++D,<,<=(889I9IJ>>!%%&QRR **%<bA/3/%&YZZ)6v|7\)]^Aq$i^
^&3OFI4V&WXAt9XXofN`6a(bc1QJcc8K LMelm`aa(1bggll;;U;U;WYZ.[[mmNN1CHHW4EEF++D'4==;_;_;acncwcwx|  yI  yI  dJ  KJJBCWM #Lj _Xcms%   6	Q# Q#Q()Q-Q27AQ7c           	         d| j                   j                   d| j                   d| j                   d| j                   d	S )N< z: >)r   r$   r3   is_foundversion_reqsr9   s    r*   __repr__zCMakeDependency.__repr__   s>    4>>**+1TYYKr$--$J[J[I\\]^^r)   c           
     f   t        j                  d       g }t        j                  |t        j                  gz  }|t        j                  z  }t        | j                  j                         | j                         | j                        }t        | j                  | j                  | j                  t        j                  | j                               }|j                          |D ]  }t        j                  dj                  t!        |      dkD  r|nd             |j#                         |j%                         z   dgz   }||z  }t!        |      dkD  rd|g|z   }| j'                  |d      \  }}}	|dk(  r|t        _         n9t        j                  d| d	|        t        j                  d
| d|	 d        dk7  ry 	 |j)                  	       dd}
 |
|j-                  d            }|j/                   |
|j-                  d                   t1        |      }|D cg c]$  }t2        j4                  j7                  |      s#|& }} |
|j-                  d            }g }|D cg c]  }t9        |       c}D ]V  }|D cg c]  }t9        |       c}D ]8  }|j;                  t=        ||j?                  |j@                        z               : X t1        |jC                  |            }|D cg c]$  }t2        j4                  j7                  |      s#|& }}|j-                  d      }g d}|D ]&  }|t2        j4                  jE                  d|      gz  }( tG        ||j-                  d      d   ||      }t        j                  d|jH                          t        j                  d|jJ                          t        j                  d|jL                          t        j                  d|jN                          |S # t*        $ r Y y w xY wc c}w c c}w c c}w c c}w )Nz"Extracting basic cmake informationTry CMake generator: {}r   auto.-GzCMakePathInfo.txtz8CMake failed to gather system information for generator  with error code OUT:



ERR:


c                   t               r-| D cg c]!  }|j                  t        j                        # }}n#| D cg c]  }t	        j                  d|       }}|D cg c]  }|D ]  }|  }}}t        |      S c c}w c c}w c c}}w )Nz:|;)r	   splitrr   pathseprer^   )lr   tmpsublist	flatteneds        r*   process_pathsz6CMakeDependency._get_cmake_info.<locals>.process_paths   s}    |456qqwwrzz*66 566qrxx*66*-?ww?!??I?y>! 7 7?s   &A>B BMESON_FIND_ROOT_PATHMESON_CMAKE_SYSROOTMESON_PATHS_LISTMESON_ARCH_LIST)liblib32lib64libx32sharer.   r   MESON_CMAKE_ROOT)r   r!   r"   r#   z  -- Module search paths:    z  -- CMake root:             z  -- CMake architectures:    z  -- CMake lib search paths: )r   r   returnz
T.Set[str])(r   rl   r,   r1   class_cmake_generatorsr   rb   rm   rn   ro   r   ri   r   
DEPENDENCYwriteformatlen
trace_argsget_cmake_args_call_cmakeparser
   get_cmake_varupdatesortedrr   rs   isdirr   rw   r    relative_toanchorunionru   r   r   r!   r"   r#   )r4   r   gen_listtemp_parser	toolchaini
cmake_optsret1out1err1r   root_paths_set
root_pathsr   module_paths_setrooted_pathsjpr   r"   r#   ress                         r*   rp   zCMakeDependency._get_cmake_info   s   

78 22>@@AAHO:::&t}}'<'<'>@S@S@UW[W_W_`"4==$((D<L<LnNgNgimi|i|i~	 	>AJJ077SVaZVTU %//1I4L4L4NNRUQVVJ'!J1vz"AY3
  $//
<OPD$ qy:;7JJQRSQTTefjeklmJJv\$t<=%	>* 19	d#	" '{'@'@AW'XYmK,E,EF[,\]^N+
!+@Arww}}Q/?a@
@()B)BCU)VW$&#-.a$q'. 	FA'78!d1g8 F##CAMM!((,C(C$DEF	F .44\BC#/Da277==3CDD))*;<G 	5ARWW\\%344L	5 %"001CDQG%	
 	

233C3C2DEF

23>>2BCD

2399+>?

233C3C2DEF
W  		" A /8 Es6   P &$PP.P$
P):$P.P.	PP)maxsizec                    	 t        d t        j                  |       D              S # t        $ r t               cY S w xY w)Nc              3  R   K   | ]  }|t        |      j                         f ! y wr<   )r    lower).0r   s     r*   	<genexpr>z2CMakeDependency._cached_listdir.<locals>.<genexpr>   s     G!SV\\^,Gs   %')tuplerr   listdirOSErrorrs   s    r*   _cached_listdirzCMakeDependency._cached_listdir   s7    	Gbjj6FGGG 	7N	s   $' ==c                `    	 t         j                  j                  |       S # t        $ r Y yw xY wNF)rr   rs   r   r   r   s    r*   _cached_isdirzCMakeDependency._cached_isdir   s,    	77==&& 		s   ! 	--c           
     0    t              j                         d fdd fd}|t        j                  j	                   j
                  j                  d      gz   D ]  } |      s y |D ]  } ||      s y g }t        j                  j                  dd      j                  t        j                        D ]V  }|j                  d      s|j                  d      r|d d	 }|j                  d
      s|j                  d      r|d d }||gz  }X  j
                  j                  |z   D ]  } |      r y ||      r y j                  |      }t        fd|D              }|D ].  }	 |t        j                  j	                  ||	d               s-  y |j                         s d dfD ]j  }
|D ]c  }	|	d   |
k7  r t        j                  j	                  ||	d   d            s+ t        j                  j	                  ||	d   d            sa   y l  t        j                  j                   d      }|r	 |      ryt!        j"                         dz  dz  }|z  |z  fD ]  }|j%                         s y y)Nc                r   | t         j                  j                  | d      t         j                  j                  | d      fD ]l  }j                  |      sj	                  |      }g dD cg c]!  }|j                        j                         # c}t        fd|D              sl y yc c}w )NrO   CMake)zFind{}.cmakez{}Config.cmakez{}-config.cmakec              3  ,   K   | ]  }|d    v   ywr   Nr(   )r   r   r   s     r*   r   zOCMakeDependency._preliminary_find_check.<locals>.find_module.<locals>.<genexpr>  s     ;aqtz);s   TF)rr   rs   ru   r   r   r   r   any)rs   r   contentr   r   r3   r4   s       @r*   find_modulez<CMakeDependency._preliminary_find_check.<locals>.find_module  s    BGGLLw7dG9TU 	 ))!, ..q1R
>HIahhtn224I
;7;;	   Js   2&B4c           	        j                   j                  D cg c]"  }t        j                  j	                  | |      $ c}D ]  }j                  |      st        j                  j	                  |d      }j                  |      rXj                  |      }t        fd|D              }|D ].  } t        j                  j	                  ||d               s-  y j                  |      }t        fd|D              }|D ].  } t        j                  j	                  ||d               s-  y  yc c}w )NrO   c              3  L   K   | ]  }|d    j                        s|  ywr   
startswithr   r   lnames     r*   r   zSCMakeDependency._preliminary_find_check.<locals>.search_lib_dirs.<locals>.<genexpr>"  s      #Q!!A$//%:PA#Q   $$r   Tc              3  L   K   | ]  }|d    j                        s|  ywr   r   r   s     r*   r   zSCMakeDependency._preliminary_find_check.<locals>.search_lib_dirs.<locals>.<genexpr>*  s      Maadooe6LMr   F)rc   r#   rr   rs   ru   r   r   r   )	rs   r   r   cm_dirr   kr   r   r4   s	         r*   search_lib_dirsz@CMakeDependency._preliminary_find_check.<locals>.search_lib_dirs  s   59^^5P5PQbggll4+Q $))!, a1%%f-"226:G##Qw#QQG$ (&rww||FAaD'AB#'( ..q1M7MM  $A"277<<1Q4#89#$#$* + Rs   'D=ModulesTPATHr.   z/binz\binz/sbinz\sbinc              3  L   K   | ]  }|d    j                        s|  ywr   r   r   s     r*   r   z:CMakeDependency._preliminary_find_check.<locals>.<genexpr>M  s      I!!A$//%2HAIr   r   z
.frameworkz.appr   	ResourcesVersion_DIRz.cmakepackagesFrs   r    r   bool)r    r   rr   rs   ru   rc   r!   environrX   r   r   endswithr   r   r   	is_darwinr   homeexists)r4   r3   module_pathprefix_pathmachiner   r   
system_envr   r   r   env_path	linux_regr   r   r   s   ``            @@r*   rx   z'CMakeDependency._preliminary_find_check  sz   D	!		2 T^^-F-F	 RSS 	A1~	
  	Aq!	
 #%
+11"**= 	Azz&!QZZ%8crFzz'"ajj&:crF1#J	 ,,z9 	(A1~q!**1-GIwIIG  "277<<1Q4#89 
   ""G:.5'? (A$ (Q419$&rww||Aqt['IJkZ\ZaZaZfZfghjklmjnpyZzN{#'	((	(. ::>>TF$-0H- IIK(*Z7	d"I$56 	Axxz	 r)   c                \   t        j                  dj                  | j                  j	                                      g }t
        j                  |t
        j                  gz  }|t
        j                  z  }| j                  ||      }t        | j                  | j                  | j                  t        j                  | j                               }|j                          |D ]  }	t        j                  dj                  t!        |	      dkD  r|	nd             g }
|
d gz  }
|
dj                  dj#                  | j$                  j&                              gz  }
|
d| gz  }
|
d	j                  dj#                  |D cg c]  }|d   	 c}            gz  }
|
d
j                  | j(                  rdnd      gz  }
|
|z  }
|
| j*                  j-                         z  }
|
|j/                         z  }
|
| j1                         z  }
|
dgz  }
t!        |	      dkD  rd|	g|
z   }
| j3                  |
| j5                               \  }}}|dk(  r|	t
        _         n=t        j                  d|	 d d|        t        j                  d| d| d        dk7  ry 	 | j*                  j7                         | j*                  jI                  d      | _"        | jD                  sy | j*                  jK                  d      }t!        |      dkD  r%|d   | _&        | jL                  jO                  d       | jQ                  ||      }d}t!        |      dk(  r|| j*                  jR                  D ]c  }	|	jU                         }jU                         }| d| |k(  s||jW                  dd      k(  sCt        j                  d|	 d       |	dfg}d} n t!        |      dk(  rKg }| j*                  jR                  jY                         D ]@  \  }}|jU                         }jU                         }|j[                  | d      s;||gz  }B |rt        j\                  t_        j`                  d d|D cg c]  }|jb                   c} d  d! d" d#             t        j                  d$       |D ]  }t        j                  |        | j*                  jK                  d%      D cg c]  }|s|	 }}| j*                  jK                  d&      D cg c]  }|s|	 }}| j*                  jK                  d'      D cg c]  }|s|	 }}g }d}te        | j                        }|| dd(}|D ]2  }	|	jU                         |v r||	jU                            })|r||	gz  }d}4 t!        |      dkD  r%|D cg c]  }d)| 	 c}|z   | _         g | _!        |D ]  } tg        | | j*                  | j                  | jh                  *      }!| xjB                  |!jj                  z  c_!        | xj@                  |!jl                  D cg c]  }d)| 	 c}z  c_         | xj@                  |!jn                  z  c_          t        j                  d+        t        j                  d,|        t        j                  d-|        t        j                  d.|        y d| _"        | j;                  d/j                  tq        | j*                  jR                  js                                           g }g }"g }#|D ]N  \  }	}$|	| j*                  jR                  vr|$sOt        j\                  d0t        jt                  | jw                  |	            d1t        jt                        d2       p| j;                  d3j                  | jw                  |	      tq        | j*                  jR                  js                                           |s| xjx                  |	gz  c_<        tg        |	| j*                  | j                  | jh                  fd45      }!||!jl                  z  }|"|!jn                  z  }"|#|!jj                  |!jz                  z   z  }#Q t}        t        |            }t}        t        |"            }"t}        t        |#            }#t        j                  d,|        t        j                  d6|"        t        j                  d.|#        |"|D cg c]  }d)| 	 c}z   | _         |#| _!        y c c}w # t8        $ rM}| j;                  t=        |            }| j>                  r g | _         g | _!        d| _"        || _#        Y d }~y d }~ww xY wc c}w c c}w c c}w c c}w c c}w c c}w c c}w )7Nz7
Determining dependency {!r} with CMake executable {!r}r   r   r   z-DNAME=z
-DARCHS={}rV   z
-DVERSION=z
-DCOMPS={}z-DSTATIC={}ONOFFr   r   zCMake failed for generator z and package r   r   r   r   FPACKAGE_FOUNDPACKAGE_VERSIONz"' z::r.   zGuessed CMake target ''TzL                    Could not find and exact match for the CMake dependency zd.

                    However, Meson found the following partial matches:

                        a  

                    Using imported is recommended, since this approach is less error prone
                    and better supported by Meson. Consider explicitly specifying one of
                    these in the dependency call with:

                        dependency('z', modules: ['zS::<name>', ...])

                    Meson will now continue to use the old-style z_LIBRARIES CMake
                    variables to extract the dependency information since no explicit
                    target is currently specified.

                z(More info for the partial match targets:PACKAGE_INCLUDE_DIRSPACKAGE_DEFINITIONSPACKAGE_LIBRARIES)rl   	optimizedgeneralz-I)clib_compilerz/using old-style CMake variables for dependency zInclude Dirs:         zCompiler Definitions: zLibraries:            zCMake: failed to guess a CMake target for {}.
Try to explicitly specify one or more targets with the "modules" property.
Valid targets are:
{}zCMake: T.Optional moduleforwas not foundzCMake: invalid module {} for {}.
Try to explicitly specify one or more targets with the "modules" property.
Valid targets are:
{}c                    t        j                  dt        j                  |       dt        j                        d      S )NzCMake: Dependencyr  r  )r   warningbold)r   r3   s    r*   <lambda>z-CMakeDependency._detect_dep.<locals>.<lambda>*  s@    37<<@SUYU^U^_`Uachjnjsjstxjy  |K  4L r)   )r
  not_found_warningzCompiler Options:     )@r   rl   r   rb   executable_pathr,   r1   r   rD   r   ro   ri   r   r   rn   r   r   ru   rc   r"   staticrg   r   r   r=   r   r:   r   r   r6   r    rk   compile_args	link_argsr   reasonvar_to_boolr   rm   striprB   targetsr   replaceitemsr   r  textwrapdedentr3   r   r   r
  	librariesinclude_directoriespublic_compile_optsr]   keysr  rG   rf   
link_flagsr   r^   )%r4   r3   r   r@   rA   argsr   comp_mappedr   r   r   r   r   r   r   ee2vers_rawautodetected_module_listtgr   partial_modulesr   vtgtincDirsdefslibs_rawlibscfg_matchesis_debug
cm_tag_mapr   rtgtcompileOptionsr  rk   s%    `                                   r*   r{   zCMakeDependency._detect_deph  sb	    	

  &t}}'D'D'FG	I
 22>@@AAHO::: ..w
C"4==$((D<L<LnNgNgimi|i|i~	 	>AJJ077SVaZVTU JWTF+,,J<..sxx8L8L/MNOOJZ'89::J<..sxx{8S!18S/TUVVJ=//OPPJ$J$**5577J)2244J$0022J3%J1vz"AY3
  $//
D<Q<Q<STD$ qy:;7JJ4QC}TFJ[\`[abcJJv\$t<=7	>< 19	""4( ((44_E}} ##112CDx=1#A;DLLLv& ''<#(  w<1%%-- WWY

WBug&",D"9M0MJJ!82>? !4ykG/3, w<135O((00668 +1WWY

==E7".#s*O	+
 X__ 2MMQF S +::Q!&&:; <% &*F. ?BBF H.  $ 

EF* $CJJsO$ #'"2"2"@"@AW"X^Q\]q^G^#//==>STZ!XYAZDZ#'#3#3#A#ABU#V\aZ[\H\ !#DK%dhh/H#+h,SWXJ 	#779
*",QWWY"7KQCKD #	# 4y1}7>$?!r!X$?$$F!!# BA6q$:J:JDHHdhdvdvwDNNdnn4N%%D<T<T)UqBqc()UU%%%)A)AA%	B
 

LTFST

3G9=>

3D6:;

3D6:; "DM%% '??EvdDQUQaQaQiQiQnQnQpLq?rt t 	" 	:KAx((000LL!;TYYtGaGabcGd=eglnrnwnwx|n}  @O  P)) +CCI6$JdJdefJgimostx  uE  uE  uM  uM  uR  uR  uT  pU  DVW W ,""qc)".q$2B2BDHH=A=O=OBL1D
 t///Gd666N$//99I'	:, W&N 343y>*	

+G956

+N+;<=

+I;78*-H11#h-HH"i 9T6  		$$SV,B}}$&!!# % 		l ;" _Z\0 %@
 *Vd .Is[   d-d2 2f*f2fff ff8ff$
f)2	f;Affc                v    t        | j                        d| j                   z  }|j                  dd       |S )Ncmake_T)parentsexist_ok)r   re   r3   mkdir)r4   	build_dirs     r*   rn   zCMakeDependency._get_build_dir=  s8    ,,-&0DD	t4r)   c                n   | j                         }|dz  }|dz  }|j                         r|j                          t        j                  |j                         d       t        j                  j                  d|d      }dd	l	m
} | j                  D cg c]  }||v s||    }}|s|d
gz  }t        j                  d      j                  dj                  |            |z   }|dz  }	|	j!                  |d       t#        j$                  |	j'                         j                                |S c c}w )NzCMakeCache.txt
CMakeFilesT)ignore_errorszmesonbuild.dependencies.datazutf-8)encodingr   )language_mapNONEzt
            cmake_minimum_required(VERSION ${{CMAKE_VERSION}})
            project(MesonTemp LANGUAGES {})
        r   r8   )rn   r   unlinkshutilrmtreeas_posix	importlib	resources	read_textrO   r@  rW   r  r  r   ru   
write_textr   cmd_ci_includeabsolute)
r4   
cmake_filer;  cmake_cachecmake_files	cmake_txtr@  r   cmake_languagecm_files
             r*   _setup_cmake_dirz CMakeDependency._setup_cmake_dirB  s+   '')	  "22,. k**,DA ''112PR\ip1q	 	)373E3E[alIZ,q/[[vh&NOO %  VCHH^,-	:	
 ..9w7G,,.779: \s   	D2 D2c                `    | j                  |      }| j                  j                  |||      S )N)ro   )rR  rb   call)r4   r#  rL  ro   r;  s        r*   r   zCMakeDependency._call_cmakeg  s0     ))*5	}}!!$	s!;;r)   c                      y)NrO   r(   r(   r)   r*   	log_triedzCMakeDependency.log_triedn  s    r)   c                    | j                   D cg c]  }| j                  |       }}t        t        |            }|rddj	                  |      z   S yc c}w )Nz	modules: z, r.   )rf   rG   r   r^   ru   )r4   r   r@   s      r*   log_detailszCMakeDependency.log_detailsr  sT    :>:L:LMQ4--a0MMW&7!333	 Ns   A)rO   	pkgconfig
configtoolinternaldefault_valuepkgconfig_definec                   |r7| j                   +	 | j                   j                  |   }dj                  |      S ||S t	        d|       # t        $ r Y w xY w)NrV   z9Could not get cmake variable and no default provided for )rg   varsru   KeyErrorr   )r4   rO   rY  rZ  r[  r\  r]  r+  s           r*   get_variablezCMakeDependency.get_variabley  sr     T%%1#$$))%0 xx{"$  !$]^b]e"fgg  s   A 	AA)r5   r    r   r   r   r    )r   r   )r@   T.List[T.Tuple[str, bool]]rA   rc  r   rc  )rF   r    r   r    r   )r3   r    r|   z'Environment'r}   T.Dict[str, T.Any]rP   r0   r~   r   r   None)r   r   r   zT.Optional[CMakeInfo])rs   r    r   zT.Tuple[T.Tuple[str, str], ...]r   )
r3   r    r   r   r   r   r   z'MachineInfo'r   r   )r3   r    r   r    r@   rc  rA   rc  r#  r   r   re  )r   r   )rL  r    r   r   r<   )r#  r   rL  r    ro   zT.Optional[T.Dict[str, str]]r   z.T.Tuple[int, T.Optional[str], T.Optional[str]])rO   r0   rY  r0   rZ  r0   r[  r0   r\  r0   r]  r   r   r    ) r$   r%   r&   r   r-   r'   rh   r   r1   r6   r:   r=   rB   rD   rG   r`   r   rp   staticmethod	functools	lru_cacher   r   rx   r{   rn   rR  r   rV  rX  ra  __classcell__)r   s   @r*   r,   r,   )   sd    :DD$9OO6O!U/3_3O 
JNX_Tl Y& '  Y& ' _BS#j
#P 9=<%< #< 6< Bp<   8<Z^37UY6:=Ah!0hCRh$3h (;h GJhr)   r,   c                  2    e Zd ZdddZdddZed	d       Zy)
CMakeDependencyFactoryNc                     || _         || _        y r<   )r3   r@   )r4   r3   r@   s      r*   r`   zCMakeDependencyFactory.__init__  s    	r)   c                r    | j                   r| j                   |d<   t        | j                  xs |||||      S )Nr@   )r@   r,   r3   )r4   r3   ro   r}   rP   r~   s         r*   __call__zCMakeDependencyFactory.__call__  s4    << $F9tyy0D#vxIcddr)   c                 *    t         j                         S r<   )r,   rV  r(   r)   r*   rV  z CMakeDependencyFactory.log_tried  s    ((**r)   )NN)r3   r0   r@   zT.Optional[T.List[str]]r   )r3   r    ro   r   r}   rd  rP   r0   r~   r   r   r,   rb  )r$   r%   r&   r`   rn  rf  rV  r(   r)   r*   rk  rk    s!    e
 + +r)   rk  ).
__future__r   baser   r   r   mesonlibr	   r
   r   r   r   rO   r   r   r   r   r   r   r   r   r.   r   importlib.resourcesrF  pathlibr   rg  r   rr   rC  r  typingTTYPE_CHECKINGr   r|   r   	envconfigr   interpreter.type_checkingr   
NamedTupler   r,   rk  r(   r)   r*   <module>r{     s    # M M ] ] c  c  c     	 	   ??#)'? f	h( f	hR+ +r)   