
    -Phx                       d dl mZ d dlZddlmZmZ d dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZ d dlZddlmZmZmZmZmZmZmZ dd	lmZ dd
lmZ d dlZd dlZd dlZd dlZ e j!        rd dl"Z"d dl#m$Z$ ddlm%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddlm/Z/ ddl0m1Z1 ddl2m3Z3 ddlm4Z4m5Z5 ddl6m7Z7  G d de$          Z8e j9        e:ej;        f         Z<e j=        e j=        e:df         e:e/e j=        e:df         e*f         Z>e j=        e:e j=        e:df         f         Z?e j@        e:eAejB        e:         ejB        eA         f         ZCdZDeDZEeEF                    d          rOeEG                    d          ZHdeHd<    e: eIeHd                   dz             eHd<   dJ                    eH          ZEdKd ZK G d! d"e          ZL G d# d$ejM                  ZN G d% d&          ZO G d' d(          ZP G d) d*          ZQ e jR        d+          ZS G d, d-          ZTdLd0ZUdMd3ZVdMd4ZWdMd5ZXdNd6ZYdOd:ZZdPdQd=Z[dRd?Z\dSdBZ]dTdUdGZ^dVdIZ_ e`h dJ          ZadS )W    )annotationsN   )mlogoptions)	lru_cache)chain)OrderedDict)MesonExceptionMachineChoice
PerMachinePerMachineDefaultabledefault_prefixstringlistifypickle_load)	OptionKey)CmdLineFileParser)Protocol)dependencies)CompilerCompileResult	RunResultCompileCheckMode)TV_DepID)Environment)FileOrString)CMakeCacheEntry)
SubProject)ElementaryOptionValuesMutableKeyedOptionDictType)BuildTargetc                  <    e Zd ZU dZded<   ded<   ded<   ded<   dS )	SharedCMDOptionsa  Representation of command line options from Meson setup, configure,
        and dist.

        :param projectoptions: The raw list of command line options given
        :param cmd_line_options: command line options parsed into an OptionKey:
            str mapping
        zT.Dict[OptionKey, str]cmd_line_optionsT.List[str]projectoptions
cross_filenative_fileN)__name__
__module____qualname____doc____annotations__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/coredata.pyr"   r"   0   sN         	 	 	1000####      r.   r"   .z1.8.2z.99.0return	list[str]c                 *    t           j        dd         S )Nr   r3   )r   buildtypelistr-   r.   r/    get_genvs_default_buildtype_listr8   X   s      2&&r.   c                  &     e Zd ZdZd
d fd	Z xZS )MesonVersionMismatchExceptionzQBuild directory generated with Meson version is incompatible with current version old_versionstrcurrent_version	extra_msgr4   Nonec                z    t                                          d| d| d|z              || _        || _        d S )Nz6Build directory has been generated with Meson version z1, which is incompatible with the current version r0   )super__init__r<   r>   )selfr<   r>   r?   	__class__s       r/   rC   z&MesonVersionMismatchException.__init__`   si     ^R] ^ ^KZ^ ^ ^$% 	& 	& 	& '.r.   r;   )r<   r=   r>   r=   r?   r=   r4   r@   )r(   r)   r*   r+   rC   __classcell__)rE   s   @r/   r:   r:   ^   sH        [[/ / / / / / / / / / /r.   r:   c                  2    e Zd ZdZdZdZed
d            Zd	S )DependencyCacheTyper   r      dep'dependencies.Dependency'r4   'DependencyCacheType'c                X    |j         dk    r| j        S |j         dk    r| j        S | j        S )N	pkgconfigcmake)	type_name
PKG_CONFIGCMAKEOTHER)clsrK   s     r/   	from_typezDependencyCacheType.from_typen   s6     =K''>!=G##9yr.   N)rK   rL   r4   rM   )r(   r)   r*   rT   rR   rS   classmethodrV   r-   r.   r/   rI   rI   h   sA        EJE   [  r.   rI   c                  6    e Zd ZddZddZddZddZddZdS )DependencySubCachetype_rI   c                $    |g| _         i | _        d S N)types_DependencySubCache__cache)rD   rZ   s     r/   rC   zDependencySubCache.__init__z   s    W
MOr.   keyT.Tuple[str, ...]r4   rL   c                    | j         |         S r\   r^   rD   r_   s     r/   __getitem__zDependencySubCache.__getitem__~   s    |C  r.   valuer@   c                    || j         |<   d S r\   rb   )rD   r_   re   s      r/   __setitem__zDependencySubCache.__setitem__   s    !Sr.   boolc                    || j         v S r\   rb   rc   s     r/   __contains__zDependencySubCache.__contains__   s    dl""r.   %T.Iterable['dependencies.Dependency']c                4    | j                                         S r\   )r^   valuesrD   s    r/   rm   zDependencySubCache.values   s    |""$$$r.   N)rZ   rI   )r_   r`   r4   rL   )r_   r`   re   rL   r4   r@   )r_   r`   r4   rh   )r4   rk   )r(   r)   r*   rC   rd   rg   rj   rm   r-   r.   r/   rY   rY   x   s|        P P P P! ! ! !" " " "# # # #% % % % % %r.   rY   c                  Z    e Zd ZdZddZddZddZd dZd!dZd"dZ	ddZ
d#dZd$dZdS )%DependencyCachezClass that stores a cache of dependencies.

    This class is meant to encapsulate the fact that we need multiple keys to
    successfully lookup by providing a simple get/put interface.
    builtinsoptions.OptionStorefor_machiner   c                    t                      | _        || _        t          j        d          | _        t          j        d          | _        d S )Npkg_config_pathcmake_prefix_path)r	   _DependencyCache__cache_DependencyCache__builtinsr   r   _DependencyCache__pkg_conf_key_DependencyCache__cmake_key)rD   rq   rs   s      r/   rC   zDependencyCache.__init__   sB    GR}}"%/0ABB",-@AAr.   rZ   rI   r4   r`   c                <   t           j        t          | j                            | j                            t           j        t          | j                            | j                            t           j        g i}||v s
J d            t          ||                   S )Nz;Someone forgot to update subkey calculations for a new type)
rI   rR   r   rx   get_value_forry   rS   rz   rT   tuple)rD   rZ   datas      r/   __calculate_subkeyz"DependencyCache.__calculate_subkey   s    *M$/:W:WX\Xk:l:l,m,m%}T_5R5RSWSc5d5d'e'e%r:

 }}}[}}}T%[!!!r.   T.Iterator['TV_DepID']c                *    |                                  S r\   )keysrn   s    r/   __iter__zDependencyCache.__iter__   s    yy{{r.   r_   
'TV_DepID'rK   rL   r@   c                    t                               |          }|| j        vrt          |          | j        |<   |                     |          }|| j        |         |<   d S r\   )rI   rV   rw   rY   "_DependencyCache__calculate_subkey)rD   r_   rK   tsubkeys        r/   putzDependencyCache.put   s`    ))#..dl"" 21 5 5DL((++$'S&!!!r.   %T.Optional['dependencies.Dependency']c                    	 | j         |         }n# t          $ r Y dS w xY w|j        D ]1}|                     |          }	 ||         c S # t          $ r Y .w xY wdS )zdGet a value from the cache.

        If there is no cache entry then None will be returned.
        N)rw   KeyErrorr]   r   )rD   r_   valr   r   s        r/   getzDependencyCache.get   s    
	,s#CC 	 	 	44	  	 	A,,Q//F6{"""   ts    
 A


AA%T.Iterator['dependencies.Dependency']c              #  v   K   | j                                         D ]}|                                E d {V  d S r\   )rw   rm   )rD   cs     r/   rm   zDependencyCache.values   sP      $$&& 	" 	"Axxzz!!!!!!!!	" 	"r.   c                N    t          | j                                                  S r\   )iterrw   r   rn   s    r/   r   zDependencyCache.keys   s    DL%%''(((r.   BT.Iterator[T.Tuple['TV_DepID', T.List['dependencies.Dependency']]]c              #     K   | j                                         D ]K\  }}g }|j        D ]6}|                     |          }||v r|                    ||                    7||fV  Ld S r\   )rw   itemsr]   r   append)rD   kvvsr   r   s         r/   r   zDependencyCache.items   s      L&&(( 	 	DAq24BW ) )0033Q;;IIai(((R%KKKK	 	r.   c                8    | j                                          d S r\   )rw   clearrn   s    r/   r   zDependencyCache.clear   s    r.   N)rq   rr   rs   r   )rZ   rI   r4   r`   )r4   r   )r_   r   rK   rL   r4   r@   )r_   r   r4   r   )r4   r   )r4   r   r4   r@   )r(   r)   r*   r+   rC   r   r   r   r   rm   r   r   r   r-   r.   r/   rp   rp      s         B B B B" " " "   ( ( ( (   $" " " ") ) ) )        r.   rp   c                  J    e Zd ZdZddZddZddZddZedd            Z	dS )CMakeStateCachezClass that stores internal CMake compiler states.

    This cache is used to reduce the startup overhead of CMake by caching
    all internal CMake compiler variables.
    r4   r@   c                "    i | _         i | _        d S r\   )_CMakeStateCache__cachecmake_cachern   s    r/   rC   zCMakeStateCache.__init__   s    >@;=r.   2T.Iterator[T.Tuple[str, T.Dict[str, T.List[str]]]]c                N    t          | j                                                  S r\   r   r   r   rn   s    r/   r   zCMakeStateCache.__iter__       DL&&(()))r.   c                N    t          | j                                                  S r\   r   rn   s    r/   r   zCMakeStateCache.items   r   r.   languager=   	variablesT.Dict[str, T.List[str]]c                l    || j         vr
i | j         |<   | j         |                             |           d S r\   )r   update)rD   r   r   s      r/   r   zCMakeStateCache.update   s<    4<''%'DL"X%%i00000r.   
T.Set[str]c                N    t          | j                                                  S r\   )setr   r   rn   s    r/   	languageszCMakeStateCache.languages   s    4<$$&&'''r.   Nr   )r4   r   )r   r=   r   r   )r4   r   )
r(   r)   r*   r+   rC   r   r   r   propertyr   r-   r.   r/   r   r      s         > > > >* * * ** * * *1 1 1 1
 ( ( ( X( ( (r.   r   _Vc                     e Zd ZdDdZedEd
            ZdFdZdFdZedGd            ZdHdZ	dIdZ
dJdZdKdLd!ZdFd"ZdMd$ZdNd&ZdOd*Z ed+,          dOd-            Zej        fdPd/ZdQdRd2ZdSdTd7ZdUd<ZdVd@ZdWdBZdFdCZd+S )XCoreDatacmd_optionsr"   scratch_dirr=   meson_commandr$   c                   dddddd| _         t          t          j                                                              | _        t          t          j                                                              | _        t          t          j                                                              | _        || _        i | _	        t          | _
        |                     ||d          | _        t          t                      t                                | _        t!          j        |                                           | _        i | _        t+                      | _        t/          j        |                                 t3          | j        t4          j                  t3          | j        t4          j                            | _        t                      | _        t                      | _        t          tA                      tA                                | _!        |                     ||d          | _"        | #                                 | $                                 d S )Nz$8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942z$3AC096D0-A1C2-E12C-1390-A8335801FDABz$2150E333-8FDC-42A3-9474-1A3956D46DE8)defaultr   cpptest	directorycrossnative)%
lang_guidsr=   uuiduuid4upper	test_guid
regen_guidinstall_guidr   target_guidsversion_CoreData__load_config_filescross_filesr   r	   	compilersr   OptionStoreis_cross_buildoptstoreoptions_filesr   initialized_subprojectsr   r   rp   r   BUILDHOSTdepscompiler_check_cacherun_check_cacher   r   config_files"builtin_options_libdir_cross_fixupinit_builtins)rD   r   r   r   s       r/   rC   zCoreData.__init__   s   =79:?
 
 TZ\\**0022djll++1133
--3355*33KgVV<F{}}VaVcVc<d<d+D,?,?,A,ABB
 QS
 4755$ 2G1N!!DM=+>??DM=+=>>2@ 2@	
 WbVcVc!HS 9C?CTCTVeVgVg8h8h !44[+xXX//111r.   ftyper4   c                   |dk    r| j         }n| j        }|sg S g }g }g }t          |          D ]\  }}t          j                            t          j                            |                    }t          j                            |          rqt          j                            |          r3|	                    t          j        
                    |                     t          j                            |          r3|	                    t          j        
                    |                     nt          j                            |t          j                     d| d          }	t          |d          5 }
t          |	dd          5 }|                    |
                                           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	                    |	           |	||<   t$          j        dk    rt          j                            dt          j                            d	                    gt          j                            d
d                              d          z   }|D ]Z}t          j                            |d||          }t          j                            |          r|	                    |            n[|	                    |           |	                    |           |r?|rt/          j        d|dg|R   t/          j        d|dg|R   t3          d| d|           |S )Nr   r0   z.iniutf-8encodingwwin32XDG_DATA_HOMEz~/.local/shareXDG_DATA_DIRSz/usr/local/share:/usr/share:mesonzFound invalid candidates forzfile:z&Could not find any valid candidate forzfiles:zCannot find specified z file: )r&   r'   	enumerateospath
expanduser
expandvarsexistsisfiler   abspathisdirjoinr   r   openwritereadsysplatformenvironr   splitr   logr
   )r   r   r   	filenamesfound_invalidmissingrealiffcopyrfwfpathsr   path_to_trys                  r/   __load_config_fileszCoreData.__load_config_files#  s    G#.II#/I 	I%'!i(( "	" "	"DAq""27#5#5a#8#899Aw~~a   7>>!$$ KK 2 2333W]]1%% !((););<<<<
 GLL6S6S6S6S6STTEa'222 0b!%w??? 02HHRWWYY///0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 KK&&& $)IaL|w&&JNN?BG4F4FGW4X4XYYJNN?4QRRXXY\]]^ " & &D"$',,tWeQ"G"GKw~~k22 K000 NN1%%%q!!!! 	M Y7X-XXXXH=uhYQXYYYY !K%!K!K!K!KLLLs6   =G(G8GGGGGG	"G	r@   c                `    | j         r&dt          j        t          d                   _        d S d S )Nliblibdir)r   r   BUILTIN_OPTIONSr   r   rn   s    r/   r   z+CoreData.builtin_options_libdir_cross_fixup]  s:      	ICHG#Ih$7$78@@@	I 	Ir.   c                \   t           j                                        D ]!\  }}|                     | j        ||           "t          t                    D ]V}t           j                                        D ]5\  }}|                     | j        |                    |          |           6Wd S )Nmachine)	r   r  r   add_builtin_optionr   r   r   BUILTIN_OPTIONS_PER_MACHINEevolve)rD   r_   optrs   s       r/   r   zCoreData.init_builtinsd  s    /5577 	= 	=HC##DM3<<<<.. 	] 	]K#?EEGG ] ]S''szz+z7V7VX[\\\\]	] 	]r.   r   rr   r_   r   r  options.AnyOptionTypec                H   t          j         |          }|j        r
|j        rd S n7t          j        ||t                                }|                    |           |                                }|r|                     |||           d S | 	                    ||           d S r\   )
copy
subprojectyieldingr   argparse_prefixed_defaultr   	set_valueget_module_prefixadd_module_optionadd_system_option)r   r_   r  	new_value
modulenames        r/   r  zCoreData.add_builtin_optionl  s     inn> 	%|   9S.**, ,IMM)$$$**,,
 	1&&z3<<<<<&&sC00000r.   backend_namec           	        |dk    r3| j                             dt          j        dddd                     d S |                    d          r1| j                             dt          j        ddd	                     d S d S )
Nninjabackend_max_linksz;Maximum number of linker processes to run or 0 for no limitr   )	min_valuer   backend_startup_projectz+Default project to execute in Visual Studior;   )r   r  r   UserIntegerOption
startswithUserStringOption)rD   r  s     r/   init_backend_optionszCoreData.init_backend_options  s    7""M++,?AZ#B B B      $$T** 	M++,EwG_)=H H     	 	r.   target'BuildTarget'T.Union[str, OptionKey]r   c                ^   t          |t                    rd|vsJ t          ||j                  }n|}|j        |j        k    r|                    |j                  }| j                            |          \  }}|                    |j                  }||	                    |          S |S )Nr   r  )

isinstancer=   r   r  r
  r   get_value_object_and_value_forget_overridenamevalidate_value)rD   r"  r_   newkeyoption_objectre   overrides          r/   get_option_for_targetzCoreData.get_option_for_target  s    c3 	c>>>>sF$566FFF 111 ]]f.?]@@F!%!M!Mf!U!U&&v{33 //999r.   r   rh   c                    t          |dg           }|j        d d          }|j                                        D ]\  }}|                    | d|             | j                            ||          S )N
unset_opts=)getattrr%   r#   r   r   r   set_from_configure_command)rD   r   r1  all_Dkeystrvalstrs         r/   r4  z#CoreData.set_from_configure_command  s    WlB77
&qqq)%6<<>> 	/ 	/NFFLLF--V--....}77zJJJr.   Ffirst_invocationc                    d}	 | j                             |||          }n-# t          $ r  t          dt	          |                     w xY w||z  }|j        dk    r||                     |          z  }|S )NFz$Tried to set unknown builtin option 	buildtype)r   
set_optionr   r
   r=   r*  _set_others_from_buildtype)rD   r_   re   r8  dirtychangeds         r/   r;  zCoreData.set_option  s    	Tm..sE;KLLGG 	T 	T 	T !RC!R!RSSS	T8{""T44U;;;Es	   ! *Ac                    | j         j                                         | j         j                                         | j                                         | j                                         d S r\   )r   hostr   buildr   r   rn   s    r/   clear_cachezCoreData.clear_cache  s^    		!'')))""$$$$$r.   AT.List[T.Union[T.Tuple[str, str, str], T.Tuple[str, bool, bool]]]c                   g }| j                             d          }|dk    rd}d}n6|dk    rd}d}n+|dk    rd}d}n |d	k    rd
}d}n|dk    rd}d}n
|dk    sJ g S | j                             d          }| j                             d          }||k    r|                    d||f           ||k    r|                    d||f           |S )Nr:  plainFdebugr1   Tdebugoptimized2release3minsizescustomoptimization)r   r|   r   )rD   resultre   r  rF  
actual_optactual_debugs          r/   get_nondefault_buildtype_argsz&CoreData.get_nondefault_buildtype_args  s   TV++K88GCEEgCEE&&&CEEiCEEiCEEH$$$$I]00@@
}227;;MM>:s;<<<5  MM7L%8999r.   re   c                8   d}|dk    rd}d}n6|dk    rd}d}n+|dk    rd}d}n |dk    rd	}d}n|d
k    rd}d}n
|dk    sJ dS || j                             t          d          |          z  }|| j                             t          d          |          z  }|S )NFrE  rF  r1   TrG  rH  rI  rJ  rK  rL  rM  rN  )r   r;  r   )rD   re   r=  r  rF  s        r/   r<  z#CoreData._set_others_from_buildtype  s    GCEEgCEE&&&CEEiCEEiCEEH$$$$5)))N*C*CSIII)))G*<*<eDDDr.   rs   r   langc                    t          | d|          }t          j        d| j                            |                    S )N_argsr  r$   )r   Tcastr   	get_value)rD   rs   rT  r_   s       r/   get_external_argszCoreData.get_external_args  s<    4<<<vmT]%<%<S%A%ABBBr.   N)maxsizec                    t          | d|          }t          j        d| j                            |                    S )N
_link_argsr  r$   )r   rW  rX  r   r|   )rD   rs   rT  linkkeys       r/   get_external_link_argszCoreData.get_external_link_args  sA     t///EEEvmT]%@%@%I%IJJJr.   when_building_forc                V    |t           j        k    rdS t          | j                  dk    S )NFr   )r   r   lenr   )rD   r`  s     r/   r   zCoreData.is_cross_build  s+     33354#$$q((r.   Tshut_up_pylintc                    |rdS d}|                                  rJ t          j        D ]E}| j                            |j                  }|| j                            ||j        d          z  }F| j                                        D ]u\  }}|j	        t          j        u r]|                                }	 | j                            |          }||                    |j                  z  }e# t          $ r Y qw xY wv|S )NFT)r   r   r	  r   get_value_object_forr*  r;  re   r   r  r   r   as_hostget_value_objectr  r   )	rD   rc  r=  r   obkbvhkhvs	            r/   $copy_build_options_from_regular_onesz-CoreData.copy_build_options_from_regular_ones  s    	5&&(((((4 	@ 	@A2216::AT]--a$???EEm))++ 	 	FBz]000ZZ\\77;;BR\\"(333EE   H 1 s   57C--
C:9C:r;   opts_to_setT.Dict[OptionKey, T.Any]r  c                .   d}|                                  sd |                                D             }t          d          }||v rw| j                            ||                   }t
          j        D ]J}||vrDt
          j        |                             ||          }|| j        	                    ||          z  }Kg }	|                                D ]\  }
}|
|k    r|

                    d           | j        v r|| 	                    |
||          z  }D|
j        t          j        k    r/| j                            |
          s|	                    |
           |	r|r;g }|	D ]4}|                                }|| j        vr|                    |           5|}	|	rKd                    t%          d |	D                                 }|rd| dnd	}t'          | d
| d          |                                  s||                                 z  }|S )NFc                @    i | ]\  }}|j         t          j        u||S r-   )r  r   r   .0r   r   s      r/   
<dictcomp>z(CoreData.set_options.<locals>.<dictcomp>  s.    hhhDAq19TaTgCgCg1aCgCgCgr.   prefixr&  z, c              3  4   K   | ]}t          |          V  d S r\   r=   )rs  rL  s     r/   	<genexpr>z'CoreData.set_options.<locals>.<genexpr>6  s(      6W6W!s1vv6W6W6W6W6W6Wr.   zIn subproject z: r;   zUnknown options: "")r   r   r   r   sanitize_prefixr   BUILTIN_DIR_NOPREFIX_OPTIONSr  prefixed_defaultr;  r
  r  r   r   is_compiler_optionr   as_rootr   sortedr
   rm  )rD   rn  r  r8  r=  pfkru  r_   r   unknown_optionsr   r   really_unknownuotopkeyunknown_options_strsubs                    r/   set_optionszCoreData.set_options  sa   ""$$ 	ihhK,=,=,?,?hhhK!!+]22;s3CDDF; @ @k))!1#6GGVTTCT]55c3???E-/%%'' 	* 	*DAqCxxT**dm;;A/?@@@m111$-:Z:Z[\:]:]1&&q))) 	W 	1 "$) 2 2BZZ\\FT]22&--b111"0 W&*ii6W6W6W6W6W0W0W&X&X#9CK5z5555$%U%U?R%U%U%UVVV""$$ 	AT>>@@@Er.   	c_optionsr   envr   c                X   |                                 D ]\  }}t          |j         d |          }|dk    r(|j        dk    r| j                            d||           J|dk    r(|j        dk    r| j                            d||           x| j                            |||           d S )Nobjcc_stdr   objcppcpp_stdr   )r   r   r*  r   add_compiler_option)	rD   r  rT  rs   r  r  r   rh  comp_keys	            r/   add_compiler_optionszCoreData.add_compiler_options?  s    OO%% 	E 	EDAq AFdK@@Hv~~!&G"3"311#xCCCC!!af	&9&911%1EEEE11$!DDDD	E 	Er.   compT.Type['Compiler']'Environment'c                    ddl m } |                    ||||                                          D ]!\  }}| j                            |||           "dS )zOAdd global language arguments that are needed before compiler/linker detection.r   )r   N)r   get_global_optionsr   r   r  )rD   rT  r  rs   r  r   gopt_keygopt_valobjs           r/   add_lang_argszCoreData.add_lang_argsK  sx     	)((((( &/%A%A$k[^%_%_%e%e%g%g 	K 	K!HkM--dHkJJJJ	K 	Kr.   r   c                d   |                      |                                ||j        ||           |j        D ]c}|r|                    |          }n|}|| j        vr=| j                            |t          j        t          j
        |                              d|                                  d S )Nr&  )r  get_optionsrs   base_optionsr
  r   r  r  deepcopyr   COMPILER_BASE_OPTIONSemit_base_options_warnings)rD   rT  r  r  r  r_   skeys          r/   process_compiler_optionsz!CoreData.process_compiler_optionsU  s    !!$"2"2"4"4dD<LcS]^^^$ 	i 	iC zzZz884=((//dmGDabeDf6g6ghhh'')))))r.   c                    t          d          }|| j        v rG| j                            |          r/t          j        d          }t          j        |dd           d S d S d S )N	b_bitcodeaG  Base option 'b_bitcode' is enabled, which is incompatible with many linker options.
                                     Incompatible options such as 'b_asneeded' have been disabled.'
                                     Please see https://mesonbuild.com/Builtin-options.html#Notes_about_Apple_Bitcode_support for more details.TF)oncefatal)r   r   rY  textwrapdedentr   warning)rD   bcodekeymsgs      r/   r  z#CoreData.emit_base_options_warningsb  sw    [))t}$$)@)@)J)J$/ #S T TC L4u555555	 %$$$r.   )r   r"   r   r=   r   r$   )r   r"   r   r=   r   r=   r4   r$   r   )r   rr   r_   r   r  r  r4   r@   )r  r=   r4   r@   )r"  r#  r_   r$  r4   r   )r   r"   r4   rh   )F)r_   r   r8  rh   r4   rh   )r4   rC  )re   r=   r4   rh   )rs   r   rT  r=   r4   r$   )r`  r   r4   rh   T)rc  rh   r4   rh   )r;   F)rn  ro  r  r=   r8  rh   r4   rh   )r  r   rT  r=   rs   r   r  r   r  r=   r4   r@   )
rT  r=   r  r  rs   r   r  r  r4   r@   )
rT  r=   r  r   r  r   r  r=   r4   r@   )r(   r)   r*   rC   staticmethodr   r   r   r  r!  r/  r4  r;  rB  rR  r<  rZ  r   r_  r   r   r   rm  r  r  r  r  r  r-   r.   r/   r   r      s'       + + + +Z 7 7 7 \7rI I I I] ] ] ] 1 1 1 \1&      "K K K K    % % % %   :   6C C C C
 YtK K K K
 AN@R ) ) ) ) )
    (( ( ( ( (T
E 
E 
E 
EK K K K* * * *6 6 6 6 6 6r.   r   	build_dirr=   c                D    t           j                            | dd          S )Nmeson-privatezcmd_line.txt)r   r   r   )r  s    r/   get_cmd_line_filer  j  s    7<<	?NCCCr.   r   r@   c                   t          |           }t          j                            |          sd S t	                      }|                    |           d |d                                         D             }|                    |j                   ||_        |d         }|j	        s-t          j        |                    dd                    |_	        |j        s/t          j        |                    dd                    |_        d S d S )Nc                >    i | ]\  }}t          j        |          |S r-   )r   from_stringrr  s      r/   rt  z&read_cmd_line_file.<locals>.<dictcomp>w  s)    KKKA	q	!	!1KKKr.   r   
propertiesr&   z[]r'   )r  r   r   r   r   r   r   r   r#   r&   astliteral_evalr   r'   )r  r   filenameconfigdr  s         r/   read_cmd_line_filer  m  s    ++H7>>(##   F
KK 	LK	1B1H1H1J1JKKKAHHW%&&& G%J R -jnn\4.P.PQQ T ".z~~mT/R/RSST Tr.   c                v   t          |           }t                      }t                      }|j        r
|j        |d<   |j        r
|j        |d<   d |j                                        D             |d<   ||d<   t          |dd          5 }|                    |           d d d            d S # 1 swxY w Y   d S )	Nr&   r'   c                N    i | ]"\  }}t          |          t          |          #S r-   rw  rr  s      r/   rt  z'write_cmd_line_file.<locals>.<dictcomp>  s*    UUUDAqQQUUUr.   r   r  r   r   r   )	r  r   r	   r&   r'   r#   r   r   r   )r  r   r  r  r  r   s         r/   write_cmd_line_filer    s	    ++H  F(3J 6#*#5
<  8$+$7
=!UUG4L4R4R4T4TUUUF9%F<	hg	.	.	. !Q                 s   B..B25B2c                b   t          |           }t                      }|                    |           |d                             d |j                                        D                        t          |dd          5 }|                    |           d d d            d S # 1 swxY w Y   d S )Nr   c                N    i | ]"\  }}t          |          t          |          #S r-   rw  rr  s      r/   rt  z(update_cmd_line_file.<locals>.<dictcomp>  s*    ZZZAc!ffc!ffZZZr.   r   r   r   )r  r   r   r   r#   r   r   r   )r  r   r  r  r   s        r/   update_cmd_line_filer    s     ++H  F
KK
9ZZ9Q9W9W9Y9YZZZ[[[	hg	.	.	. !Q                 s   B$$B(+B(c                    d | j                                         D             }| j        r|d | j        D             z  }| j        r|d | j        D             z  }d                    d |D                       S )Nc                Z    g | ](\  }}d                      t          |          |          )S )z-D{}={})formatr=   rr  s      r/   
<listcomp>z+format_cmd_line_options.<locals>.<listcomp>  s2    XXXtq!yA**XXXr.   c                    g | ]}d | S )z--cross-file=r-   rs  r   s     r/   r  z+format_cmd_line_options.<locals>.<listcomp>  s!    DDDA'A''DDDr.   c                    g | ]}d | S )z--native-file=r-   r  s     r/   r  z+format_cmd_line_options.<locals>.<listcomp>  s!    FFFQ(Q((FFFr.    c                6    g | ]}t          j        |          S r-   )shlexquote)rs  xs     r/   r  z+format_cmd_line_options.<locals>.<listcomp>  s     555U[^^555r.   )r#   r   r&   r'   r   )r   cmdlines     r/   format_cmd_line_optionsr    s    XXw7O7U7U7W7WXXXG EDD1CDDDD GFF'2EFFFF8855W555666r.   v1v2rh   c                    |                      dd          \  }}|                     dd          \  }}||k    pd||hv o||k    S )Nr0   r   99)rsplit)r  r  v1_majorv1_minorv2_majorv2_minors         r/   major_versions_differr    sW    3**Hh3**HhxZDXx,@$@$YXQYEYZr.   Tsuggest_reconfigurec                r    t           j                            | dd          }t          |dt          |          S )Nr  coredata.datCoredata)r   r   r   r   r   )r  r  r  s      r/   loadr    s.    w||IGGHxX7JKKKr.   objc                8   t           j                            |dd          }|dz   }|dz   }t          | j        t                    rt          d          t           j                            |          rdd l}|                    ||           t          |d          5 }t          j        | |           |                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||           |S )Nr  r  z.prev~z"Fatal version mismatch corruption.r   wb)r   r   r   r  r   r
   r   shutilcopyfiler   pickledumpflushfsyncfilenoreplace)r  r  r  prev_filenametempfilenamer  r   s          r/   saver    s5   w||IGGHw&Mc>LS['22 CABBB	w~~h 1-000	lD	!	! QC				
               J|X&&&Os   AC::C>C>parserargparse.ArgumentParserc                z   t           j                                        D ]\  }}t          j        ||| d           t           j                                        D ]E\  }}t          j        ||| d           t          j        ||                                | d           F|                     dddg dd	           d S )
Nr;   z (just for host machine)z (just for build machine)z-Dr   r%   optionzNSet the value of an option, can be used several times to set multiple options.)actiondestr   metavarhelp)r   r  r   option_to_argparser	  as_buildadd_argument)r  nbs      r/   register_builtin_argumentsr    s    '--// 5 51"1a4444399;; Y Y1"1a1KLLL"1ajjllF<WXXXX
X4DbZbm  o o o o or.   r;   r$   r  T.Dict[str, str]c                    t                      }| D ]C}	 |                    dd          \  }}n!# t          $ r t          d|d          w xY w|||<   D|S )Nr2  r   zOption z, must have a value separated by equals sign.)r	   r   
ValueErrorr
   )r   r  rO  rh  r_   re   s         r/   create_options_dictr    s    ,7MMF  	^773??LS%% 	^ 	^ 	^ !\1!\!\!\]]]	^sMs	   .Aargsc           
     
   t          | j                  | _        t          t          j                                        d t          j                                        D             t          j                                                  D ]y}t          |          }t          | |d           }|U|| j        v r-t	          j
        |          }t          d| d| d| d          || j        |j        <   t          | |           zd S )Nc              3  >   K   | ]}|                                 V  d S r\   )r  )rs  r   s     r/   rx  z)parse_cmd_line_options.<locals>.<genexpr>  s*      NNaQZZ\\NNNNNNr.   zGot argument z as both -Dz and z. Pick one.)r  r%   r#   r   r   r  r   r	  r=   r3  argparse_name_to_argr
   r*  delattr)r  r_   r*  re   cmdline_names        r/   parse_cmd_line_optionsr    s   /0CDDD #((**NN7#F#K#K#M#MNNN/4466     
 3xxdD))d+++&;DAA$YDYYTYYYYY[ [ [.3D!#(+D$   r.   >   
clean-gcda
clean-gcno
scan-buildbuild.ninjaclean-ctlistcoverage-xmlcoverage-htmlcoverage-textalldistr   PHONYcleanphonyinstallcoverage	benchmark	distcheck	uninstallreconfigure)r4   r5   )r  r=   r4   r=   )r  r=   r   r"   r4   r@   )r   r"   r4   r=   )r  r=   r  r=   r4   rh   r  )r  r=   r  rh   r4   r   )r  r   r  r=   r4   r=   )r  r  r4   r@   rF   )r   r$   r  r=   r4   r  )r  r"   r4   r@   )b
__future__r   r  r;   r   r   r  r   r   r   	functoolsr   	itertoolsr   collectionsr	   r  mesonlibr
   r   r   r   r   r   r   r   machinefiler   r  enumr  typingrW  TYPE_CHECKINGargparsetyping_extensionsr   r   compilers.compilersr   r   r   r   dependencies.detectr   environmentr   r   cmake.traceparserr   interpreterbaser   r   r   rA  r    r"   Dictr=   AnyOptionTypeOptionDictTypeTupleCompilerCheckCacheKeyRunCheckCacheKeyUnionbytesPathLikeStrOrBytesPathr   stable_versionendswithr   stable_version_arrayintr   r8   r:   EnumrI   rY   rp   r   TypeVarr   r   r  r  r  r  r  r  r  r  r  r  r  	frozensetFORBIDDEN_TARGET_NAMESr-   r.   r/   <module>r;     s  
 # " " " " "                      



             # # # # # #                         * * * * * * 



      ? #OOOO******YYYYYYYYYYYY------((((((&&&&&&222222++++++KKKKKKKK""""""! ! ! ! !8 ! ! ! VC!667NGAGCH$5sL!'RUWZRZJ[]m$mnwsAGCH$556 WS%S)92;u;MMNN 
 5!! 4)//44""s33';B'?#@#@1#DEEXX233N' ' ' '/ / / / /N / / /    $)    % % % % % % % %&D D D D D D D DN( ( ( ( ( ( ( (8 QYt__t6 t6 t6 t6 t6 t6 t6 t6lD D D DT T T T,      7 7 7 7[ [ [ [L L L L L
   "o o o o           ( # $ $ $     r.   