
    -Ph=                    \   U d dl mZ d dlmZ d dlZd dl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 ej        rdd
lmZ dZg dZi dddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0iZd1ed2<   i d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdViZd1edW<   i eeZdXdYdZd[d\Zd1ed]<    G d^ d_e          Z G d` da          Z edbc           G dd dee                      Z G df dg          Z G dh di          ZdS )j    )annotations)	dataclassN)Enum   )mesonlib)EnvironmentExceptionHoldableObject)mlog)Path)ElementaryOptionValues)%aarch64alphaarcarmavrc2000c6000cskydspice2kft32ia64loongarch64m68k
microblazemipsmips64msp430pariscpic24ppcppc64riscv32riscv64rl78rxs390s390xsh4sparcsparc64sw_64wasm32wasm64x86x86_64tricore)r   r   r   r   r   r"   r$   r(   r+   r,   r.   r0   cCCcppCXXcsCSCcythonCYTHONdDCfortranFCobjcOBJCobjcppOBJCXXrustRUSTCvalaVALACnasmNASMc_ldCC_LDcpp_ldCXX_LDd_ldDC_LD
fortran_ldFC_LDobjc_ldOBJC_LD	objcpp_ld	OBJCXX_LDrust_ldRUSTC_LDzT.Mapping[str, str]ENV_VAR_COMPILER_MAParARasASldLDnmNMobjcopyOBJCOPYobjdumpOBJDUMPranlibRANLIBreadelfREADELFsizeSIZEstringsSTRINGSstripSTRIPwindresWINDREScmakeCMAKEqmakeQMAKE
pkg-config
PKG_CONFIGmakeMAKEvapigenVAPIGENzllvm-configLLVM_CONFIGENV_VAR_TOOL_MAPD_LDF_LDRUST_LD	OBJCPP_LD)rL   rN   rT   rR   DEPRECATED_ENV_PROG_MAPc                      e Zd ZdZdZdZdS )CMakeSkipCompilerTestalwaysneverdep_onlyN)__name__
__module____qualname__ALWAYSNEVERDEP_ONLY     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/envconfig.pyr   r      s        FEHHHr   r   c                      e Zd Z	 d%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d0dZd1d"Zd%d2d$ZdS )3
PropertiesN
properties/T.Optional[T.Dict[str, ElementaryOptionValues]]c                    |pi | _         d S Nr   )selfr   s     r   __init__zProperties.__init__   s     %*r   languagestrreturnboolc                    |dz   | j         v S N_stdlibr   )r   r   s     r   
has_stdlibzProperties.has_stdlib   s    )#t66r   T.Union[str, T.List[str]]c                    | j         |dz            }t          |t                    r|S t          |t                    sJ |D ]}t          |t                    sJ |S r   )r   
isinstancer   list)r   r   stdlibis       r   
get_stdlibzProperties.get_stdlib   sm    I!56fc"" 	M&$''''' 	& 	&Aa%%%%%%r   T.Optional[str]c                n    | j                             dd           }|t          |t                    sJ |S )Nrootr   getr   r   )r   r   s     r   get_rootzProperties.get_root   s5    ""6400|z$44|||r   c                n    | j                             dd           }|t          |t                    sJ |S )Nsys_rootr   )r   r   s     r   get_sys_rootzProperties.get_sys_root   s9    ?&&z488:h#<#<r   T.Optional[T.List[str]]c                    | j                             dd           }||S t          j        |          }|D ]}t	          |t
                    sJ |S )Npkg_config_libdir)r   r   r   listifyr   r   )r   presr   s       r   get_pkg_config_libdirz Properties.get_pkg_config_libdir   sa    O 3T::9Hq!! 	& 	&Aa%%%%%%
r   c                d    d| j         vrdS | j         d         }t          |t                    sJ |S )Ncmake_defaultsTr   r   r   r   r   s     r   get_cmake_defaultszProperties.get_cmake_defaults   s<    4?224o./#t$$$$$
r   T.Optional[Path]c                    d| j         vrd S | j         d         }t          |t                    sJ t          |          }|                                st          d| d          |S )Ncmake_toolchain_filezcmake_toolchain_file (z) is not absolute)r   r   r   r   is_absoluter   )r   rawr   s      r   get_cmake_toolchain_filez#Properties.get_cmake_toolchain_file   sx    !884o45#s######Cyy#//11 	X&'V'V'V'VWWW##r   r   c                   d| j         vrt          j        S | j         d         }t          |t                    sJ 	 t          |          S # t
          $ r3 t          d                    |d t          D                                 w xY w)Ncmake_skip_compiler_testzO"{}" is not a valid value for cmake_skip_compiler_test. Supported values are {}c                    g | ]	}|j         
S r   )value).0es     r   
<listcomp>z;Properties.get_cmake_skip_compiler_test.<locals>.<listcomp>   s    EEE!agEEEr   )r   r   r   r   r   
ValueErrorr   format)r   r   s     r   get_cmake_skip_compiler_testz'Properties.get_cmake_skip_compiler_test   s    %T_<<(11o89#s#####	H(--- 	H 	H 	H&aEE/DEEEFFH H H	Hs   A
 
=Bc                d    d| j         vrdS | j         d         }t          |t                    sJ |S )Ncmake_use_exe_wrapperTr   r   s     r   get_cmake_use_exe_wrapperz$Properties.get_cmake_use_exe_wrapper   s<    "$/994o56#t$$$$$
r   c                    t          j        d| j                            d                    }|rt	          |          nd S )Nr   	java_home)Tcastr   r   r   r   r   s     r   get_java_homezProperties.get_java_home   s9    ($/*=*=k*J*JKK#-tE{{{-r   T.List[str]c                    t          j        | j                            dg                     }t	          d |D                       st          d          t          j        d|          S )Nbindgen_clang_argumentsc              3  @   K   | ]}t          |t                    V  d S r   r   r   r   vs     r   	<genexpr>z4Properties.get_bindgen_clang_args.<locals>.<genexpr>   s,      55!:a%%555555r   z?bindgen_clang_arguments must be a string or an array of stringsr   )r   r   r   r   allr   r   r   r   s     r   get_bindgen_clang_argsz!Properties.get_bindgen_clang_args   sg     !4!45NPR!S!STT55u55555 	j&'hiiivmU+++r   otherobjectc                j    t          |t          |                     r| j        |j        k    S t          S r   )r   typer   NotImplemented)r   r   s     r   __eq__zProperties.__eq__   s0    eT$ZZ(( 	7?e&666r   key0T.Optional[T.Union[str, bool, int, T.List[str]]]c                    | j         |         S r   r   )r   r   s     r   __getitem__zProperties.__getitem__   s    s##r   item$T.Union[str, bool, int, T.List[str]]c                    || j         v S r   r   )r   r   s     r   __contains__zProperties.__contains__   s    t&&r   defaultc                8    | j                             ||          S r   )r   r   )r   r   r   s      r   r   zProperties.get  s    ""3000r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      si        KO+ + + + +7 7 7 7      
   
      $ $ $ $
H 
H 
H 
H   . . . ., , , ,   $ $ $ $' ' ' '1 1 1 1 1 1 1r   r   T)unsafe_hashc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d$dZd%dZe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d'dZd'dZd%d Zd%d!Zd'd"Zd#S )(MachineInfor   system
cpu_familycpuendianr   kernel	subsystemr   Nonec                ,    | j         t          v | _        d S r   )r   CPU_FAMILIES_64_BIT	is_64_bitr   s    r   __post_init__zMachineInfo.__post_init__  s    #2EEr   c                8    d| j          d| j         d| j         dS )Nz<MachineInfo:  z (z)>)r   r   r   r   s    r   __repr__zMachineInfo.__repr__  s)    MMMdoMMMMMMr   r   #T.Dict[str, ElementaryOptionValues]'MachineInfo'c           	     `   t          d |                                D                       s
J d            t          j        d|          }h d}|t	          |          z
  r9t          d| dd                    |t	          |          z
            z             |d         }|t          vrt          j	        d	| d
           |d         }|dvrt          j	        d|            |d         }|
                    dd           }|
                    dd           } | |||d         |||          S )Nc              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r   r   z+MachineInfo.from_literal.<locals>.<genexpr>  s,      <<!:a%%<<<<<<r   zfor mypyzT.Dict[str, str]>   r   r   r   r   zMachine info is currently 
zbut is missing {}.r   zUnknown CPU family zF, please report this at https://github.com/mesonbuild/meson/issues/newr   )littlebigzUnknown endian r   r   r   r   )r   valuesr   r   setr   r   known_cpu_familiesr
   warningr   )	clsr   literalminimum_literalr   r   r   r   r   s	            r   from_literalzMachineInfo.from_literal  ss    <<szz||<<<<<HHjHHH&+S11CCCS\\) 	M&8W888$++Oc'll,JKKLM M M \*
///L  Bz  B  B  B  C  C  C"***L3633444"Xt,,KKT22	s6:wu~vvyQQQr   r   c                    | j         dk    S )z%
        Machine is windows?
        windowsr   r   s    r   
is_windowszMachineInfo.is_windows/       {i''r   c                    | j         dk    S )z$
        Machine is cygwin?
        cygwinr  r   s    r   	is_cygwinzMachineInfo.is_cygwin5       {h&&r   c                    | j         dk    S )z#
        Machine is linux?
        linuxr  r   s    r   is_linuxzMachineInfo.is_linux;       {g%%r   c                    | j         dv S )zF
        Machine is Darwin (macOS/iOS/tvOS/visionOS/watchOS)?
        >   iostvosdarwinwatchosvisionosr  r   s    r   	is_darwinzMachineInfo.is_darwinA  s     {NNNr   c                    | j         dk    S )z%
        Machine is Android?
        androidr  r   s    r   
is_androidzMachineInfo.is_androidG  r  r   c                    | j         dk    S )z#
        Machine is Haiku?
        haikur  r   s    r   is_haikuzMachineInfo.is_haikuM  r  r   c                    | j         dk    S )z$
        Machine is NetBSD?
        netbsdr  r   s    r   	is_netbsdzMachineInfo.is_netbsdS  r  r   c                    | j         dk    S )z%
        Machine is OpenBSD?
        openbsdr  r   s    r   
is_openbsdzMachineInfo.is_openbsdY  r  r   c                    | j         dk    S )zMachine is DragonflyBSD?	dragonflyr  r   s    r   is_dragonflybsdzMachineInfo.is_dragonflybsd_  s    {k))r   c                    | j         dk    S )zMachine is FreeBSD?freebsdr  r   s    r   
is_freebsdzMachineInfo.is_freebsdc  s    {i''r   c                    | j         dk    S )zMachine is illumos or Solaris?sunosr  r   s    r   is_sunoszMachineInfo.is_sunosg  s    {g%%r   c                    | j         dk    S )z&
        Machine is GNU/Hurd?
        gnur  r   s    r   is_hurdzMachineInfo.is_hurdk       {e##r   c                    | j         dk    S )z!
        Machine is aix?
        aixr  r   s    r   is_aixzMachineInfo.is_aixq  r=  r   c                6    | j                             d          S )zMachine is IRIX?irix)r   
startswithr   s    r   is_irixzMachineInfo.is_irixw  s    {%%f---r   c                Z    |                                  s|                                 rdS dS )Nexe r  r  r   s    r   get_exe_suffixzMachineInfo.get_exe_suffix~  s/    ?? 	 0 0 	52r   c                2    |                                  rdS dS )Nobjo)r  r   s    r   get_object_suffixzMachineInfo.get_object_suffix  s    ?? 	53r   c                R    |                                  p|                                 S r   rH  r   s    r   libdir_layout_is_winz MachineInfo.libdir_layout_is_win  s!      4DNN$4$44r   N)r   r   )r   r   )r   r  r   r  r   )r   r   r   __annotations__r   r  classmethodr  r  r  r  r$  r'  r*  r-  r0  r3  r6  r9  r<  r@  rD  rI  rM  rO  r   r   r   r   r     s        KKKOOOHHHKKKF F F FN N N N R R R [R6( ( ( (' ' ' '& & & &O O O O( ( ( (& & & &' ' ' '( ( ( (* * * *( ( ( (& & & &$ $ $ $$ $ $ $. . . .      5 5 5 5 5 5r   r   c                      e Zd Z	 dddZedd            Zedd            Zedd	            Zedd            Z	ddZ
dS )BinaryTableNbinaries2T.Optional[T.Mapping[str, ElementaryOptionValues]]c                   i | _         |r|                                D ]X\  }}t          |t          t          f          st          j        d|d|d          t          j        |          | j         |<   Yd| j         v rrd| j         vr,t          j	        dd           | j         d         | j         d<   n1| j         d         | j         d         k    rt          j        d	          	 | j         d= d S d S d S )
NzInvalid type z for entry z in cross file	pkgconfigrs   zF"pkgconfig" entry is deprecated and should be replaced by "pkg-config"F)fatalzAMismatched pkgconfig and pkg-config binaries in the machine file.)
rT  itemsr   r   r   r   MesonExceptionr   r
   deprecation)r   rT  namecommands       r   r   zBinaryTable.__init__  s+    35 	/!)!1!1 @ @g!'D#;77 V"1TTTdTTTV V V&.&6w&?&?d##dm++t}44$%muz{{{{26-2LDM,//];/4=3NNN"12uvvv M+...'	/ 	/ ,+r   r   r   c                     	 t          j        ddgt           j        t           j                   n# t          t           j        f$ r g cY S w xY wdgS )Nccache	--versionstdoutstderr
subprocess
check_callPIPEOSErrorCalledProcessErrorr   r   r   detect_ccachezBinaryTable.detect_ccache  sa    	!8["9*/ZdZijjjjj67 	 	 	III	z   -0 A
Ac                     	 t          j        ddgt           j        t           j                   n# t          t           j        f$ r g cY S w xY wdgS )Nsccacher`  ra  rd  r   r   r   detect_sccachezBinaryTable.detect_sccache  sa    	!9k"::?[e[jkkkkk67 	 	 	III	{rk  c                 n    t                                           } | r| S t                                           S r   )rS  rn  rj  )caches    r   detect_compiler_cachez!BinaryTable.detect_compiler_cache  s4     **,, 	L((***r   entryr   !T.Tuple[T.List[str], T.List[str]]c                   t          j        |          }|d         dk    r|dd          }|                                 }n/|d         dk    r|dd          }|                                 }n|}g }|st	          d|d                    ||fS )Nr   r_  r   rm  z+Compiler cache specified without compiler: )r   stringlistifyrj  rn  r   )r  rr  partscompilerr_  s        r   parse_entryzBinaryTable.parse_entry  s    &u--8xQRRyH&&((FF1X""QRRyH''))FFHF 	a&'_UZ[\U]'_'_```r   r\  r   r   c                z    | j                             |          }|sdS |d                                         sdS |S )zLookup binary in cross/native file and fallback to environment.

        Returns command with args as list if found, Returns `None` if nothing is
        found.
        Nr   )rT  r   rk   )r   r\  r]  s      r   lookup_entryzBinaryTable.lookup_entry  sH     -##D)) 	4!!## 	4r   r   )rT  rU  r   )rr  r   r   rs  )r\  r   r   r   )r   r   r   r   staticmethodrj  rn  rq  rQ  rx  rz  r   r   r   rS  rS    s         LP/ / / / /4    \    \ + + + \+       [ "     r   rS  c                       e Zd Zd	d
dZddZdS )CMakeVariablesN	variablesT.Optional[T.Dict[str, T.Any]]r   r   c                   |pi }i | _         |                                D ]h\  }}t          j        |          }|D ]B}t	          |t
                    s+t          d| d| dt          |          j         d          C|| j         |<   id S )NzValue 'z' of CMake variable 'z!' defined in a machine file is a z and not a str)	r~  rY  r   r   r   r   r   r   r   )r   r~  r   r   r   s        r   r   zCMakeVariables.__init__  s    O	35#//++ 	( 	(JC$U++E Y Y!!S)) Y.  0X  0X  0XQT  0X  0Xw{|}w~w~  xH  0X  0X  0X  Y  Y  YY"'DN3	( 	(r   T.Dict[str, T.List[str]]c                    | j         S r   )r~  r   s    r   get_variableszCMakeVariables.get_variables  s
    ~r   r   )r~  r  r   r   )r   r  )r   r   r   r   r  r   r   r   r}  r}    sA        	( 	( 	( 	( 	(     r   r}  )
__future__r   dataclassesr   re  typingr   enumr   rG  r   r   r	   r
   pathlibr   TYPE_CHECKINGoptionsr   r  r   rV   rP  rz   ENV_VAR_PROG_MAPr   r   r   r   rS  r}  r   r   r   <module>r     s   # " " " " " " ! ! ! ! ! !                     : : : : : : : :            ? 0////// & T    -- 
5- 	%	-
 h- - t- F- h- G- G- F- G-  h!-" G#-$ '%-& y'-( )-* z+- -     2)$) 	$) 	$	)
 	$) y) y) h) y) F) y) W) y)  W!)" W#)$ ,%)& F')( y))* =+) )     0 @*?.>? 
 	0 0         D   
f1 f1 f1 f1 f1 f1 f1 f1P tF5 F5 F5 F5 F5. F5 F5 F5PQ Q Q Q Q Q Q Qf         r   