
    eL                       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mZmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? e
j                  rcddlmAZAmBZB ddlmCZC ddlDmEZE ddlFmGZG ddlHmIZI e
j                  eKeLeMee3f   ZNe
j                  eNe
j                  eN   f   ZPe
j                  eKePf   ZRg dZSddddddd ZTd!gZUg d"ZVg d#ZWg d$ZXg d%ZYdgZZ ej                  d&      Z\d2d'Z] G d( d)      Z^ G d* d+      Z_ G d, d-      Z` G d. d/      Za G d0 d1      Zby)3    )annotations)	lru_cache)environ)PathN   )CMakeExceptionCMakeTargetlanguage_mapcmake_get_generator_argscheck_cmake_args)CMakeFileAPI)CMakeExecutor)CMakeToolchainCMakeExecScope)CMakeTraceParser)resolve_cmake_trace_targets   )mlogmesonlib)MachineChoice
OrderedSetpath_is_in_rootrelative_to_if_possible	OptionKey)DataFile)assembler_suffixeslang_suffixesheader_suffixesobj_suffixeslib_suffixes	is_header)ExternalProgram)FORBIDDEN_TARGET_NAMES)TokenBaseNodeCodeBlockNodeFunctionNode	ArrayNodeArgumentNodeAssignmentNodeBooleanNode
StringNodeIdNode	IndexNode
MethodNode
NumberNode
SymbolNode)CMakeConfigurationTargetOptions)CMakeGeneratorTarget)ImmutableListProtocol)Backend)Environment)
CMP0025CMP0047CMP0056CMP0060CMP0065CMP0066CMP0067CMP0082CMP0089CMP0102static_libraryshared_moduleshared_library
executableheader_only)STATIC_LIBRARYMODULE_LIBRARYSHARED_LIBRARY
EXECUTABLEOBJECT_LIBRARYINTERFACE_LIBRARYUTILITY) z-Wallz-Wextraz-Weverythingz-Werrorz
-Wpedanticz	-pedanticz-wz/W1z/W2z/W3z/W4z/Wallz/WXz/wz/O1z/O2z/Obz/Odz/Ogz/Oiz/Osz/Otz/Oxz/Oyz/Ob0/RTC1z/RTCcz/RTCsz/RTCuz/Z7/Ziz/ZI)	z/machine:x64z/machine:x86z/machine:armz/machine:ebcz/debugz/debug:fastlinkz/debug:fullz/debug:nonez/incremental)z/GRz/EHscz/MDdrO   rN   )
zkernel32.libz
user32.libz	gdi32.libzwinspool.libzshell32.libz	ole32.libzoleaut32.libzuuid.libzcomdlg32.libzadvapi32.libz[^_a-zA-Z0-9]c                n    t         j                  d|       } | t        v s| j                  d      rd| z   } | S )N_mesoncm_)_cmake_name_regexsubr#   
startswithnames    >/usr/lib/python3/dist-packages/mesonbuild/cmake/interpreter.py_sanitize_cmake_namerZ   |   s6      d+D%%)At|K    c                      e Zd Z ej                  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
ZddZddZddZddZy)OutputTargetMapz(\.[0-9]+)+$c                     i | _         || _        y N)tgt_map	build_dir)selfra   s     rY   __init__zOutputTargetMap.__init__   s    Y["r[   c                F    d fd} j                  j                        g}t        t              rh|j                  gz  }|j
                  D cg c]  } j                  |       c}z  }|j
                  D cg c]  } j                  |       c}z  }t        t              rX|j                  D cg c]  } j                  |       c}z  }|j                  D cg c]  } j                  |       c}z  } ||       y c c}w c c}w c c}w c c}w )Nc                ^    | D cg c]  }|s|	 c}D ]  }j                   |<    y c c}w r_   r`   )keysxirb   tgts      rY   assign_keysz(OutputTargetMap.add.<locals>.assign_keys   s/    !%+Aa+ &"%Q&+s   **)rg   T.List[str]returnNone)_target_key
cmake_name
isinstanceConverterTarget	full_name	artifacts_rel_artifact_key_base_artifact_keyConverterCustomTargetoriginal_outputs_rel_generated_file_key_base_generated_file_key)rb   rj   rk   rg   rh   s   ``   rY   addzOutputTargetMap.add   s    	&   01c?+S]]O#DF1T++A.FFDGAT,,Q/GGDc01c>R>RST11!4SSDs?S?ST!T2215TTDD GGSTs   DD=D)Dc                V    |D ]$  }|s|| j                   v s| j                   |   c S  y r_   rf   )rb   rg   ri   s      rY   _return_first_valid_keyz'OutputTargetMap._return_first_valid_key   s2     	'AQ$,,&||A&	' r[   c                D    | j                  | j                  |      g      S r_   )r}   ro   )rb   rX   s     rY   targetzOutputTargetMap.target   s!    ++T-=-=d-C,DEEr[   c                v    | j                  |      }|t        |t              sy |j                         dk7  ry |S )NrE   )r   rq   rr   
meson_func)rb   rX   rj   s      rY   rE   zOutputTargetMap.executable   s8    kk$;jo>>>|+
r[   c           	        g }|t         j                  j                  d|      g}t        D ]T  }|j	                  d|z         s|d t        |       dz
   }t         j                  j                  d|      }|| d| gz  }V |D ]M  }|| j                  t        |            t        |      j                  | j                  t        |            gz  }O | j                  |      S )N .r   )r]   rm_so_versionrU   r    endswithlenru   r   rX   rv   r}   )rb   rX   rg   
candidatesri   new_names         rY   artifactzOutputTargetMap.artifact   s    O99==b$GH
 	.A==q)Lc!fWq[)H&4488XFHhZq,--J	.  	fAT++DG4d1gllDD[D[\`ab\cDdeeD	f++D11r[   c                    | j                  | j                  |      | j                  |      g      }|t        |t              sJ |S r_   )r}   ry   rz   rq   rw   )rb   rX   ress      rY   	generatedzOutputTargetMap.generated   sI    **D,H,H,NPTPmPmnrPs+tu{j.CDDD
r[   c                t    	 |j                         j                  | j                        S # t        $ r Y y w xY wr_   )resolverelative_tora   
ValueErrorrb   fnames     rY   	_rel_pathzOutputTargetMap._rel_path   s7    	==?..t~~>> 		s   (+ 	77c                    d| dS )N__tgt___ )rb   tgt_names     rY   ro   zOutputTargetMap._target_key   s    z$$r[   c                T    | j                  |      }|rd|j                          dS d S )N	__relgen_r   r   as_posixrb   r   paths      rY   ry   z'OutputTargetMap._rel_generated_file_key   -    ~~e$264==?+2.@D@r[   c                "    d|j                    dS )N__gen_r   rW   r   s     rY   rz   z(OutputTargetMap._base_generated_file_key       

|2&&r[   c                T    | j                  |      }|rd|j                          dS d S )N	__relart_r   r   r   s      rY   ru   z!OutputTargetMap._rel_artifact_key   r   r[   c                "    d|j                    dS )N__art_r   rW   r   s     rY   rv   z"OutputTargetMap._base_artifact_key   r   r[   N)ra   r   )rj   z3T.Union['ConverterTarget', 'ConverterCustomTarget']rm   rn   )rg   rl   rm   ?T.Optional[T.Union['ConverterTarget', 'ConverterCustomTarget']])rX   strrm   r   )rX   r   rm   zT.Optional['ConverterTarget'])rX   r   rm   z#T.Optional['ConverterCustomTarget'])r   r   rm   T.Optional[Path])r   r   rm   r   )r   r   rm   zT.Optional[str])r   r   rm   r   )__name__
__module____qualname__recompiler   rc   r{   r}   r   rE   r   r   r   ro   ry   rz   ru   rv   r   r[   rY   r]   r]      sV    BJJ/M#F2%A'A'r[   r]   c                      e Zd ZddZddZ ej                  d      ZddZddZ	ddZ
 ed      dd	       Z ed      dd
       ZddZddZddZddZy)rr   c                   || _         || _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _	        d | _
        |j                  | _        |j                  |j                  z   | _        g | _        g | _        |j                   r|j                   d   | _
        t#               | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        i | _        g | _        d| _        g | _        t=        | j
                        | _        g | _        |j@                  D ]  }t#               }t#               }|j&                  D ]-  }|jB                  s|jE                  |jB                  dd         / tG        jH                         D 	ci c]  \  }}	|	jK                         | }
}}	|jE                  |
jM                  |jN                  jK                         d             |D ]5  }tQ        jH                         D ]  \  }}	||	v s|jE                  |        5 7 |D ];  }| j$                  jE                  |       || j4                  vs-g | j4                  |<   = |jR                  }||jT                  D cg c]  }d| 	 c}z  }|D ]9  }| j4                  |xx   |D cg c]  }|| j4                  |   vs| c}z  cc<   ; | xj,                  |j,                  D cg c]4  }|jV                  | j,                  vs|jX                  r)|jV                  6 c}z  c_        | xj.                  |j,                  D cg c]4  }|jV                  | j.                  vs|jX                  s)|jV                  6 c}z  c_        |jZ                  r!| xj>                  |j&                  z  c_        | xj&                  |j&                  z  c_         y c c}	}w c c}w c c}w c c}w c c}w )Nr   Fr   cz-D).envfor_machinert   src_dirra   rX   rp   rs   typeinstallinstall_dirlink_libraries
link_flagslink_lang_flagsdepends_rawdependsinstall_pathsset	languagessourcesr   generated_ctgtincludessys_includes	link_withobject_libscompile_optspublic_compile_optspieoverride_optionsrZ   generated_rawfilessuffixr{   r
   itemslowergetlanguager   flagsdefinesr   isSystemis_generated)rb   r   r   r   ri   r   src_suffixesjkeyvallang_cmake_to_mesonsfxlangargsrh   s                  rY   rc   zConverterTarget.__init__   s   &))~~))KK	 ++))KK	~~-1$33 ++f.D.DD(*PR%33A6D%(U%'')=?&(*,RT466802  .0 )3	+- *	*A$'EI'*uL YY /xx  !"./ EQDVDVDX"YS399;#3"Y"YMM-11!**2B2B2DcJK $  - 3 3 5 HCcz!c* " 1""4(t000.0D%%d+1 77Dqyy1!r!X11D! a!!$'t+`!qHYHYZ^H_?_A+``'a MMajjkAFF$--<W`a`j`jaffkkM!**!oQdN_N_@_dedndn!&&!oo ~~""aii/"		)U*	* #Z$ 2+` l!os<   /P4P:P?P?Q
"Q
/Q
!Q	
?Q	
Q	
c                P    d| j                   j                   d| j                   dS )N<: >)	__class__r   rX   rb   s    rY   __repr__zConverterTarget.__repr__(  s&    4>>**+2dii[::r[   z'([-]{1,2}std=|/std:v?|[-]{1,2}std:)(.*)c                    dD ]@  }| j                   vrg } j                   |   D ]
  }t        j                  j                  |      }	|j	                  t        |            }
|	rz|	j                  d      } j                  |      }||vr8t        j                  dj                  ||dj                  |            d        xj                  | d| gz  c_        |dv rd _        t        |
t              r& xj                   t        |      gz  c_        ||gz  }|t"        v r||gz  } | j                   |<   C  j$                  j'                         d	k(  rd _        j(                  j+                   j,                        }|r݉j(                   j,                     j.                   _        t3         j,                   j4                        } xj6                  |j8                  D cg c]  }t        |       c}z  c_         xj:                  |j:                  z  c_         xj<                  |j<                  z  c_         xj>                  |j@                  z  c_        nP j$                  j'                         d
vr4t        j                  dt        jB                   j,                        d       g } j>                  D ]P  }d|v rt        |      jE                         s*|jG                  |      }|r xjH                  |gz  c_$        K||gz  }R | _        tK        tL              tK        tN              z   tK        tP              z   } jR                  D ]  }|tK        tT        |         z  } |D cg c]  }d| 	 }} jV                  D cg c]  tY        fd|D              s c} _+         j                   D cg c]  tY        fd|D              s c} _        d fd} jZ                  j]                  t         j4                  j_                               z        } j                   D cg c]  } ||dd       c} _        tK        ta        ta         j6                        D cg c]  } ||dd       c}|gz                _        tK        ta        ta         jb                        D cg c]  } ||dd       c}             _1         jV                  D cg c]  } ||dd       c} _+         j                   D ]  }|j	                  |      }
|
r\t        |
t              sJ |
je                  |      }t        |tf              r|ji                         sJ  xjj                  |gz  c_5        r|u xj                  |gz  c_          j6                  D cg c]  }||	 c} _         jb                  D cg c]  }||	 c} _1         jV                  D cg c]  }||	 c} _+        t        d       j6                  vr xj6                  t        d      gz  c_         jl                  rP jl                  jE                         r6to         jl                  |      r  jl                  j]                  |       _6        dd} j>                  D cg c]  }|jq                         tr        vs| c} _         j:                  D cg c]  } ||      s| c} _        dd} | j>                         _         | j:                         _         j0                  D ]1  }|ju                  |      }|s j.                  jw                  |       3 y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )N)r   cppr   zwUnknown {0}_std "{1}" -> Ignoring. Try setting the project-level {0}_std if build errors occur. Known {0}_stds are: {2} Toncez_std=>   -fPIC-fPIE-fpic-fpierK   )rJ   rK   zCMake: Targetz7not found in CMake trace. This can lead to build errorsz,-rpath,r   c              3  T   K   | ]  }j                   j                  |       ! y wr_   rX   r   .0yrh   s     rY   	<genexpr>z.ConverterTarget.postprocess.<locals>.<genexpr>w  s     6]aqvvq7I6]   %(c              3  T   K   | ]  }j                   j                  |       ! y wr_   r   r   s     rY   r   z.ConverterTarget.postprocess.<locals>.<genexpr>x  s      BiZ[166??STCUBir   c                     j                         sj                   z    j                           j                         sJ  j                         st	         fdt
        D              s|st         t        j                  j                               d      rH j                  dd        j                  t        j                  j                               z        S t        j                  dt        j                   j                               d       t        j                  d       y  j                   v ry t         t        j                  j#                                     rt               st         t        j                  j                                     sct        j                  dt        j                   j                               dt        j                  d	      d
       t        j                  d       y t         t        j                  j                                     r7|r5 j                  t        j                  j                               z        S t               r j                        S  S )Nc              3  T   K   | ]  }j                   j                  |       ! y wr_   r   r   s     rY   r   z@ConverterTarget.postprocess.<locals>.rel_path.<locals>.<genexpr>  s     )S!&&//!*<)Sr   Tr   parentsexist_okzCMake: pathzdoes not exist.z- --> Ignoring. This can lead to build errors.zis inside the root project butnotzinside the subproject.)is_absoluter   r   existsanyr   r   r   r   get_build_dirmkdirr   r   warningboldr   explicit_headersget_source_dir)rh   r!   r   root_src_dirrb   subdirtraces   `  rY   rel_pathz-ConverterTarget.postprocess.<locals>.rel_path{  s   ==?LL1$		A==?"?88:c)Sl)S&S\h"1d488+A+A+C&DdSGGD4G8==dhh.D.D.F)G&)PQQLL		!**,0GIZ[LL!PQE***#AtDHH,C,C,E'FG'<8'40F0F0H+IJ ]DIIajjl,CEegkgpgpqvgw  zR  SLMq$txx'='='?"@Ai}}T$((*@*@*B%Cf%LMMq,/}}\22Hr[   Fc                t    | j                         t        v s| t        t        z   v ry| j	                  d      ryy)NFz/DT)r   blacklist_link_flagsblacklist_compiler_flagsblacklist_clang_cl_link_flagsrV   )flags    rY   
check_flagz/ConverterTarget.postprocess.<locals>.check_flag  s4    zz|33t?WZw?w7wt$r[   c                    g }| D ]P  }t        |      }|j                         r|j                  j                  d      s||gz  }@|d|j                  gz  }R |S )Nz
.frameworkz
-framework)r   r   rX   r   stem)r   r   ri   ps       rY   handle_frameworksz6ConverterTarget.postprocess.<locals>.handle_frameworks  s_    !C .Gxxz)FA3JCaff--. Jr[   )rh   r   r!   boolr   r  rm   r   )r  r   rm   r  )r   rl   rm   rl   )<r   rr   	std_regexmatchr   r   group_all_lang_stdsr   r  formatjoinr   r   rq   rw   r   r  r   uppertargetsr   rp   r   r   r   r   r   include_directoriesr   r   r   	librariesr  r   r   r   listr   r   r   r   r   r   r   ra   r   r   r   r   get_refCustomTargetReferencevalidr   r   r   r   blacklist_link_libsr   append)rb   output_target_mapr  r  install_prefixr  ri   tempr   mctgtstd	supportedrj   rtgtrh   r   r	  build_dir_relgen_filerefr  r  dep_tgts   ` `` `         `        rY   postprocesszConverterTarget.postprocess-  s~    !	(A))) "D&&q)  #--33A6(2247;''!*C $ 3 3A 6I)+006q#sxx	?R0S!%	 !))5.>-??)>>#DH&;< &&47)3&QCKD22QCKD5 8 $(Da C!	(H 99?? 00DH mm0$}}T__=EED.ttxxPDMMt/G/GH!d1gHHMOOt.O$$(@(@@$4>>1YY__&FFLL$))DOO*DF  A$$ 
	AQ7&&(-66q9	NNyk1NQCKD
	 # +,tO/DDtLGYY	 	0AmA.//I	0&/0qW0	0#'<<^a36]S\6]3]^)-););jAsBi_hBi?iaj	 	> 2248N8N8P3QTZ3Z[@D@R@RS1hq%6SZ:VZVcVcKd(ea!T5)A(eivhw(wxy zZ^ZkZkOl,m!Xau-E,m!no;?<<HaE51H ** 	-H$..x8D!$(=>>>ll8,!#'<=#))+MM##u,#%8*,	- %)MMCqQ]C(,(9(9K1Q]QK#'<<Aa1=A 9DMM)MMd3i[(M  0 0 < < >t//@#'#3#3#?#?#O 	 +/*=*=fQReAeqf&*ooGA1G	 00C0CD+DOO< !! 	-A'..q1G##G,	-o I4 1^jF T(e,mH DKA& gGsx   :^^"^<^^1^^^^^$^)
^)$^.,^.^3^3>^8^84^=^=c           	     z  	
 | j                   D cg c]  t        fdt        D              s }}|D cg c]  }|j                   }}| j	                         }|D ]  }|j
                  |j                   z   D cg c]  }|j                   c}
|D ]  		g}t        	fd|D              s/t        j                  dd       ||D cg c]	  }	 d|  c}z  }t        
fd|D              s^|r| j                  |       nX| xj                  |j                  z  c_
        t        t        | j                              | _
        | xj                  |gz  c_           | j                   D cg c]  t        fdt        D              r c}| _         y c c}w c c}w c c}w c c}w c c}w )	Nc              3  Z   K   | ]"  }j                   j                  d |z          $ ywr   Nr   r   s     rY   r   z6ConverterTarget.process_object_libs.<locals>.<genexpr>  s"     0`aq1I0`   (+c              3  F   K   | ]  }j                  d |z           ywr4  )r   )r   rh   r   s     rY   r   z6ConverterTarget.process_object_libs.<locals>.<genexpr>  s     =11::cAg.=s   !zWObject files do not contain source file extensions, thus falling back to guessing them.Tr   r   c              3  &   K   | ]  }|v  
 y wr_   r   )r   rh   source_filess     rY   r   z6ConverterTarget.process_object_libs.<locals>.<genexpr>  s     =QqL(=s   c              3  Z   K   | ]"  }j                   j                  d |z          $ ywr4  r   r   s     rY   r   z6ConverterTarget.process_object_libs.<locals>.<genexpr>  s$     >n\]qvvsUVw?W>nr5  )r   r   r   r  _all_source_suffixesr   rX   r   r  _append_objlib_sourcesr   r  r   r   )rb   obj_target_listlinker_workaroundrh   r'  r  extsri   r   r   r8  s      `     @@rY   process_object_libsz#ConverterTarget.process_object_libs  su   >>aaS0`S_0`-`aa $%1%%((*  	A,-II,CDqAFFDL   S
===LL!z  BF  Gt"<!aS!:"<<J=*==(33A63(,Z-F(G((QC/(#	, &*^^o3>nam>n;n!o5 b% E #= ps'   F$F$F)F.F3
9F8F8c           
     
   | xj                   |j                   z  c_         | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        t	        t        | j                               | _         t	        t        | j                              | _        t	        t        | j                              | _        t	        t        | j                              | _        |j                  j                         D ]Y  \  }}|| j                  vrg | j                  |<   | j                  |xx   |D cg c]  }|| j                  |   vs| c}z  cc<   [ y c c}w r_   )r   r   r   r   r  r   r   r   )rb   rj   r   optsrh   s        rY   r;  z&ConverterTarget._append_objlib_sources  s$   %##--'s111Z67Jt||45j89":d.A.A#BC **002 	]JD$4,,,*,!!$'d#4'\a1DDUDUVZD[;['\\#	] (]s   F 1F N)maxsizec                ^    g }t        j                         D ]  }|j                  |        |S r_   )r   valuesextend)rb   suffixesr>  s      rY   r:  z$ConverterTarget._all_source_suffixes  s0     "!((* 	"DOOD!	"r[   c                   	 | j                   j                  j                  t        dt        j
                  |         j                  }t        |t              sJ |D ]  }t        |t              rJ  |S # t        $ r g cY S w xY w)Nr*  )machiner   )r   coredataoptionsr   r   BUILDchoicesKeyErrorrq   r  r   )rb   r   r   ri   s       rY   r  zConverterTarget._all_lang_stds  s    	((##++Ie]EXEX_c,demmC
 #t$$$ 	&Aa%%%	& 
  	I	s   AA6 6BBc                *   t        | j                        }g }g }|D ]W  }||gz  }t        |t              r9|j	                         t
        v r#||j                  D cg c]	  }||vs| c}z  }R||gz  }Y t        t        |            | _        y c c}w r_   r  r   rq   rr   r   transfer_dependencies_fromr   rb   
to_process	processednew_depsri   rh   s         rY   !process_inter_target_dependenciesz1ConverterTarget.process_inter_target_dependencies      $,,'
	 	 A!I!_-!,,.D^2^!))JQq	7IqJJ
QC	  Jx01 K   	B$Bc                @    | j                         t        v rg | _        y y r_   )r   rP  r   r   s    rY   cleanup_dependenciesz$ConverterTarget.cleanup_dependencies(  s    ?? ::DL ;r[   c                \    t         j                  | j                  j                               S r_   )target_type_mapr   r   r  r   s    rY   r   zConverterTarget.meson_func-  s    ""499??#455r[   c                	   t        j                  dt        j                  | j                        d| j                   d       t        j                  dt        j                  t        | j                                     t        j                  dt        j                  | j                               t        j                  dt        j                  | j                               t        j                  dt        j                  | j                  rdnd	             t        j                  d
t        j                  | j                  r| j                  j                         nd             t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                      t        j                  dt        j                  t        | j"                                     t        j                  dt        j                  t        | j$                                     t        j                  dt        j                  t        | j&                                     t        j                  dt        j                  t        | j(                                     t        j                  dt        j                  t        | j*                                     t        j                  dt        j                  | j,                  rdnd	             t        j                  dt        j                  t        | j.                                     t        j                  dt        j                  t        | j0                                     t        j                  d       | j2                  j5                         D ]9  \  }}t        j                  d|dt        j                  t        |                   ; y )NTarget()z  -- artifacts:      z  -- full_name:      z  -- type:           z  -- install:        truefalsez  -- install_dir:    r   z  -- link_libraries: z  -- link_with:      z  -- object_libs:    z  -- link_flags:     z  -- languages:      z  -- includes:       z  -- sys_includes:   z  -- sources:        z  -- generated:      z  -- generated_ctgt: z  -- pie:            z  -- override_opts:  z  -- depends:        z  -- options:z    -=)r   logr  rX   rp   r   rt   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rb   r   r   s      rY   rc  zConverterTarget.log0  s   499TYY/1T__4EQ1GH($))C4G*HI($))DNN*CD($))DII*>?($))dllFPW*XY($))SWScScD4D4D4M4M4Oik*lm($))C8K8K4L*MN($))C4G*HI($))C8H8H4I*JK($))C4H*IJ($))C4G*HI($))C4F*GH($))C8I8I4J*KL($))C4E*FG($))C4G*HI($))C8K8K4L*MN($))dhhFG*TU($))C8M8M4N*OP($))C4E*FG!))//1 	=HCHHWc3		#c((;<	=r[   )r   r	   r   'Environment'r   r   rm   rn   rm   r   )r%  r]   r  r   r  r   r&  r   r  r   rm   rn   )r<  zT.List['ConverterTarget']r=  r  rm   rn   )rj   z'ConverterTarget'rm   rn   )rm   'ImmutableListProtocol[str]')r   r   rm   rf  rm   rn   )r   r   r   rc   r   r   r   r  r1  r?  r;  r   r:  r  rU  rY  r   rc  r   r[   rY   rr   rr      sz    R*h; 

EFIi-Vp<]  t  t 2
6=r[   rr   c                  ,    e Zd ZddZddZddZddZy)	r!  c                     || _         || _        y r_   r)  index)rb   r)  rk  s      rY   rc   zCustomTargetReference.__init__I  s    	
r[   c                   | j                         r\dj                  | j                  j                  | j                  j
                  | j                  j                  | j                           S d| j                  j                   dS )Nz<{}: {} [{}]>r   z: INVALID REFERENCE>)r"  r  r   r   r)  rX   outputsrk  r   s    rY   r   zCustomTargetReference.__repr__M  sf    ::<"))$..*A*A499>>SWS\S\SdSdeieoeoSpqqt~~..//CDDr[   c                @    | j                   d uxr | j                  dk\  S Nr   rj  r   s    rY   r"  zCustomTargetReference.validS  s    yy$8q8r[   c                H    | j                   j                  | j                     S r_   )r)  rm  rk  r   s    rY   filenamezCustomTargetReference.filenameV  s    yy  ,,r[   N)r)  z'ConverterCustomTarget'rk  intrm   rn   re  )rm   r  )r   r   r   rc   r   r"  rq  r   r[   rY   r!  r!  H  s    E9-r[   r!  c                  D    e Zd ZdZdZd	dZd
dZddZddZddZ	ddZ
y)rw   r   c                   |j                   J |j                  J |j                  | _        | j                  s1dt        j                   | _        t        xj                  dz  c_        t        | j                        | _        t        |j                        | _	        | j                  D cg c]  }|j                   c}| _        i | _
        g | _        |j                  | _        |j                  | _        g | _        g | _        |j                   | _         |j                  | _        || _        || _        || _        t'        | j                        | _        y c c}w )Ncustom_tgt_r   )current_bin_dircurrent_src_dirrX   rw   tgt_counterr   rp   r  rm  rx   conflict_mapcommandworking_dirr   r   inputsr   r   _raw_targetrZ   )rb   r   r   r   rh   s        rY   rc   zConverterCustomTarget.__init__]  s   %%111%%111KK	yy%&;&G&G%HIDI!--2-dii. $V^^ 4(,(=(=>1>.0FH!--!>>CEPR%55%55&! )3	 ?s   -Ec                j    d| j                   j                   d| j                   d| j                   dS )Nr   r   r   r   )r   r   rX   rm  r   s    rY   r   zConverterCustomTarget.__repr__v  s0    4>>**+2dii[$,,qIIr[   c                N     j                    j                   _          j                   j                         s j                   j                   z   _         d fd} j                  D cg c]
  } ||       c} _        g } j                  D ][  }||v rIt        |      }	dt        j                   d| }t        xj                  dz  c_        | j                  |	<   ||gz  }||gz  }] | _        g }
 j                  j                  D ]U  }t        |t              sJ |d   dk7  sJ d       g }|D ]#  }|s|j                  |      }|r j                  j                  ~ j                  j                    j"                     j%                         rMt         j                  j                  t&              sJ | j                  j                  j)                         z  }||gz  }||j*                  v r[|j*                  |   }|j,                  dk(  r"d	|j                   v r||j                   d	   z  }t/        j0                  d
| d|        ||gz  }& |
|gz  }
X |
 _
         j                  s j2                  dz   g _         j4                  D ]q  }|st7        |      }|j9                  |      }|j;                  |      }|j=                  |      }d }	 |j?                  |      }|j                         s^ jB                  |z  jE                         rA xjF                   jB                  |z  j?                  |      jI                         gz  c_#        |j                         r8|jK                         r(|& xjF                  |jI                         gz  c_#        |r xjL                  |gz  c_&        )|r xjL                  |gz  c_&        C|sG|jO                  |      }|J  xjF                  |gz  c_#        t y c c}w # t@        $ r d }Y 0w xY w)Nc                F    | j                         r| S j                  | z  S r_   )r   rv  )rh   rb   s    rY   ensure_absolutez:ConverterCustomTarget.postprocess.<locals>.ensure_absolute  s"    }}++a//r[   r   rQ   r   r   r   z)An empty string is not a valid executablerJ   IMPORTED_LOCATIONz#CMake: Found invalid CMake target "z" --> ignoring 
z.h)rh   r   rm   r   )(r{  rv  r   rx   rm  r   rw   out_counterry  r}  rz  rq   r  rE   r   exe_wrapper
propertiesr   get_cmake_use_exe_wrapperr"   get_commandr  r   r   debugrX   r   r   r   r   r   r   r   rw  is_filer|  r   r   r   r   )rb   r%  r  all_outputsr  r  rh   temp_outputsri   oldcommandscurr_cmdcmdr   r   	trace_tgtrawartrj   genrel_to_rootctgt_refs   `                     rY   r1  z!ConverterCustomTarget.postprocessy  s   ##33D ++-#33d6F6FFD	0
 >B=R=R S!3 S
 %' 	 AK!f-99:!A3?%11Q61)*!!#&A3KQCL	  $ CE((00 	Hh---A;"$Q&QQ$9;C *55a8xx++7DHH<O<OPTP`P`<a<{<{<})$((*>*>PPPtxx33??AAF8OC%--' %a 0I ~~5:MQZQeQe:ey334GHH JJ!DQCGXYbXcde s
'* H5	6   || II,-DL !! 	*Aq'C#,,Q/C#**1-C#--c2CK#!ool; ??$$*>*>*D)M)M)O!5!5!; H H V _ _ abb"szz|8O 4 4 677%%;;s++++z);	*k !T@  #"#s   +P"PP$#P$c                *   t        | j                        }g }g }|D ]W  }||gz  }t        |t              r9|j	                         t
        v r#||j                  D cg c]	  }||vs| c}z  }R||gz  }Y t        t        |            | _        y c c}w r_   rO  rQ  s         rY   rU  z7ConverterCustomTarget.process_inter_target_dependencies  rV  rW  c                    |j                   }	 || j                  v r| j                  |   }| j                  j                  |      }t	        | |      S # t
        $ r Y y w xY wr_   )rX   ry  rm  rk  r!  r   )rb   r   rX   idxs       rY   r   zConverterCustomTarget.get_ref  sa    zz	t(((((.,,$$T*C(s33 		s   AA 	AAc                   t        j                  dt        j                  | j                        d| j                   d       t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  dt        j                  t        | j                                     t        j                  d	t        j                  t        | j                                     t        j                  d
t        j                  t        | j                                     y )NzCustom Targetr^  r_  z  -- command:      z  -- outputs:      z  -- conflict_map: z  -- working_dir:  z  -- depends_raw:  z  -- inputs:       z  -- depends:      )r   rc  r  rX   rp   r   rz  rm  ry  r{  r   r|  r   r   s    rY   rc  zConverterCustomTarget.log  s   $))DII"6!DOO;LA8NO&		#dll2C(DE&		#dll2C(DE&		#d6G6G2H(IJ&		#d6F6F2G(HI&		#d6F6F2G(HI&		#dkk2B(CD&		#dll2C(DEr[   N)r   r4   r   rd  r   r   rm   rn   re  )
r%  r]   r  r   r  rl   r  r   rm   rn   rg  )r   r   rm   z!T.Optional[CustomTargetReference])r   r   r   rx  r  rc   r   r1  rU  r   rc  r   r[   rY   rw   rw   Y  s.    KK42Jc*J2Fr[   rw   c                  D    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	y)CMakeInterpreterc                (   || _         t        |j                         |      | _        |dz  | _        t        |j                               | j                  z  | _        || _        || _        t        j                  | _        |j                  | _        t               | _        t!        | j                        | _        g | _        d | _        d | _        d| _        g | _        g | _        g | _        |  t3        | j                        | _        i | _        i | _        d| _        | j                  j=                  d      r]| j                  j>                  j@                  | j                     jC                         D ]  }|jE                         dk(  sd| _         y  y y )N__CMake_buildr   FvslinkT)#r  r   r  r   r-  r   ra   r&  r   r   HOSTr   rX   backend_namer   linkersr   fileapibs_filescodemodel_configscmake_stderrproject_namer   r  custom_targetsr]   r%  generated_targetsinternal_name_map_object_lib_workaroundrV   rI  	compilersrD  get_linker_id)rb   r  r&  r   backendcomps         rY   rc   zCMakeInterpreter.__init__   sb   C..0&9#o5c//12T5G5GG,(--#LL#&5#DNN3 ')IM-1 &(02=?!0!@ MO35 ',#''-))33D4D4DELLN %%'6126D/ .r[   c           
     
   t        | j                  dt        j                        }|j	                         st        d      t        |j                         | j                  | j                  d      | _	        t        d      j                  | j                        }t        || j                  | j                  t        j                  | j                  |      }|j!                         }t#        |      }g }|t%        | j                        z  }|d| j&                   gz  }||z  }| j                  j)                         }t*        D cg c]  }d| d
 }	}| j,                  j/                          t1        j2                          t1        j4                         5  t1        j2                  d	t1        j6                  d
      dt1        j8                  |j                                      t1        j2                  t1        j6                  d      dj;                  |             t1        j2                  t1        j6                  d      | j                  j=                                t1        j2                  t1        j6                  d      | j>                  j=                                t1        j2                  t1        j6                  d      |j=                                t1        j2                  t1        j6                  d      |j=                                t1        j2                  t1        j6                  d      dj;                  |             t1        j2                  t1        j6                  d      djA                  dj;                  t*                           t1        j2                          | j                  jC                  dd       tE        jF                         }
d|
d<   ||z   |	z   |jI                         z   | j>                  j=                         gz   }|jK                  d| j                  jM                                |jO                  || j                  |
d      \  }}| _(        d d d        t1        j2                          dk(  rt1        jR                  d      nt1        jT                  d      }t1        j2                  d|       |dk7  rd| j                  jV                  d   i| j                  _+        | j                  jY                  | jP                         | j                  jZ                  rd | j                  jZ                  d!    nd"}t        d#|       |S c c}w # 1 sw Y   xY w)$Nz>=3.14zUnable to find CMakeT)
permissivezcmake/data/preload.cmakez-DCMAKE_INSTALL_PREFIX=z-DCMAKE_POLICY_WARNING_z=OFFz$Configuring the build directory withCMakeversionzRunning CMake with:r   z  - build directory:         z  - source directory:        z  - toolchain file:          z  - preload file:            z  - trace args:              z  - disabled policy warnings:z[{}]z, r   CLC_ALL)print_cmoutalways_capture_stderr)r   disable_cacher   	SUCCEEDEDFAILEDzCMake configuration:messager   r   z(Failed to configure the CMake subproject).r   r   r   rK  foundr   r   r  ra   r  r   write_to_privater   r   r   
SUBPROJECTwriter   r   r&  
trace_argsdisable_policy_warningsr  setup_requestr   rc  nestedr  cyanr  r   r   r  r  r   copyget_cmake_argsset_exec_moderequires_stderrcallr  greenred	functionsparseerrors)rb   extra_cmake_options	cmake_exepreload_file	toolchaintoolchain_file
cmake_argsr  rh   
cmcmp_argsos_env
final_argsrcrQ   herrors                   rY   	configurezCMakeInterpreter.configure%  s    "$((Hm6I6IJ	  !788%i&7&7&94>>488`de
 :;LLTXXV"9dhh8H8H.JcJceieses  vB  C	"* //BC
.txx88
01D1D0EFGG
))
ZZ**,
AXYA/s$7Y
Y""$ 	
[[] 	rHH;TYYw=OQZ\`\e\efofwfwfy\z{HHTYY45sxx
7KLHHTYY>?AXAXAZ[HHTYY>?AVAVAXYHHTYY>?AXAXAZ[HHTYY>?AVAVAXYHHTYY>?*AUVHHTYY>?tyyYpOqArsHHJNN   =\\^F"F8#j0:=	@X@X@ZZ^b^j^j^s^s^u]vvJ##DJJLfLfLh#i'0~~j$..V\lp~'q$B4$!	r$ 	
')QwDJJ{#DHHX4F'+7$-tzz/C/CI/N#ODJJ JJT../48JJ4E4Eb**2./02E #KE7!STTE Z	r 	rs   UK
UU(c           
        | j                  |       | j                  j                          | j                  j                         }|D cg c](  }|j                  r|j
                  r|j                  * c}| _        | j                  D cg c]/  }t        |t        | j                  j                                     1 c}| _        | j                  D cg c]4  }t        |t        | j                  j                               d      r3|6 c}| _        t        t        | j                              | _        | j                  j!                         | _        y c c}w c c}w c c}w )NTr   )r  r  
load_replyget_cmake_sourcesis_cmakeis_tempfiler  r   r   r   r  r   r   r  r   get_cmake_configurationsr  )rb   r  cmake_filesrh   s       rY   
initialisezCMakeInterpreter.initialise]  s    *+ 	! ll446)4YAAJJqyyY^b^k^klYZ0D9P9P9R4STl$(MMzqDQUQYQYQgQgQiLjtx9yzZ67 "&!F!F!H Zlzs$   
EE)E4E 4E%E%c                &	   | j                   t        d      d| _        g | _        g | _        g | _        | j                  j                  | j                         g }| j                   D ]  }|j                  D ]  }| j                  s|j                  | _        |j                  D ]i  }|j                  t        vs|j                  |vs%||j                  gz  }| xj                  t        || j                  | j                        gz  c_        k   | j                  D cg c]  }|j                   }}| j                  j                  j!                         D ]  }|j                  dk7  s|j                  |v s|j"                  r-t%        |j                  d| j&                  | j(                  d      }| xj                  t        || j                  | j                        gz  c_         | j                  j
                  D ]7  }	| xj
                  t+        |	| j                  | j                        gz  c_        9 g | j                  | j
                  D ]5  }
t-        |
t        t*        f      sJ | j.                  j1                  |
       7 g }g }| j
                  D ]4  }|j3                  | j.                  | j&                  || j                         6 | j                  D ]  }|j3                  | j.                  | j&                  | j4                  | j6                  | j                         |j                  dk(  r||gz  }| xj                  |j                  D cg c]  }|| j                  vs| c}z  c_         | j                  D ]  }|j9                  || j:                           | j                  D ]  }|j=                           | j
                  D ]  }|j=                           | j                  D ]  }|j?                           tA        jB                  dtA        jD                  | j                        dtA        jD                  tG        tI        | j                        tI        | j
                        z               d	       y c c}w c c}w )
Nz$CMakeInterpreter was not initializedr   	INTERFACErL   )rX   r   sourceDirectorybuildDirectoryrK   zCMake projecthaszbuild targets.)%r  r   r  r   r  r  r  r  r  projectsrX   r   skip_targetsrr   r   r   rD  importedr	   r   ra   rw   rq   r%  r{   r1  r  r&  r?  r  rU  rY  r   rc  r  r   r   )rb   added_target_namesi_0j_0k_0rh   api_target_name_listi_1dummyi_2i_3r   custom_target_outputsr)  rj   s                  rY   analysezCMakeInterpreter.analysen  s#   !!) !GHH   	

**+ +-)) 		[C|| [(((+D%;; [C xx|3HZ8Z*sxxj8*dhhHXHX)Y(ZZ[[		[ 15=1==::%%,,. 		QCxx;&#((6J*Jcll+#'<<"&..	! E LL_UDHHd>N>NOPPL		Q ::,, 	\C$9#txxIYIY$Z#[[	\ 9T\\8D$7$78 	,CcO5J#KLLL""&&s+	,
 -/'' 	fDT33T\\CXZ^ZdZde	f<< 	TCOOD22DLL$++tObObdhdndnoxx++u$NN#--SQ1DNN;RqSSN		T << 	NC##K1L1LM	N << 	4C113	4'' 	5D224	5 << 	'C$$&	' 	$))D,=,=">tyyQTUXY]YeYeUfilmq  nA  nA  jB  VB  RC  HD  FV  	W[  >: Ts    R	R
-R
c                   	
  j                   st        d      dd fddfddfddfd	dfddfddfd
dfd	dd	fd
dd	fdd	fdt                      xj                   d j                   g j                  z         gz  c_        g i i d 	fdd!fdd"
fdd#	fdd$f
d j
                  D ]  }|j                  vs |         j                  D ]  }|j                  vs |         _         _	        S )%Nz!CMakeInterpreter was not analysedc           	     V    t        | j                  j                         dddd |      S ro  )r$   r  r   )tidr   rb   s     rY   tokenz3CMakeInterpreter.pretend_to_be_meson.<locals>.token  s'    dkk224aAtSIIr[   c                (    t         d|             S )Nr   )r1   )r   r  s    rY   symbolz4CMakeInterpreter.pretend_to_be_meson.<locals>.symbol  s    eBn--r[   c                ,    t         |       d      S )Nr   F)escape)r,   valuer  s    rY   stringz4CMakeInterpreter.pretend_to_be_meson.<locals>.string  s    e.u==r[   c                (    t         |             S Nr   )r-   r  s    rY   id_nodez5CMakeInterpreter.pretend_to_be_meson.<locals>.id_node  s    %E*++r[   c                :    t         t        |                   S r  )r0   r   r  s    rY   numberz4CMakeInterpreter.pretend_to_be_meson.<locals>.number  s    eE
344r[   c                   t        | t              r |       S t        | t              r | j                               S t        | t              rt         |             S t        | t              r |       S t        | t              r |       S t        | t              r| S t        dj                  t        |       j                  t        |                   )Nr   zinvalid type of value: {} ({}))rq   r   r   r   r  r+   rr  r  r%   RuntimeErrorr  r   r   )r  arrayr	  r  r  s    rY   nodeifyz5CMakeInterpreter.pretend_to_be_meson.<locals>.nodeify  s    %%e}$%&enn.//E4("5U#344E3'e}$E4(U|#E8,?FFtE{G[G[]`af]ghiir[   c                D    t        |  d       |       d            S N[])r.   )noderk  r  r  s     rY   indexedz5CMakeInterpreter.pretend_to_be_meson.<locals>.indexed  s     T6#;sLLr[   c                    t                      }t        | t              s|g} |xj                  | D cg c]  }| |       c}z  c_        t	         d      | d            S c c}w r  )r)   rq   r  	argumentsr(   )elementsr   rh   r  r  r  s      rY   r  z3CMakeInterpreter.pretend_to_be_meson.<locals>.array  s^    (Dh- 6NN8Maq}wqzMMNVC[$s<< Ns
   A*
A*c                   |g n|}|i n|}t                      }t        |t              s*t        |t        t        t
        t        t        f      sJ |g}|D cg c]  }| 	|       c}|_        |j                         D ci c]  \  }}|	 |       	|       c}}|_
        t         |        
d      | 
d            }|S c c}w c c}}w )Nr^  r_  )r)   rq   r  r   rr  r  r   r%   r  r   kwargsr'   )rX   r   r  args_nrh   kvfunc_nr  r  r  r  s           rY   functionz6CMakeInterpreter.pretend_to_be_meson.<locals>.function  s    24D!>RvF!%'*FdD)!$c4x(HIIIv48JqAM
JF@F`1RSR_WQZ3`FM!'$-ffSkRFM  K`s   C$
C	
CCc           
        |g n|}|i n|}t                      }t        |t              s*t        |t        t        t
        t        t        f      sJ |g}|D cg c]  }| 	|       c}|_        |j                         D ci c]  \  }}|	 |       	|       c}}|_
        t        |  
d       |       
d      | 
d            S c c}w c c}}w )Nr   r^  r_  )r)   rq   r  r   rr  r  r   r%   r  r   r  r/   )objrX   r   r  r  rh   r  r  r  r  r  r  s           rY   methodz4CMakeInterpreter.pretend_to_be_meson.<locals>.method  s    24D!>RvF!%'*FdD)!$c4x(HIIIv48JqAM
JF@F`1RSR_WQZ3`FMc6#;vc{FTZ[^T_``  K`s   C$
C	
CCc                6    t         |        d      |      S )Nrb  )r*   )var_namer  r  r  s     rY   assignz4CMakeInterpreter.pretend_to_be_meson.<locals>.assign  s    !'("3VC[%HHr[   projectc                    d }t        | t        t        f      r| j                  }n&t        | t              r| j
                  j                  }||v sJ |   d   }|r |      S d S )Nrj   )rq   rr   rw   rX   r!  r)  )rj   r   res_varr  rS  s      rY   extract_tgtz9CMakeInterpreter.pretend_to_be_meson.<locals>.extract_tgt  sm    H#1FGH88C!6788=='H	,AAA)%0G'.77#8D8r[   c                n    | j                   v rt        d      j                  | j                          y )Nz+Cycle in CMake inputs/dependencies detected)rX   r   r$  )rj   
processings    rY   detect_cyclez:CMakeInterpreter.pretend_to_be_meson.<locals>.detect_cycle  s-    xx:%$%RSSchh'r[   c                     |       }t        | j                  j                        dk(  r|S  || j                        S )Nr   )r   r)  rm  rk  )r/  tgt_varr'  r  s     rY   resolve_ctgt_refz>CMakeInterpreter.pretend_to_be_meson.<locals>.resolve_ctgt_ref  s:    !#&G388##$)w		22r[   c                	    "|        g }g }g }g }g }g }g }| j                   D ]6  }t        |t              sJ |j                  +vr *|       | #|      gz  }8 | j                  D ]6  }t        |t              sJ |j                  +vr *|       | #|      gz  }8 | j
                  D ]5  }t        |t              s|j                  +vr )|       | #|      gz  }7 || j                  z  }|| j                  z  }| j                  D ]O  }	|	j                  }
|
j                  +vr )|
       | ,|	      gz  }||	j                         gz  }|
|vsJ||
gz  }Q |D ]M  }
|
j                  D ]<  }t        |      r||v r| ,|
j                  t        |                  gz  }||gz  }> O | j!                         }|st#        d| j$                   d      | j                   d}| j                   d}| j                   d}| j                   d}| j                   d}| j                  }(j'                  | j(                  | j*                        }|(j-                  | j(                  | j.                  | j0                  z         | %|      |(j3                  | j(                  | j4                        |D cg c]  } &|d       c}d	}|r| j6                  r| j6                  |d
<   | j8                  j;                         D ](  \  }}(j=                  | j(                  ||      || d<   * |dk(  r| j>                  |d<   n|dk(  r| j>                  |d<   | j.                  | j0                  z    %|      | j@                   %|      d}|r||z  } !| $d| jB                              } !| $d| jD                  ddi            } !|   %|       %|      g            }|||g}|dk(  r|d=  !| $d|            }||gz  }d }d }np !| $d|            } !| $|| %|      g||            }|||gz  }|dv r !| $d|            }||gz  }n"|dk(  r|d=  !| $d|            }||gz  }nd }-xjF                  |z  c_#        |||||d+| j                  <   | j                  '| j(                  <   y c c}w )NzUnknown target type ""_inc_dir_sys_src_depextract_all_objects)build_by_default	link_argsr   r  r   r   objectsr   _argsrE   r   rB   pic)r7  r   compile_argsr  r  	is_systemTrF   r   declare_dependency)r  r   >   rD   rB   rC   incsrcdeprj   func)$r   rq   rr   rX   r   r   rw   r   r   r   r)  rq  rm  r!   r   r   r   r   r   get_installrp   r   get_link_argsr   r   get_override_optionsr   r   r   r   get_compile_argsr   r   r   r   lines).rj   r   
objec_libsr   r   generated_filenamesr  dependenciesri   r  r)  r   tgt_funcinc_vardir_varsys_varsrc_vardep_varr,  install_tgtrh   
tgt_kwargsr   r   
dep_kwargsdir_nodesys_nodeinc_node	node_listdep_nodesrc_nodetgt_noder  r#  r*  r'  r  r  r   name_maprJ  process_custom_targetprocess_targetrS  r-  root_cbs.                                   rY   r]  z<CMakeInterpreter.pretend_to_be_meson.<locals>.process_target!  sq    )+I)+J$&G<>I/1<>N+-L]] .!!_55566*"1%k!n--		.
 __ /!!_55566*"1%{1~..
	/
 [[ 1!!%:;66*)!,Q 001 s{{"Gs}}$G.. -}}99I-)$/.x899	#(9(9(;'<<#~-"tf,N- ' / /A$Q<10C+C "24<<Q3H"I!JJI'A3.'// ~~'H$'<SXXJa%HII 
$'G
$'G
$'G
$'G
$'GhhG!--cnnckkJK %0$223>>3>>TWTfTfCfg&'.w'7&$+$@$@QTQeQe$fFPQF1&;<Q-J s,/OO
=)  ,,224 _S,3,D,DS^^UXZ],^
cU%=)_ <'$'GG
5!--$'GG
5! !^^c.@.@@$W- # 7 7'.w'7	-J \)	 gx0Es||'TUHgx0EsGWGWZegkYl'mnHgugg.>@P-Q'RSH!8X6I=({+!'84HQ[+\]hZ'	!'8GW+EF!'8HwPWHX>e[d>egq+rsh11	CC%gx8LU_/`aH(+I0";/%gx8LU_/`aH(+I"G MMY&M*1''Zaks"tIchh'*xxHS^^$q Rs   Sc           
       
  |        | j                   }d	fd}g }|t        j                         z  }|ddgz  }|ddgz  }| j                  r/|dg| j                  D cg c]  }|j	                          c}z   z  }|d| j
                  j	                         gz  }| j                  D ]  }||D cg c]
  } ||       c}dgz   z  }! | j                  D cg c]
  } ||       c}| j                  || j                  D cg c]
  } ||       c}d	}xj                   | 
d
| j                   g|            gz  c_
        d d d |d
d| j                   <   | j                   | j                  <   y c c}w c c}w c c}w c c}w )Nc                D   t        | t              r| j                  vr |         |       S t        | t              r| j                  vr |         |       S t        | t              r2| j
                  j                  vr | j
                          |       S | S r_   )rq   rr   rX   rw   r!  r)  )rh   r'  r\  r]  rS  r-  s    rY   resolve_sourcez[CMakeInterpreter.pretend_to_be_meson.<locals>.process_custom_target.<locals>.resolve_source  s    a1vvY.&q)&q>)a!67vvY.-a0&q>)#89vv{{)3-aff5+A..Hr[   z
--internalcmake_run_ctgtz-oz@OUTPUT@z-Oz-dz;;;)inputoutputrz  r   custom_targetr>  )rh   zKT.Union[str, ConverterTarget, ConverterCustomTarget, CustomTargetReference]rm   zT.Union[str, IdNode, IndexNode])rX   r   get_meson_commandrx   r   r{  rz  r|  rm  r   rG  rp   )rj   r,  ra  rz  rh   r  rR  r#  r*  r'  r  r[  r\  r]  rS  r-  r^  s          rY   r\  zCCMakeInterpreter.pretend_to_be_meson.<locals>.process_custom_target  s    hhG " @BGx1133G&677Gj))G##D63;O;O$PaQZZ\$PPPcoo66899G {{ Fs;!N1-;ugEEF 69ZZ@.+@++"7:{{C!N1-C	-J MMfWh
T^._`aaM*.tDQXbq"rIchh'*xxHS^^$! %Q
 < A Ds   $E;5F FF

)r  r   )r  r   r   
TYPE_mixedrm   r$   )r   r   rm   r1   )r  r   rm   r,   )r  r   rm   r-   )r  rr  rm   r0   )r  TYPE_mixed_listrm   r%   )r  r%   rk  rr  rm   r.   )r  rh  rm   r(   )NN)rX   r   r   T.Optional[TYPE_mixed_list]r  T.Optional[TYPE_mixed_kwargs]rm   r'   )
r  r%   rX   r   r   ri  r  rj  rm   r/   )r"  r   r  r%   rm   r*   )rj   zFT.Union[ConverterTarget, ConverterCustomTarget, CustomTargetReference]rm   r-   )rj   z/T.Union[ConverterTarget, ConverterCustomTarget]rm   rn   )r/  r!  rm   zT.Union[IdNode, IndexNode])rj   rr   rm   rn   )rj   rw   rm   rn   )
r  r   r&   rG  r   r  rX   r  r  r  )rb   rJ  r)  rj   r  r#  r*  r'  r  r  r  r   r[  r  r	  r\  r]  rS  r)  r-  r^  r  r  r  s   ``  @@@@@@@@@@@@@@@@@@@@rY   pretend_to_be_mesonz$CMakeInterpreter.pretend_to_be_meson  sH      !DEE	J	.	>	,	5	j 	j	M	=
	 
			a 		a	I  ((9t/@/@.ADNN.RSTT
 #%
?A	%'	9	(
	3F	0 F	0 F	0P/	0 /	0d '' 	,Dyy	)%d+	, << 	$Cxxy(s#	$ "+!)r[   c                    t        |      }|| j                  v r| j                  |   S || j                  v r.| j                  |   }|| j                  v sJ | j                  |   S y r_   )rZ   r  r  )rb   r   prx_tgts      rY   target_infozCMakeInterpreter.target_info  ss     'v.d,,,))'22T+++++F3FT33333))&11r[   c                H    t        | j                  j                               S r_   )r  r  rg   r   s    rY   target_listzCMakeInterpreter.target_list  s    D**//122r[   N)r  r   r&  r   r   rd  r  z	'Backend')r  rl   rm   r   )r  rl   rm   rn   rg  )rJ  r3   rm   r&   )r   r   rm   zT.Optional[T.Dict[str, str]])rm   rl   )
r   r   r   rc   r  r  r  rk  rn  rp  r   r[   rY   r  r    s-    #J6pI"JWXjX	3r[   r  )rX   r   rm   r   )c
__future__r   	functoolsr   osr   pathlibr   r   typingTcommonr   r	   r
   r   r   r  r   executorr   r  r   r   traceparserr   tracetargetsr   r   r   r   r   r   r   r   r   	mesondatar   compilers.compilersr   r   r   r   r    r!   programsr"   rI  r#   mparserr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   TYPE_CHECKINGr2   r3   r4   _typingr5   backend.backendsr6   environmentr7   Unionr   rr  r  rg  Sequencerh  DictTYPE_mixed_kwargsr  r[  r  r  r  r  r#  rP  r   rT   rZ   r]   rr   r!  rw   r  r   r[   rY   <module>r     sh  " #    	  i i ! # 5 ) 5  e e   { { & -   $ ??91/*)c4x78Jggj!**Z*@@AOsO34  '%&&& {   !I   ,_ BJJ/0 O' O'bs= s=j- -"dF dFLu3 u3r[   