§
    ‹ã÷cH�  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ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mZmZ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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(m)Z) d dl*m+Z+ d dl,mZ e	j-        rd dl.Z.d dl/m0Z0 ddl1m2Z2 e	j3        e4e#f         Z5dZ6d:d„Z7d;d„Z8d„ Z9d<d„Z:d=d>d$„Z;d=d?d&„Z<d@d(„Z=dAd)„Z>dAd*„Z?dBd-„Z@dCd.„ZAdBd/„ZBdBd0„ZCdDd1„ZDdEd2„ZEdFdGd5„ZFdHd7„ZG G d8„ d9¦  «        ZHdS )Ié    )ÚannotationsNé   ©Úcoredata)Úmesonlib)ÚMesonExceptionÚMachineChoiceÚ
Popen_safeÚ
PerMachineÚPerMachineDefaultableÚPerThreeMachineDefaultableÚ
split_argsÚ	quote_argÚ	OptionKeyÚsearch_versionÚMesonBugException)Úmlog)ÚExternalProgram)ÚBinaryTableÚMachineInfoÚ
PropertiesÚknown_cpu_familiesÚCMakeVariables©Ú	compilers)ÚCompilerÚis_assemblyÚ	is_headerÚ
is_libraryÚ
is_llvm_irÚ	is_objectÚ	is_source)Ú	lru_cache)Ú	envconfig)ÚConfigParser)ÚResolverzmeson.buildÚfor_machiner	   Úis_crossÚboolÚvar_nameÚstrÚreturnúT.Optional[str]c                ó<  — t          |r|dz   gn|g|g¦  «        |          }|D ]%}t          j                             |¦  «        }|� n:Œ&d                     d„ |D ¦   «         ¦  «        }t          j        d|› d�¦  «         dS t          j        d|›d|›�¦  «         |S )	z2
    Returns the exact env var and the value.
    Ú
_FOR_BUILDNz, c                ó   — g | ]}|›‘ŒS © r1   )Ú.0Úvars     ú8/usr/lib/python3/dist-packages/mesonbuild/environment.pyú
<listcomp>z _get_env_var.<locals>.<listcomp>N   s   € Ð@Ð@Ð@¨c #˜zÐ@Ð@Ð@ó    zNone of z; are defined in the environment, not changing global flags.zUsing z from environment with value: )r   ÚosÚenvironÚgetÚjoinr   Údebug)r'   r(   r*   Ú
candidatesr3   ÚvalueÚ	formatteds          r4   Ú_get_env_varr?   <   sØ   € õ ð
 '/Ð	>ˆ(�\Ñ
!Ð	"Ð	"°X°Jà	ˆ
ñô ð ô€Jð ð ð ˆÝ”
—’˜sÑ#Ô#ˆØÐØˆEð ð —I’IÐ@Ð@°ZÐ@Ñ@Ô@ÑAÔAˆ	ÝŒ
Ðd˜iÐdÐdÐdÑeÔeÐeØˆtÝ„JÐF˜ÐFÐF¸UÐFÐFÑGÔGÐGØ€Lr6   ú3.3Fc           
     ót  — d}	 t          |dg¦  «        dd…         \  }}n# t          t          f$ r Y dS w xY wt          |¦  «        }|j        dk    ret          j        |d| z   ¦  «        rM|rGt          j        d 	                    |t          t          j        |¦  «        ¦  «        ¦  «        ¦  «         ||fS dS )NÚgcovrú	--versionr   é   )NNú>=zFound gcovr-{} at {})r
   ÚFileNotFoundErrorÚPermissionErrorr   Ú
returncoder   Úversion_comparer   ÚlogÚformatr   ÚshutilÚwhich)Úmin_versionrJ   Ú	gcovr_exeÚpÚfounds        r4   Údetect_gcovrrR   U   sÔ   € Ø€IðÝ˜y¨+Ð6Ñ7Ô7¸¸!¸Ô<‰ˆˆ5ˆ5øÝ�Ð/ð ð ð àˆzˆzðøøøõ ˜5Ñ!Ô!€EØ„|�qÒÐ�XÔ5°e¸TÀKÑ=OÑPÔPÐØð 	_ÝŒHÐ+×2Ò2°5½)ÅFÄLÐQZÑD[ÔD[Ñ:\Ô:\Ñ]Ô]Ñ^Ô^Ð^Ø˜%ÐÐØˆ:s   „! ¡6µ6c                 ób   — t          d¦  «        } | D ]}t          j        |dg¦  «        r|c S Œd S )Nzllvm-covrC   )Úget_llvm_tool_namesr   Ú
exe_exists)ÚtoolsÚtools     r4   Údetect_llvm_covrX   c   sI   € Ý 
Ñ+Ô+€EØð ð ˆÝÔ  kÐ2Ñ3Ô3ð 	ØˆKˆKˆKð	àˆ4r6   ú\T.Tuple[T.Optional[str], T.Optional[str], T.Optional[str], T.Optional[str], T.Optional[str]]c                 ó¶   — t          ¦   «         \  } }t          ¦   «         }d}d}t          j        |dg¦  «        sd }t          j        |dg¦  «        sd }| ||||fS )NÚlcovÚgenhtmlrC   )rR   rX   r   rU   )rO   Úgcovr_versionÚllvm_cov_exeÚlcov_exeÚgenhtml_exes        r4   Úfind_coverage_toolsra   j   sp   € Ý+™~œ~Ñ€Iˆ}å"Ñ$Ô$€Là€HØ€KåÔ ¨+Ð6Ñ7Ô7ð ØˆÝÔ ¨[Ð9Ñ:Ô:ð Øˆà�m X¨{¸LÐHÐHr6   ú1.8.2ÚversionrJ   úT.List[str]c                ó:   — t          | |¦  «        }|r|d         nd S )Nr   )Ú detect_ninja_command_and_version)rc   rJ   Úrs      r4   Údetect_ninjarh   y   s$   € Ý(¨°#Ñ6Ô6€AØÐˆ1ˆQŒ4ˆ4˜$Ðr6   úT.Tuple[T.List[str], str]c                ó  — t           j                             dd ¦  «        }|r|gng d¢D �]U}t          |d¬¦  «        }|                     ¦   «         sŒ)	 t          |j        dgz   ¦  «        dd…         \  }}n# t          t          f$ r Y Œaw xY w| 	                    ¦   «         }|j
        dk    rÑt          j        |d| z   ¦  «        r¹|r¬t           j                             |¦  «        }|                     d	|z   ¦  «        r|dd
t!          |¦  «        z
  …         }|dk    rd}|dk    rd}t#          j        d                     ||d                     d„ |j        D ¦   «         ¦  «        ¦  «        ¦  «         |j        |fc S �ŒWd S )NÚNINJA)Úninjaúninja-buildÚsamuT)ÚsilentrC   r   rD   rE   ú-éÿÿÿÿrm   rl   rn   ÚsamuraizFound {}-{} at {}ú c                ó,   — g | ]}t          |¦  «        ‘ŒS r1   )r   )r2   Úxs     r4   r5   z4detect_ninja_command_and_version.<locals>.<listcomp>•   s   € Ð"FÐ"FÐ"F°A¥9¨Q¡<¤<Ð"FÐ"FÐ"Fr6   )r7   r8   r9   r   rQ   r
   ÚcommandrF   rG   ÚstriprH   r   rI   ÚpathÚbasenameÚendswithÚlenr   rJ   rK   r:   )rc   rJ   Ú	env_ninjaÚnÚprogrP   rQ   Únames           r4   rf   rf   }   s»  € Ý”
—’˜w¨Ñ-Ô-€IØ%ÐKˆiˆ[ˆ[Ð+KÐ+KÐ+Kð )ñ )ˆÝ˜q¨Ð.Ñ.Ô.ˆØ�zŠz‰|Œ|ð 	Øð	Ý! $¤,°+°Ñ">Ñ?Ô?ÀÀ!ÀÔD‰HˆAˆuˆuøÝ!¥?Ð3ð 	ð 	ð 	àˆHð	øøøð —’‘”ˆð Œ<˜1ÒÐ¥Ô!9¸%ÀÈÁÑ!PÔ!PÐØð 	JÝ”w×'Ò'¨Ñ*Ô*�Ø—=’=  u¡Ñ-Ô-ð 3Ø  "¥s¨5¡z¤z¡/Ð 1Ô2�DØ˜=Ò(Ð(Ø"�DØ˜6’>�>Ø$�DÝ”Ð,×3Ò3°D¸%ØŸšÐ"FÐ"F¸¼Ð"FÑ"FÔ"FÑGÔGñIô Iñ Jô Jð Jà”L %Ð(Ð(Ð(Ð(ùð/)ð )s   Á#A8Á8BÂBrW   c                óL   — g d¢}g }|D ]}|                      | |z   ¦  «         Œ|S )N)#Ú z-14Ú14z-13Ú13z-12Ú12z-11Ú11z-10Ú10z-9Ú90z-8Ú80z-7Ú70z-6.0Ú60z-5.0Ú50z-4.0Ú40z-3.9Ú39z-3.8Ú38z-3.7Ú37z-3.6Ú36z-3.5Ú35z-15z-devel)Úappend)rW   ÚsuffixesÚnamesÚsuffixs       r4   rT   rT   ˜   sG   € ðð ð €Hð* €EØð $ð $ˆØ�Š�T˜F‘]Ñ#Ô#Ð#Ð#Ø€Lr6   c                 óz  — g } dt           j        v r t          t           j        d         ¦  «        } n?t          d¦  «        }|D ]-}t	          j        |¦  «        �t	          j        |¦  «        g}  nŒ.| rI| d         }t           j                             |¦  «        r"t          j        |t           j	        ¦  «        r|gS g S )að   Look for scan-build binary on build platform

    First, if a SCANBUILD env variable has been provided, give it precedence
    on all platforms.

    For most platforms, scan-build is found is the PATH contains a binary
    named "scan-build". However, some distribution's package manager (FreeBSD)
    don't. For those, loop through a list of candidates to see if one is
    available.

    Return: a single-element list of the found scan-build binary ready to be
        passed to Popen()
    Ú	SCANBUILDz
scan-buildNr   )
r7   r8   r   rT   rL   rM   rx   ÚisfileÚaccessÚX_OK)ÚexelistrV   rW   s      r4   Údetect_scanbuildrœ   ¸   sÀ   € ð €GØ•b”jÐ Ð Ý�RœZ¨Ô4Ñ5Ô5ˆˆõ $ LÑ1Ô1ˆØð 	ð 	ˆDÝŒ|˜DÑ!Ô!Ð-Ý!œ<¨Ñ-Ô-Ð.�Ø�ð .ð ð Ø�qŒzˆÝŒ7�>Š>˜$ÑÔð 	¥B¤I¨dµB´GÑ$<Ô$<ð 	Ø�6ˆMØ€Ir6   c                 ód   — t          d¦  «        } | D ]}t          j        |¦  «        }|�|gc S Œg S )a   Look for clang-format binary on build platform

    Do the same thing as detect_scanbuild to find clang-format except it
    currently does not check the environment variable.

    Return: a single-element list of the found clang-format binary ready to be
        passed to Popen()
    zclang-format)rT   rL   rM   )rV   rW   rx   s      r4   Údetect_clangformatrž   ×   sJ   € õ   Ñ/Ô/€EØð ð ˆÝŒ|˜DÑ!Ô!ˆØÐØ�6ˆMˆMˆMð à€Ir6   r   ÚCompilersDictc                ó  — t          j        ¦   «         }|dk    r|S  | j        ¦   «         D ]U}|j        dk    r|j        dv r dS |j        dk    r|j        dk    r dS |j        dk    r|                     d¦  «        r dS ŒV|S )a‹  
    Detecting the 'native' architecture of Windows is not a trivial task. We
    cannot trust that the architecture that Python is built for is the 'native'
    one because you can run 32-bit apps on 64-bit Windows using WOW64 and
    people sometimes install 32-bit Python on 64-bit Windows.

    We also can't rely on the architecture of the OS itself, since it's
    perfectly normal to compile and run 32-bit applications on Windows as if
    they were native applications. It's a terrible experience to require the
    user to supply a cross-info file to compile 32-bit applications on 64-bit
    Windows. Thankfully, the only way to compile things with Visual Studio on
    Windows is by entering the 'msvc toolchain' environment, which can be
    easily detected.

    In the end, the sanest method is as follows:
    1. Check environment variables that are set by Windows and WOW64 to find out
       if this is x86 (possibly in WOW64), if so use that as our 'native'
       architecture.
    2. If the compiler toolchain target architecture is x86, use that as our
      'native' architecture.
    3. Otherwise, use the actual Windows architecture

    Úx86Úmsvc>   r¡   Ú80x86zclang-clÚgccÚ__i386__)r   Úwindows_detect_native_archÚvaluesÚidÚtargetÚhas_builtin_define)r   Úos_archÚcompilers      r4   Údetect_windows_archr­   ç   s¬   € õ0 Ô1Ñ3Ô3€GØ�%ÒÐØˆð
 %�IÔ$Ñ&Ô&ð ð ˆØŒ;˜&Ò Ð  h¤oÐ9IÐ&IÐ&IØ�5�5ØŒ;˜*Ò$Ð$¨¬¸EÒ)AÐ)AØ�5�5ØŒ;˜%ÒÐ H×$?Ò$?À
Ñ$KÔ$KÐØ�5�5øØ€Nr6   c                ó†   —  | j         ¦   «         D ]0}	 |                     |¦  «        r dS Œ# t          j        $ r Y Œ-w xY wdS )NTF)r§   rª   r   r   )r   ÚdefineÚcs      r4   Úany_compiler_has_definer±     sm   € ØˆYÔÑÔð ð ˆð	Ø×#Ò# FÑ+Ô+ð Ø�t�tðøåÔ&ð 	ð 	ð 	àˆDð	øøøð ˆ5s   “,¬>½>c                ó^  — t          j        ¦   «         rt          | ¦  «        }nªt          j        ¦   «         sLt          j        ¦   «         s9t          j        ¦   «         s&t          j        ¦   «         st          j        ¦   «         r&t          j	        ¦   «          
                    ¦   «         }n%t          j        ¦   «          
                    ¦   «         }|                     d¦  «        r|                     d¦  «        rd}n¾|dk    rd}nµ|dk    rd}n¬|                     d¦  «        rd}n”|                     d¦  «        s|                     d¦  «        rd}ng|                     d	¦  «        rd
}nO|                     d¦  «        s|dv rd}n3|dv rd}n,|dv rd}n%|                     d¦  «        r
d|vrd}n	d}n|dv rd}|dk    rt          | d¦  «        rd}n:|dk    rt          | d¦  «        rd}n!|dk    rd}n|dk    rt          | d¦  «        rd
}|t          vrt!          j        d|›d�¦  «         |S )z¿
    Python is inconsistent in its platform module.
    It returns different values for the same cpu.
    For x86 it might return 'x86', 'i686' or somesuch.
    Do some canonicalization.
    ÚiÚ86r¡   ÚbepcÚarm64Úaarch64ÚarmÚearm)Ú	powerpc64Úppc64r»   )ÚpowerpcÚppc>   úpower macintoshÚmacppcr½   ¾   Úx64Úamd64Úi86pcÚx86_64>   Úsun4uÚsun4vÚsparc64ÚmipsÚ64Úmips64>   Úip30Úip35r¥   Ú__arm__Úparisc64ÚpariscÚ	__64BIT__zUnknown CPU family z|, please report this at https://github.com/mesonbuild/meson/issues/new with the output of `uname -a` and `cat /proc/cpuinfo`)r   Ú
is_windowsr­   Ú
is_freebsdÚ	is_netbsdÚ
is_openbsdÚis_qnxÚis_aixÚplatformÚ	processorÚlowerÚmachineÚ
startswithrz   r±   r   r   Úwarning©r   Útrials     r4   Údetect_cpu_familyrß     s½  € õ ÔÑÔð +Ý# IÑ.Ô.ˆˆÝ	Ô	Ñ	Ô	ð +¥(Ô"4Ñ"6Ô"6ð +½(Ô:MÑ:OÔ:Oð +ÕS[ÔSbÑSdÔSdð +ÕhpÔhwÑhyÔhyð +ÝÔ"Ñ$Ô$×*Ò*Ñ,Ô,ˆˆåÔ Ñ"Ô"×(Ò(Ñ*Ô*ˆØ×Ò˜ÑÔð  §¢°Ñ!5Ô!5ð ØˆˆØ	�&ŠˆØˆˆØ	�'Ò	Ð	ØˆˆØ	×	Ò	˜)Ñ	$Ô	$ð àˆˆØ	×	Ò	˜%Ñ	 Ô	 ð  E×$4Ò$4°VÑ$<Ô$<ð ØˆˆØ	×	Ò	Ð0Ñ	1Ô	1ð ØˆˆØ	×	Ò	Ð,Ñ	-Ô	-ð °Ð:WÐ1WÐ1WØˆˆØ	Ð+Ð	+Ð	+ØˆˆØ	Ð$Ð	$Ð	$ØˆˆØ	×	Ò	˜&Ñ	!Ô	!ð Ø�uÐÐØˆEˆEàˆEˆEØ	Ð"Ð	"Ð	"Øˆð
 �ÒÐÝ" 9¨jÑ9Ô9ð 	ØˆEøØ	�)Ò	Ð	Ý" 9¨iÑ8Ô8ð 	ØˆEøð 
�*Ò	Ð	ð ˆˆØ	�%Šˆå" 9¨kÑ:Ô:ð 	ØˆEàÕ&Ð&Ð&ÝŒð D¨5ð Dð Dð Dñ 	Eô 	Eð 	Eð €Lr6   c                ó.  — t          j        ¦   «         rt          | ¦  «        }n—t          j        ¦   «         s9t          j        ¦   «         s&t          j        ¦   «         st          j        ¦   «         r&t          j        ¦   «          	                    ¦   «         }n%t          j
        ¦   «          	                    ¦   «         }|dv rd}|dk    rt          | d¦  «        rd}n»|                     d¦  «        s|                     d¦  «        rt          | d¦  «        rd}n~d}n{|                     d	¦  «        rd}nc|d
k    r&t          j        ¦   «          	                    ¦   «         }n7|                     d¦  «        r
d|vrd}nd}n|dk    rt          | d¦  «        rd}|S )NrÀ   rÄ   r¥   Úi686r·   r¶   rÍ   r¸   r¹   Úe2krÈ   rÉ   rÊ   r½   rÐ   r»   )r   rÑ   r­   rÒ   rÓ   rÔ   rÖ   r×   rØ   rÙ   rÚ   r±   rÛ   rÝ   s     r4   Ú
detect_cpurã   \  s³  € ÝÔÑÔð +Ý# IÑ.Ô.ˆˆÝ	Ô	Ñ	Ô	ð +¥(Ô"4Ñ"6Ô"6ð +½(Ô:MÑ:OÔ:Oð +ÕS[ÔSbÑSdÔSdð +ÝÔ"Ñ$Ô$×*Ò*Ñ,Ô,ˆˆåÔ Ñ"Ô"×(Ò(Ñ*Ô*ˆàÐ)Ð)Ð)ØˆØ�ÒÐå" 9¨jÑ9Ô9ð 	ØˆEøØ	×	Ò	˜)Ñ	$Ô	$ð ¨×(8Ò(8¸Ñ(AÔ(Að å" 9¨iÑ8Ô8ð 	ØˆEˆEð ˆEˆEØ	×	Ò	˜&Ñ	!Ô	!ð ØˆˆØ	�%ŠˆåÔ"Ñ$Ô$×*Ò*Ñ,Ô,ˆˆØ	×	Ò	˜&Ñ	!Ô	!ð Ø�uÐÐØˆEˆEàˆEˆEØ	�%Šˆå" 9¨kÑ:Ô:ð 	ØˆEð €Lr6   c                 óp   — t           j        dk    rdS t          j        ¦   «                              ¦   «         S )NÚcygwin)Úsysr×   ÚsystemrÙ   r1   r6   r4   Údetect_systemrè   „  s.   € Ý
„|�xÒÐØˆxÝŒ?ÑÔ×"Ò"Ñ$Ô$Ð$r6   c                 óB   — t           j                             dd ¦  «        S )NÚMSYSTEM_CARCH)r7   r8   r9   r1   r6   r4   Údetect_msys2_archrë   ‰  s   € ÝŒ:�>Š>˜/¨4Ñ0Ô0Ð0r6   úT.Optional[CompilersDict]r   c                ó–   — t          t          ¦   «         | �t          | ¦  «        nd| �t          | ¦  «        ndt          j        ¦  «        S )a  Detect the machine we're running on

    If compilers are not provided, we cannot know as much. None out those
    fields to avoid accidentally depending on partial knowledge. The
    underlying ''detect_*'' method can be called to explicitly use the
    partial information.
    N)r   rè   rß   rã   ræ   Ú	byteorderr   s    r4   Údetect_machine_inforï   Œ  sM   € õ Ý‰ŒØ(1Ð(=Õ˜)Ñ$Ô$Ð$À4Ø!*Ð!6�
�9ÑÔÐ¸DÝŒñ	ô ð r6   Úmachine_infoc                ó¬   — | j         t          ¦   «         k    rdS t          i ¦  «        }| j        |k    p!|dk    o
| j        dk    p|dk    o
| j        dk    S )aW  Whether we can run binaries for this machine on the current machine.

    Can almost always run 32-bit binaries on 64-bit natively if the host
    and build systems are the same. We don't pass any compilers to
    detect_cpu_family() here because we always want to know the OS
    architecture, not what the compiler environment tells us.
    FrÄ   r¡   r·   r¸   )rç   rè   rß   Ú
cpu_family)rð   Útrue_build_cpu_familys     r4   Úmachine_info_can_runrô   œ  sq   € ð Ô�m™oœoÒ-Ð-ØˆuÝ-¨bÑ1Ô1Ðà	Ô	 Ð$9Ò	9ð 	VØ
 8Ò
+Ð	S°,Ô2IÈUÒ2Rð	Và
 9Ò
,Ð	T°<Ô3JÈeÒ3SðVr6   c                  óŠ  — e Zd ZdZdZdZdDd„ZdEd„ZdFd„ZdFd„Z	dFd„Z
dGd„Zej        fdHd„ZdId„ZdId„ZdJd„ZedKdLd"„¦   «         ZdMd%„ZdMd&„ZdMd'„ZdMd(„ZdMd)„Z ed*¬+¦  «        d,„ ¦   «         ZdNd0„ZdId1„ZdId2„ZdId3„ZdId4„ZdId5„Z dId6„Z!dId7„Z"dId8„Z#dId9„Z$dId:„Z%dId;„Z&dId<„Z'dId=„Z(dId>„Z)dId?„Z*dOd@„Z+ej        fdOdA„Z,dPdC„Z-d*S )QÚEnvironmentzmeson-privatez
meson-logsz
meson-infoÚ
source_dirr-   Ú	build_dirÚoptionsú'argparse.Namespace'r,   ÚNonec           	     óÜ  — || _         || _        |��ct          j                             |t
          j        ¦  «        | _        t          j                             |t
          j        ¦  «        | _        t          j                             |t
          j	        ¦  «        | _	        t          j
        | j        d¬¦  «         t          j
        | j        d¬¦  «         t          j
        | j	        d¬¦  «         	 t          j        |                      ¦   «         ¦  «        | _        d| _        �nl# t          $ r |                      |¦  «         Y �nJt          j        $ r[}t%          j        dt)          |¦  «        ¦  «         t          j        | j        |¦  «         |                      |¦  «         Y d }~næd }~wt,          $ rº}t          j                             t          j        | j        ¦  «        ¦  «        rxt%          j        d¦  «         t%          j        dt%          j        t)          |¦  «        ¦  «        ¦  «         t          j        | j        |¦  «         |                      |¦  «         n|‚Y d }~n$d }~ww xY wd| _        |                      |¦  «         t7          ¦   «         }t9          ¦   «         }t9          ¦   «         }t9          ¦   «         }t;          ¦   «         |_        t?          ¦   «         |_        tA          ¦   «         |_        tC          j"        ¦   «         | _#        | j        j$        �Ôt          j%        | j        j$        ¦  «        }	t?          |	 &                    di ¦  «        ¦  «        |_        tA          |	 &                    d	i ¦  «        ¦  «        |_        tO          |	 &                    d
i ¦  «        ¦  «        |_        |  (                    |	|j        | j        j)        rtT          j+        ntT          j,        ¦  «         | j        j)        �rdt          j%        | j        j)        ¦  «        }	tA          |	 &                    d	i ¦  «        ¦  «        |_-        t?          |	 &                    di ¦  «        ¦  «        |_-        tO          |	 &                    d
i ¦  «        ¦  «        |_-        d|	v rt]          j/        |	d         ¦  «        |_-        d|	v rt]          j/        |	d         ¦  «        |_0        tc          | j#         2                    ¦   «         ¦  «        D ];\  }
}| j         3                    |
¦  «        r|| j#        |
 4                    ¦   «         <   Œ<|  (                    |	|j-        tT          j,        ¦  «         | 5                    ¦   «         | _6        | 5                    ¦   «         | _7        | 5                    ¦   «         | _8        | 5                    ¦   «         | _9        | j#         :                    |j;        ¦  «         |  <                    ¦   «          |  =                    ¦   «          |  >                    ¦   «          t          d¦  «        }t          d¦  «        }t          d¦  «        }|| j#        v r&|| j#        v s	|| j#        v rt%          j        d¦  «         |  @                    tT          j,        d¦  «        }|�&tƒ          jB        | tT          j,        d¦  «        | _C        nd | _C        d
g| _D        dg| _E        d | _F        d S )NT)Úexist_okFz(Regenerating configuration from scratch:z(Regenerating configuration from scratch.zReason:r�   ÚbinariesÚ
propertiesÚcmakeÚhost_machineÚtarget_machineÚ	buildtyper;   Úoptimizationz»Recommend using either -Dbuildtype or -Doptimization + -Ddebug. Using both is redundant since they override each other. See: https://mesonbuild.com/Builtin-options.html#build-type-optionsÚexe_wrapperz
pkg-config)Gr÷   rø   r7   rx   r:   rö   Úprivate_dirÚscratch_dirÚlog_dirÚinfo_dirÚmakedirsr   ÚloadÚget_build_dirÚfirst_invocationrF   Úcreate_new_coredataÚMesonVersionMismatchExceptionr   rJ   r+   Úread_cmd_line_filer   r˜   Úget_cmd_line_filerÜ   Úredr   r   rï   Úbuildr   r   ÚcollectionsÚOrderedDictrù   Úconfig_filesÚparse_machine_filesr9   r   Ú_load_machine_file_optionsÚcross_filesr	   ÚBUILDÚHOSTÚhostr   Úfrom_literalr©   ÚlistÚitemsÚis_per_machine_optionÚas_buildÚdefault_missingÚmachinesrþ   rÿ   Ú	cmakevarsÚupdateÚcmd_line_optionsÚ_set_default_options_from_envÚ_set_default_binaries_from_envÚ _set_default_properties_from_envr   Úlookup_binary_entryr   Úfrom_bin_listr  Údefault_cmakeÚdefault_pkgconfigÚwrap_resolver)Úselfr÷   rø   rù   Úer#  rþ   rÿ   r$  ÚconfigÚkeyr=   ÚbtÚdbÚopr  s                   r4   Ú__init__zEnvironment.__init__±  s  € Ø$ˆŒØ"ˆŒð Ñ Ý!œwŸ|š|¨Iµ{Ô7NÑOÔOˆDÔÝœ7Ÿ<š<¨	µ;Ô3FÑGÔGˆDŒLÝœGŸLšL¨µKÔ4HÑIÔIˆDŒMÝŒK˜Ô(°4Ð8Ñ8Ô8Ð8ÝŒK˜œ¨tÐ4Ñ4Ô4Ð4ÝŒK˜œ°Ð5Ñ5Ô5Ð5ðÝ (¤¨d×.@Ò.@Ñ.BÔ.BÑ CÔ C�”Ø(-�Ô%Ñ%øÝ$ð 2ð 2ð 2Ø×(Ò(¨Ñ1Ô1Ð1Ð1Ñ1ÝÔ9ð 2ð 2ð 2å”ÐCÅSÈÁVÄVÑLÔLÐLÝÔ+¨D¬N¸GÑDÔDÐDØ×(Ò(¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1øøøøÝ!ð 	ð 	ð 	õ ”7—>’>¥(Ô"<¸T¼^Ñ"LÔ"LÑMÔMð Ý”LÐ!KÑLÔLÐLÝ”H˜Y­¬µ°Q±´Ñ(8Ô(8Ñ9Ô9Ð9ÝÔ/°´ÀÑHÔHÐHØ×,Ò,¨WÑ5Ô5Ð5Ð5à�Gð 6Ð5Ð5Ð5Ð5øøøøð	øøøð  "ˆDÔØ×$Ò$ WÑ-Ô-Ð-õ =WÑ<XÔ<Xˆõ )Ñ*Ô*ˆõ +Ñ,Ô,ˆ
õ *Ñ+Ô+ˆ	õ
 -Ñ.Ô.ˆŒõ %™œˆŒÝ%™<œ<ˆ
Ôõ P[ÔOfÑOhÔOhˆŒð Œ=Ô%Ð1ÝÔ1°$´-Ô2LÑMÔMˆFÝ(¨¯ª°JÀÑ)CÔ)CÑDÔDˆHŒNÝ)¨&¯*ª*°\À2Ñ*FÔ*FÑGÔGˆJÔÝ,¨V¯ZªZ¸ÀÑ-DÔ-DÑEÔEˆIŒOØ×+Ò+Ø˜
Ô(Ø'+¤}Ô'@ÐX•Ô#Ð#ÅmÔFXñZô Zð Zð Œ=Ô$ñ 	YÝÔ1°$´-Ô2KÑLÔLˆFÝ(¨¯ª°LÀ"Ñ)EÔ)EÑFÔFˆJŒOÝ'¨¯
ª
°:¸rÑ(BÔ(BÑCÔCˆHŒMÝ+¨F¯JªJ°wÀÑ,CÔ,CÑDÔDˆIŒNØ Ð'Ð'Ý +Ô 8¸ÀÔ9OÑ PÔ P�”Ø 6Ð)Ð)Ý"-Ô":¸6ÐBRÔ;SÑ"TÔ"T�”õ # 4¤<×#5Ò#5Ñ#7Ô#7Ñ8Ô8ð 9ð 9‘
��UØ”=×6Ò6°sÑ;Ô;ð 9Ø38�D”L §¢¡¤Ñ0øØ×+Ò+¨F°J´OÅ]ÔEWÑXÔXÐXð !×0Ò0Ñ2Ô2ˆŒØ ×0Ò0Ñ2Ô2ˆŒØ$×4Ò4Ñ6Ô6ˆŒØ"×2Ò2Ñ4Ô4ˆŒð 	Œ×Ò˜GÔ4Ñ5Ô5Ð5ð 	×*Ò*Ñ,Ô,Ð,Ø×+Ò+Ñ-Ô-Ð-Ø×-Ò-Ñ/Ô/Ð/õ �{Ñ#Ô#ˆÝ�wÑÔˆÝ�~Ñ&Ô&ˆØ�”ÐÐ 2¨¬Ð#5Ð#5¸¸t¼|Ð9KÐ9KÝŒLð _ñ `ô `ð `ð ×.Ò.­}Ô/AÀ=ÑQÔQˆØÐ"Ý.Ô<¸TÅ=ÔCUÐWdÑeÔeˆDÔÐà#ˆDÔà%˜YˆÔØ". ˆÔØ59ˆÔÐÐs,   Ã12D% Ä%I2ÅI2ÅAF+Æ+I2Æ8B0I-É-I2r1  ú'ConfigParser'rÿ   r   rÚ   r	   c                ó"  — |                      d¦  «        }|r^t          j        d¦  «         |                     ¦   «         D ]5\  }}|| j        t          j        |¦  «                             |¬¦  «        <   Œ6t          ¦   «         }t          j
        D ]2}|                     |dz   ¦  «         |                     |dz   ¦  «         Œ3|j                             ¦   «                              ¦   «         D ]X\  }}||v rOt          j        |› d�¦  «         || j        t          j        |¦  «                             |¬¦  «        <   |j        |= ŒY|                     ¦   «         D �]2\  }	}
d|	v r|	                     d¦  «        \  }}	nd}|	d	k    r‘|
                     ¦   «         D ]{\  }}t          j        |¦  «        }|t          j        u r|j        |urt          j        d
d¬¦  «         |j        rt'          d¦  «        ‚|| j        |                     ||¬¦  «        <   Œ|Œ¼|	dk    rp|t          j        u rb|
                     ¦   «         D ]M\  }}t          j        |¦  «        }|j        rt'          d¦  «        ‚|| j        |                     |¬¦  «        <   ŒN�Œ4dS )zDRead the contents of a Machine file and put it in the options store.ÚpathszNThe [paths] section is deprecated, use the [built-in options] section instead.©rÚ   Ú_argsÚ
_link_argszc in the [properties] section of the machine file is deprecated, use the [built-in options] section.ú:r�   zbuilt-in optionszrSetting build machine options in cross files, please use a native file instead, this will be removed in meson 0.60T)ÚoncezgDo not set subproject options in [built-in options] section, use [subproject:built-in options] instead.)Ú
subprojectrÚ   zproject options)r?  N)r9   r   Údeprecationr  rù   r   Úfrom_stringÚevolveÚsetr   Úall_languagesÚaddrÿ   ÚcopyÚsplitr	   r  rÚ   r?  r   )r/  r1  rÿ   rÚ   r9  ÚkÚvÚdeprecated_propertiesÚlangÚsectionr§   r?  r2  s                r4   r  z&Environment._load_machine_file_options7  s
  € ð —
’
˜7Ñ#Ô#ˆØð 	SÝÔÐmÑnÔnÐnØŸš™œð Sð S‘��1ØQR�”�YÔ2°1Ñ5Ô5×<Ò<ÀWÐ<ÑMÔMÑNÐNõ
 -0©E¬EÐÝÔ+ð 	;ð 	;ˆDØ!×%Ò% d¨W¡nÑ5Ô5Ð5Ø!×%Ò% d¨\Ñ&9Ñ:Ô:Ð:Ð:ØÔ)×.Ò.Ñ0Ô0×6Ò6Ñ8Ô8ð 	-ð 	-‰DˆAˆqØÐ)Ð)Ð)ÝÔ  Að  "Kð  "Kð  "Kñ  Lô  Lð  LØQR�”�YÔ2°1Ñ5Ô5×<Ò<ÀWÐ<ÑMÔMÑNØÔ)¨!Ð,øà%Ÿ|š|™~œ~ð 	Hñ 	H‰OˆG�VØ�gˆ~ˆ~Ø&-§m¢m°CÑ&8Ô&8Ñ#�
˜G˜Gà�
ØÐ,Ò,Ð,Ø"ŸLšL™NœNð Yð Y‘D�A�qÝ#Ô/°Ñ2Ô2�Cà¥-Ô"4Ð4Ð4¸¼ÈGÐ9SÐ9SÝÔ(ð  *^ð  eið  jñ  jô  jð  jØ”~ð XÝ,ð  .Wñ  Xô  Xð  XØWX�D”L §¢°zÈ7 Ñ!SÔ!SÑTÐTðYð Ð-Ò-Ð-°'½]Ô=OÐ2OÐ2Oð #ŸLšL™NœNð Hð H‘D�A�qå#Ô/°Ñ2Ô2�CØ”~ð XÝ,ð  .Wñ  Xô  Xð  XØFG�D”L §¢°z Ñ!BÔ!BÑCÐCùð-	Hð 	Hr6   c                óÊ  — d„ t           j         j                             ¦   «         D ¦   «         g d¢z   }t          j        t
          ¦  «        }t          j        |t          ¦  «        D �]N\  \  }}}t          ||  
                    ¦   «         |¦  «        }|��|dk    rv| j        |                              ¦   «         r |                     t          j        ¦  «        }nt!          j        d|¦  «        }t          t#          j        |¦  «        ¦  «        }nT|dk    r?t          t#          j        |                     t          j        ¦  «        ¦  «        ¦  «        }nt'          |¦  «        }d„ |D ¦   «         }| j        �r;|dk    rYt+          d|d	¬
¦  «        }	t           j         j        D ]3}
|	                     |
¬¦  «        }	||	                              |¦  «         Œ4�Œr|dk    rYt+          d|d	¬
¦  «        }	t           j         j        D ]3}
|	                     |
¬¦  «        }	||	                              |¦  «         Œ4�ŒÑt+          j        |¦  «                             |¬¦  «        }	|t           j         j                             ¦   «         v r|	                     d¦  «        }	||	                              |¦  «         �ŒP|                     ¦   «         D ]\  }}|| j        vr
|| j        |<   Œd S )Nc                ó"   — g | ]\  }}||› d �f‘ŒS )r;  r1   )r2   rH  rI  s      r4   r5   z=Environment._set_default_options_from_env.<locals>.<listcomp>j  s'   € ÐUÐUÐU¡$ ! Qˆa�A���ÐÐUÐUÐUr6   ))ÚPKG_CONFIG_PATHÚpkg_config_path)ÚCMAKE_PREFIX_PATHÚcmake_prefix_path)ÚLDFLAGSÚldflags)ÚCPPFLAGSÚcppflagsrR  z:|;rP  c                ó   — g | ]}|¯|‘ŒS r1   r1   )r2   r0  s     r4   r5   z=Environment._set_default_options_from_env.<locals>.<listcomp>†  s   € Ð1Ð1Ð1 ¨qÐ1˜!Ð1Ð1Ð1r6   rT  Ú	link_argsr°   )rÚ   rK  )rK  rV  Úenv_argsr:  )r   ÚCFLAGS_MAPPINGr  r  Údefaultdictr  Ú	itertoolsÚproductr	   r?   Úis_cross_buildr#  rÑ   rG  r7   ÚpathsepÚrer   Ú
OrderedSetr   r  r   ÚLANGUAGES_USING_LDFLAGSrB  ÚextendÚLANGUAGES_USING_CPPFLAGSrA  r§   rù   )r/  ÚoptsÚenv_optsÚevarÚkeynamer'   Úp_envÚ_p_envÚp_listr2  rK  rH  rI  s                r4   r'  z)Environment._set_default_options_from_envh  sä  € àUÐU­)Ô*=Ô*L×*RÒ*RÑ*TÔ*TÐUÑUÔUðð ð ñð 	õ ;FÔ:QÕRVÑ:WÔ:Wˆå,5Ô,=¸dÅMÑ,RÔ,Rð 5	5ñ 5	5Ñ(‰OˆT�7˜[Ý  ¨d×.AÒ.AÑ.CÔ.CÀTÑJÔJˆEØÑ ð Ð1Ò1Ð1Ø”} [Ô1×<Ò<Ñ>Ô>ð 9à!&§¢­R¬ZÑ!8Ô!8˜˜õ "$¤¨&°%Ñ!8Ô!8˜Ý!¥(Ô"5°fÑ"=Ô"=Ñ>Ô>�F�FØÐ 1Ò1Ð1Ý!¥(Ô"5°e·k²kÅ"Ä*Ñ6MÔ6MÑ"NÔ"NÑOÔO�F�Få'¨Ñ.Ô.�FØ1Ð1 VÐ1Ñ1Ô1�ð Ô(ñ 5Ø )Ò+Ð+Ý'¨¸[ÈsÐSÑSÔS˜Ý$-Ô$7Ô$Oð 9ð 9˜DØ"%§*¢*°$ *Ñ"7Ô"7˜CØ$ SœM×0Ò0°Ñ8Ô8Ð8Ð8ñ9ð ! JÒ.Ð.Ý'¨
¸KÈcÐRÑRÔR˜Ý$-Ô$7Ô$Pð 9ð 9˜DØ"%§*¢*°$ *Ñ"7Ô"7˜CØ$ SœM×0Ò0°Ñ8Ô8Ð8Ð8ñ9õ (Ô3°GÑ<Ô<×CÒCÈKÐCÑXÔX˜Ø¥9Ô#6Ô#E×#LÒ#LÑ#NÔ#NÐNÐNð  #&§*¢*¨ZÑ"8Ô"8˜CØ  œ×,Ò,¨VÑ4Ô4Ð4ùð —N’NÑ$Ô$ð 	$ð 	$‰DˆAˆqØ˜œÐ$Ð$Ø"#�”˜Q‘øð	$ð 	$r6   c                ó   — t          j        t          j                             ¦   «         t          j                             ¦   «         ¦  «        }t          j        |t          ¦  «        D ]e\  \  }}}t          ||  	                    ¦   «         |¦  «        }|�8| j
        |         j
                             |t          j        |¦  «        ¦  «         ŒfdS )z¿Set default binaries from the environment.

        For example, pkg-config can be set via PKG_CONFIG, or in the machine
        file. We want to set the default to the env variable.
        N)r\  Úchainr$   ÚDEPRECATED_ENV_PROG_MAPr  ÚENV_VAR_PROG_MAPr]  r	   r?   r^  rþ   Ú
setdefaultr   r   )r/  re  r   rg  r'   ri  s         r4   r(  z*Environment._set_default_binaries_from_env²  s¿   € õ Œ�yÔ@×FÒFÑHÔHÝ(Ô9×?Ò?ÑAÔAñCô Cˆõ *3Ô):¸4ÅÑ)OÔ)Oð 	að 	aÑ%‰LˆT�4˜+Ý  ¨d×.AÒ.AÑ.CÔ.CÀTÑJÔJˆEØÐ Ø”˜kÔ*Ô3×>Ò>¸tÅXÔEXÐY^ÑE_ÔE_Ñ`Ô`Ð`øð	að 	ar6   c                ó¬  — ddgdfddgdfdddgd	fd
dgdfg}t          j        |t          ¦  «        D ]¡\  \  }}}}|D ]•}t          ||                      ¦   «         |¦  «        }|�n|rD| j        |         j                             ||                     t          j	        ¦  «        ¦  «         n&| j        |         j                             ||¦  «          nŒ–Œ¢dS )z6Properties which can also be set from the environment.Úboost_includedirÚBOOST_INCLUDEDIRFÚboost_librarydirÚBOOST_LIBRARYDIRÚ
boost_rootÚ
BOOST_ROOTÚ	BOOSTROOTTÚ	java_homeÚ	JAVA_HOMEN)
r\  r]  r	   r?   r^  rÿ   rp  rG  r7   r_  )r/  re  r   ÚevarsrG  r'   rg  ri  s           r4   r)  z,Environment._set_default_properties_from_envÀ  s  € ð  Ð"4Ð!5°uÐ=ØÐ"4Ð!5°uÐ=Ø˜L¨+Ð6¸Ð=Ø˜;˜-¨Ð/ð	9
ˆõ 2;Ô1BÀ4ÍÑ1WÔ1Wð 	ð 	Ñ-Ñ ˆT�5˜% +Øð ð �Ý$ [°$×2EÒ2EÑ2GÔ2GÈÑNÔN�ØÐ$Øð XØœ¨Ô4Ô?×JÒJÈ4ÐQV×Q\ÒQ\Õ]_Ô]gÑQhÔQhÑiÔiÐiÐiàœ¨Ô4Ô?×JÒJÈ4ÐQVÑWÔWÐWØ�Eð %øð	ð 	r6   c                óv   — t          j        || j        t          j        ¦   «         ¦  «        | _         d| _        d S )NT)r   ÚCoreDatar  r   Úget_meson_commandr  )r/  rù   s     r4   r  zEnvironment.create_new_coredataÔ  s4   € õ
 !Ô)¨'°4Ô3CÅXÔE_ÑEaÔEaÑbÔbˆŒØ $ˆÔÐÐr6   Úwhen_building_forr)   c                ó6   — | j                              |¦  «        S ©N)r   r^  )r/  r  s     r4   r^  zEnvironment.is_cross_buildÜ  s   € ØŒ}×+Ò+Ð,=Ñ>Ô>Ð>r6   r+   c                óZ   — t          j        | j         |                      ¦   «         ¦  «        S r�  )r   Úsaver  ©r/  s    r4   Údump_coredatazEnvironment.dump_coredataß  s"   € ÝŒ}˜Tœ]¨D×,>Ò,>Ñ,@Ô,@ÑAÔAÐAr6   c                ó   — | j         S r�  )r  r„  s    r4   Úget_log_dirzEnvironment.get_log_dirâ  s
   € ØŒ|Ðr6   úcoredata.CoreDatac                ó   — | j         S r�  r   r„  s    r4   Úget_coredatazEnvironment.get_coredataå  s
   € ØŒ}Ðr6   FÚ
unbufferedrd   c                óô   — t          j        ¦   «         }|€t          d¦  «        ‚|                     ¦   «         }| r=dt          j                             |d         ¦  «        v r|                     dd¦  «         |S )NzNo command?Úpythonr   r   z-u)r   r~  r   rF  r7   rx   ry   Úinsert)r‹  Úcmds     r4   Úget_build_commandzEnvironment.get_build_commandè  so   € åÔ(Ñ*Ô*ˆØˆ;Ý# MÑ2Ô2Ð2Ø�hŠh‰jŒjˆØð 	 ˜(¥b¤g×&6Ò&6°s¸1´vÑ&>Ô&>Ð>Ð>Ø�JŠJ�q˜$ÑÔÐØˆ
r6   Úfnameú'mesonlib.FileOrString'c                ó    — t          |¦  «        S r�  )r   ©r/  r‘  s     r4   r   zEnvironment.is_headerò  ó   € Ý˜ÑÔÐr6   c                ó    — t          |¦  «        S r�  )r"   r”  s     r4   r"   zEnvironment.is_sourceõ  r•  r6   c                ó    — t          |¦  «        S r�  )r   r”  s     r4   r   zEnvironment.is_assemblyø  s   € Ý˜5Ñ!Ô!Ð!r6   c                ó    — t          |¦  «        S r�  )r    r”  s     r4   r    zEnvironment.is_llvm_irû  s   € Ý˜%Ñ Ô Ð r6   c                ó    — t          |¦  «        S r�  )r!   r”  s     r4   r!   zEnvironment.is_objectþ  r•  r6   N)Úmaxsizec                ó    — t          |¦  «        S r�  )r   r”  s     r4   r   zEnvironment.is_library  s   € å˜%Ñ Ô Ð r6   r'   r   úT.Optional[T.List[str]]c                óB   — | j         |                              |¦  «        S r�  )rþ   Úlookup_entry)r/  r'   r   s      r4   r*  zEnvironment.lookup_binary_entry  s   € ØŒ}˜[Ô)×6Ò6°tÑ<Ô<Ð<r6   c                ó   — | j         S r�  )r  r„  s    r4   Úget_scratch_dirzEnvironment.get_scratch_dir  s   € ØÔÐr6   c                ó   — | j         S r�  )r÷   r„  s    r4   Úget_source_dirzEnvironment.get_source_dir  s
   € ØŒÐr6   c                ó   — | j         S r�  )rø   r„  s    r4   r  zEnvironment.get_build_dir  s
   € ØŒ~Ðr6   c                ó*   — |                       ¦   «         S )z=Install dir for the import library (library used for linking)©Ú
get_libdirr„  s    r4   Úget_import_lib_dirzEnvironment.get_import_lib_dir  ó   € à�ŠÑ Ô Ð r6   c                ó*   — |                       ¦   «         S )z9Install dir for shared modules that are loaded at runtimer¥  r„  s    r4   Úget_shared_module_dirz!Environment.get_shared_module_dir  r¨  r6   c                óº   — | j         j        }|                     ¦   «         s|                     ¦   «         r|                      ¦   «         S |                      ¦   «         S )z"Install dir for the shared library)r#  r  rÑ   Ú	is_cygwinÚ
get_bindirr¦  )r/  Úms     r4   Úget_shared_lib_dirzEnvironment.get_shared_lib_dir  sK   € àŒMÔˆà�<Š<‰>Œ>ð 	%˜QŸ[š[™]œ]ð 	%Ø—?’?Ñ$Ô$Ð$Ø�ŠÑ Ô Ð r6   c                ó0   — |                       ¦   «         › d�S )zInstall dir for JAR filesz/java)Úget_datadirr„  s    r4   Úget_jar_dirzEnvironment.get_jar_dir!  s   € à×"Ò"Ñ$Ô$Ð+Ð+Ð+Ð+r6   c                ó*   — |                       ¦   «         S )z"Install dir for the static libraryr¥  r„  s    r4   Úget_static_lib_dirzEnvironment.get_static_lib_dir%  r¨  r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚprefix©r   Ú
get_optionr   r„  s    r4   Ú
get_prefixzEnvironment.get_prefix)  ó    € ØŒ}×'Ò'­	°(Ñ(;Ô(;Ñ<Ô<Ð<r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚlibdirr·  r„  s    r4   r¦  zEnvironment.get_libdir,  rº  r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚ
libexecdirr·  r„  s    r4   Úget_libexecdirzEnvironment.get_libexecdir/  ó    € ØŒ}×'Ò'­	°,Ñ(?Ô(?Ñ@Ô@Ð@r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚbindirr·  r„  s    r4   r­  zEnvironment.get_bindir2  rº  r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚ
includedirr·  r„  s    r4   Úget_includedirzEnvironment.get_includedir5  rÀ  r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚmandirr·  r„  s    r4   Ú
get_mandirzEnvironment.get_mandir8  rº  r6   c                óP   — | j                              t          d¦  «        ¦  «        S )NÚdatadirr·  r„  s    r4   r±  zEnvironment.get_datadir;  s    € ØŒ}×'Ò'­	°)Ñ(<Ô(<Ñ=Ô=Ð=r6   c                óº  — | j         j        |                              ¦   «         D ] }|j        dk    rd} n|j        dk    rd} nŒ!g S t	          |                     ¦   «         dgz   ¦  «        \  }}}|j        dk    rt          j        d¦  «        ‚| 	                    d¦  «        |          
                    d	¦  «         	                    d
¦  «        }d„ |D ¦   «         S )NÚclangr   r¤   rD   z-print-search-dirsr   z&Could not calculate system search dirsú
zlibraries: =r=  c                óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r1   )r7   rx   Únormpath)r2   rP   s     r4   r5   z8Environment.get_compiler_system_dirs.<locals>.<listcomp>O  s(   € Ð1Ð1Ð1¨•”× Ò  Ñ#Ô#Ð1Ð1Ð1r6   )r   r   r§   r¨   r
   Úget_exelistrH   r   r   rG  Úlstrip)r/  r'   ÚcompÚindexrP   ÚoutÚ_s          r4   Úget_compiler_system_dirsz$Environment.get_compiler_system_dirs>  sì   € Ø”MÔ+¨KÔ8×?Ò?ÑAÔAð 
	ð 
	ˆDØŒw˜'Ò!Ð!Ø�Ø�Ø”˜EÒ!Ð!Ø�Ø�ð "ð ˆIå˜t×/Ò/Ñ1Ô1Ð5IÐ4JÑJÑKÔK‰	ˆˆ3�ØŒ<˜1ÒÐÝÔ)Ð*RÑSÔSÐSØ�iŠi˜‰oŒo˜eÔ$×+Ò+¨NÑ;Ô;×AÒAÀ#ÑFÔFˆØ1Ð1¨SÐ1Ñ1Ô1Ð1r6   c                ó‚   — | j         |                              dd ¦  «        }|�|S t          | j        |         ¦  «         S )NÚneeds_exe_wrapper)rÿ   r9   rô   r#  )r/  r'   r=   s      r4   Úneed_exe_wrapperzEnvironment.need_exe_wrapperQ  sB   € Ø” Ô,×0Ò0Ð1DÀdÑKÔKˆØÐØˆLÝ'¨¬°kÔ(BÑCÔCÐCÐCr6   úT.Optional[ExternalProgram]c                ó<   — |                       ¦   «         sd S | j        S r�  )rÙ  r  r„  s    r4   Úget_exe_wrapperzEnvironment.get_exe_wrapperW  s$   € Ø×$Ò$Ñ&Ô&ð 	Ø�4ØÔÐr6   )r÷   r-   rø   r-   rù   rú   r,   rû   )r1  r7  rÿ   r   rÚ   r	   r,   rû   )r,   rû   )rù   rú   r,   rû   )r  r	   r,   r)   ©r,   r+   )r,   rˆ  )F)r‹  r)   r,   rd   )r‘  r’  r,   r)   )r'   r	   r   r+   r,   rœ  )r'   r	   )r,   rÚ  ).Ú__name__Ú
__module__Ú__qualname__r  r  r	  r6  r  r'  r(  r)  r  r	   r  r^  r…  r‡  rŠ  Ústaticmethodr�  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Ü  r1   r6   r4   rö   rö   ¬  sZ  € € € € € Ø!€KØ€GØ€HðD:ð D:ð D:ð D:ðL/Hð /Hð /Hð /HðbH$ð H$ð H$ð H$ðTað að að aðð ð ð ð(%ð %ð %ð %ð ANÔ@Rð ?ð ?ð ?ð ?ð ?ðBð Bð Bð Bðð ð ð ðð ð ð ð ðð ð ð ñ „\ðð ð  ð  ð  ð ð  ð  ð  ð"ð "ð "ð "ð!ð !ð !ð !ð ð  ð  ð  ð €Y�tÐÑÔð!ð !ñ Ôð!ð=ð =ð =ð =ð ð  ð  ð  ðð ð ð ðð ð ð ð!ð !ð !ð !ð!ð !ð !ð !ð!ð !ð !ð !ð,ð ,ð ,ð ,ð!ð !ð !ð !ð=ð =ð =ð =ð=ð =ð =ð =ðAð Að Að Að=ð =ð =ð =ðAð Að Að Að=ð =ð =ð =ð>ð >ð >ð >ð2ð 2ð 2ð 2ð& =JÔ<Nð Dð Dð Dð Dð Dð ð  ð  ð  ð  ð  r6   rö   )r'   r	   r(   r)   r*   r+   r,   r-   )r@   F)r,   rY   )rb   F)rc   r+   rJ   r)   r,   rd   )rc   r+   rJ   r)   r,   ri   )rW   r+   r,   rd   )r,   rd   )r   rŸ   r,   r+   )r   rŸ   rÝ  )r,   r-   r�  )r   rì   r,   r   )rð   r   )IÚ
__future__r   r\  r7   r×   r`  ræ   rL   ÚtypingÚTr  r�   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Úprogramsr   r$   r   r   r   r   r   r   r   r   r   r   r    r!   r"   Ú	functoolsr#   Ú
mesonbuildÚTYPE_CHECKINGÚargparseÚconfigparserr%   Ú	wrap.wrapr&   ÚDictr+   rŸ   Úbuild_filenamer?   rR   rX   ra   rh   rf   rT   rœ   rž   r­   r±   rß   rã   rè   rë   rï   rô   rö   r1   r6   r4   ú<module>rî     s  ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à„?ð *Ø€O€O€OØ)Ð)Ð)Ð)Ð)Ð)à#Ð#Ð#Ð#Ð#Ð#à”F˜3 ˜=Ô)€Mð €ðð ð ð ð2ð ð ð ðð ð ðIð Ið Ið Iðð ð ð ð ð)ð )ð )ð )ð )ð6ð ð ð ð@ð ð ð ð>ð ð ð ð &ð &ð &ð &ðPð ð ð ðAð Að Að AðF&ð &ð &ð &ðP%ð %ð %ð %ð
1ð 1ð 1ð 1ðð ð ð ð ð Vð Vð Vð Vð n ð n ð n ð n ð n ñ n ô n ð n ð n ð n r6   