
    <hl                    @   % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKr	S SK
r
SSKJr  SSKJr  SSKJr  SSKJr  \R                   rSSKJrJrJrJrJrJrJrJrJrJr  SS	KJr  SS
KJr  SSKJr  SSKJ r J!r!J"r"J#r#J$r$  SSKJ%r%  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.  S SK/Jr  \	R`                  (       a1  SSK%J1r1  SSK2J3r3  SSKJ4r4J5r5  SSK6J7r7  SSKJ8r8  \	Rr                  \:\14   r;/ SQr<Sr=S?S jr>S@S jr?SA SBS jjr@SC SDS jjrASESFS jjrBSGS jrCSH SIS jjrDSJS jrESKSLS  jjrFSKSMS! jjrGSNS" jrHSOS# jrISOS$ jrJSOS% jrKSOS& jrLSPS' jrMSQS( jrNSPS) jrOSPS* jrPS+S,S-S.S/S/S.S0S0S0S0S0S1S2S3S4.rQS5\RS6'   SRS7 jrSSRS8 jrTSSS9 jrUSTS: jrVSESUS; jjrWSVS< jrX " S= S>5      rYg)W    )annotationsN   coredata)mesonlib)machinefile)options)
MesonExceptionMachineChoice
Popen_safe
PerMachinePerMachineDefaultablePerThreeMachineDefaultable
split_args	quote_argsearch_versionMesonBugException)	OptionKey)mlog)ExternalProgram)BinaryTableMachineInfo
Propertiesknown_cpu_familiesCMakeVariables)	compilers)is_assembly	is_header
is_library
is_llvm_ir	is_objectis_separate_compile	is_source)	lru_cache)	envconfig)Compiler)VisualStudioLikeCompiler)
OptionDictElementaryOptionValues)Resolver)cargo))PKG_CONFIG_PATHpkg_config_path)CMAKE_PREFIX_PATHcmake_prefix_path)LDFLAGSldflags)CPPFLAGScppflagszmeson.buildc                >    [        U [        5      (       d   S5       eU $ )Nfor mypy)
isinstancestr)vals    w/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/environment.py_as_strr:   A   s    c3++J    c                ^   [        U(       a  US-   /OU/U/5      U    nU H'  n[        R                  R                  U5      nUc  M'    O@   SR	                  U Vs/ s H  oD< PM     sn5      n[
        R                  " SU S35        g[
        R                  " SU< SU< 35        U$ s  snf )z*
Returns the exact env var and the value.

_FOR_BUILDNz, 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)for_machineis_crossvar_name
candidatesvarvalue	formatteds          r9   _get_env_varrJ   F   s     
 '/(\
!	"XJ	
 J 

s# 
 IIZ@ZczZ@A	

Xi[(cdeJJw<UIFGL	 As   B*c           
     d    [        U S/5      SS u  p4[        U5      nUR                  S:X  al  [
        R                  " USU-   5      (       aM  U(       aC  [        R                  " SR                  U[        [        R                  " U 5      5      5      5        X4$ g! [        [        4 a     gf = f)N	--versionr      NN>=zFound gcovr-{} at {})r   FileNotFoundErrorPermissionErrorr   
returncoder   version_comparer   logformatr   shutilwhich)	gcovr_exemin_versionrT   pfounds        r9   detect_gcovrr\   _   s    y+67!< 5!E||qX55eTK=OPPHH+225)FLLQZD[:\]^ / s   B B/.B/c           
     4    [        U S/5      SS u  p#[        U5      nUR                  S:X  aT  U(       aM  U(       aC  [
        R                  " SR                  U[        [        R                  " U 5      5      5      5        X4$ g! [        [        4 a     gf = f)NrL   r   rM   rN   zFound lcov-{} at {})r   rP   rQ   r   rR   r   rT   rU   r   rV   rW   )lcov_exerT   rZ   r[   s       r9   detect_lcovr_   m   s    x56q; 5!E||qUHH*11%6<<PXCY9Z[\ / s   B BBc                    U b)  U S:X  a  SnOSU  3n[         R                  " U5      b  U$  g [        S5      nU H"  n[         R                  " U5      (       d  M   Us  $    g )N zllvm-covz	llvm-cov-)rV   rW   get_llvm_tool_names)suffixtooltoolss      r9   detect_llvm_covrf   {   sm    R<Dvh'D<<)K * 	 $J/D||D!!  r;   c                ^   U R                   [        R                     nSU;   =(       a    US   R                  S:H  nSU;   =(       a    US   R                  S:H  nU(       a#  US   R                  R                  S5      S   nU$ U(       a#  US   R                  R                  S5      S   nU$ g )Ncppclangc.r   )r   r   BUILDidversionsplit)r   r   cpp_compiler_is_clangc_compiler_is_clangrc   s        r9   compute_llvm_suffixrr      s    ""=#6#67I!Y.Q9U3C3F3F'3Q*Ky~/@/@G/K5!))//4Q7 3''--c215 r;   c                V    [        U 5      u  p[        R                  " U5      c  S nXU4$ N)r_   rV   rW   )r^   genhtml_exelcov_versions      r9   detect_lcov_genhtmlrw      s.    (2H||K (;..r;   c                    [        5       u  p[        [        U 5      5      nUc  [        S5      n[        5       u  pEnXXEXc4$ )Nra   )r\   rf   rr   rw   )r   rX   gcovr_versionllvm_cov_exer^   rv   ru   s          r9   find_coverage_toolsr{      sF    +~I"#6x#@AL&r**=*?'HKX[VVr;   c                4    [        X5      nU(       a  US   $ S $ )Nr   ) detect_ninja_command_and_version)rn   rT   rs      r9   detect_ninjar      s    (6A1Q4$r;   c                >   [         R                  R                  SS 5      nU(       a  U/O/ SQ GHM  n[        USS9nUR	                  5       (       d  M%   [        UR                  S/-   5      SS u  pVUR                  5       nUR                  S:X  d  Mf  [        R                  " USU -   5      (       d  M  U(       a  [         R                  R                  U5      nUR                  S	U-   5      (       a  USS
[!        U5      -
   nUS:X  a  SnUS:X  a  Sn["        R$                  " SR'                  XvSR)                  UR                   Vs/ s H  n[+        U5      PM     sn5      5      5        UR                  U4s  $    g ! [        [        4 a     GMg  f = fs  snf )NNINJA)ninjaninja-buildsamuT)silentrL   r   rM   rO   -r   r   r   samuraizFound {}-{} at {} )r>   r?   r@   r   r[   r   commandrP   rQ   striprR   r   rS   pathbasenameendswithlenr   rT   rU   rA   r   )	rn   rT   	env_ninjanprogrZ   r[   namexs	            r9   r}   r}      sc   

w-I%i[+KKq.zz||	!$,,+">?!DHA  <<1!9!9%!P!Pww''*==u--"s5z/2D=("D6>$D,33D"FA9Q<"FGI JLL%((/ L0 % "?3 		  #Gs   FFFFc                J    / SQn/ nU H  nUR                  X-   5        M     U$ )N)5ra   z-20.1z20.1-2020z-19.1z19.1z-1919z-18.1z18.1z-1818z-1717z-1616z-1515z-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35r   z-devel)append)rd   suffixesnamesrc   s       r9   rb   rb      s-    H< ET]# Lr;   c                    / n S[         R                  ;   a  [        [         R                  S   5      n O2[        S5      nU H!  n[        R
                  " U5      nUc  M  U/n   O   U (       aV  U S   n[         R                  R                  U5      (       a-  [         R                  " U[         R                  5      (       a  U/$ / $ )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-buildr   )
r>   r?   r   rb   rV   rW   r   isfileaccessX_OK)exelistre   rd   rW   s       r9   detect_scanbuildr      s     Gbjj RZZ45 $L1DLL&E  '	  qz77>>$BIIdBGG$<$<6MIr;   c                 j    [        S5      n U  H!  n[        R                  " U5      nUc  M  U/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rb   rV   rW   re   rd   r   s      r9   detect_clangformatr     s:      /E||D!6M  Ir;   c                 j    [        S5      n U  H!  n[        R                  " U5      nUc  M  U/s  $    / $ )zLook for clang-tidy binary on build platform

Return: a single-element list of the found clang-tidy binary ready to be
    passed to Popen()
z
clang-tidyr   r   s      r9   detect_clangtidyr   +  s:      -E||D!6M  Ir;   c                 j    [        S5      n U  H!  n[        R                  " U5      nUc  M  U/s  $    / $ )zLook for clang-apply-replacements binary on build platform

Return: a single-element list of the found clang-apply-replacements binary
    ready to be passed to Popen()
zclang-apply-replacementsr   r   s      r9   detect_clangapplyr   8  s;       :;E||D!6M  Ir;   c                z   [         R                  " 5       nUS:X  a  U$ U R                  " 5        H  n[        R                  " SU5      nUR
                  S:X  a  UR                  S;   a    gUR
                  S:X  a  UR                  S;   a    gUR
                  S:X  d  Mp  UR                  S5      (       d  M    g   U$ )	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

x86r'   msvc>   r   80x86zclang-cl>   r   i686gcc__i386__)r   windows_detect_native_archvaluesTcastrm   targethas_builtin_define)r   os_archcompilers      r9   detect_windows_archr   E  s    0 113G%
 $$&664h?;;& hoo9I&I;;*$(//_*L;;%H$?$?
$K$K ' Nr;   c                    U R                   " 5        H  n UR                  U5      (       a    gM     g! [        R                   a     M8  f = f)NTF)r   r   r   r
   )r   definerj   s      r9   any_compiler_has_definer   n  sR    	##F++ ,    && 		s   3A
Ac                   [         R                  " 5       (       a  [        U 5      nO[         R                  " 5       (       dh  [         R                  " 5       (       dN  [         R
                  " 5       (       d4  [         R                  " 5       (       d  [         R                  " 5       (       a$  [        R                  " 5       R                  5       nO#[        R                  " 5       R                  5       nUR                  S5      (       a  UR                  S5      (       a  SnOUS:X  a  SnOUS:X  a  SnOUR                  S5      (       a  SnOUR                  S5      (       d  UR                  S5      (       a  SnOtUR                  S	5      (       a  S
nO[UR                  S5      (       d  US;   a  SnO<US;   a  SnO3US;   a  SnO*UR                  S5      (       a  SU;  a  SnOSnOUS;   a  SnUS:X  a  [        U S5      (       a  SnO]US:X  a  [        U S5      (       a  SnOCUS:X  a  SnO:US:X  a  [        U S5      (       a  S
nO US:X  a  U (       a  [        U S5      (       d  SnU[        ;  a  [         R"                  " SU< S35        U$ )z
Python is inconsistent in its platform module.
It returns different values for the same cpu.
For x86 it might return 'x86', 'i686' or some such.
Do some canonicalization.
i86r   bepcarm64aarch64armearm)	powerpc64ppc64r   )powerpcppc>   macppcpower macintoshr   >   x64amd64i86pcx86_64>   sun4usun4vsparc64mips64mips64>   ip30ip35r   __arm__parisc64parisc	__64BIT____mips64z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
startswithr   r   r   r   warningr   trials     r9   detect_cpu_familyr   x  sB    #I.					("4"4"6"6(:M:M:O:OS[SbSbSdSdhphwhwhyhy""$**,  "((*!5!5	&	'				)	$	$			%	 	 E$4$4V$<$<			0	1	1			,	-	-:W1W	+	+	$	$			&	!	!uEE	"	"
 "9j99E	)	"9i88E 
*	 	%"9k::E 
(	4Y
KKE&&*5) 4D D 	E Lr;   c                   [         R                  " 5       (       a  [        U 5      nO[         R                  " 5       (       dN  [         R                  " 5       (       d4  [         R
                  " 5       (       d  [         R                  " 5       (       a$  [        R                  " 5       R                  5       nO#[        R                  " 5       R                  5       nUS;   a  SnUS:X  a  [        U S5      (       a  SnU$ UR                  S5      (       d  UR                  S5      (       a  [        U S5      (       a  SnU$ Sn U$ UR                  S	5      (       a  SnU$ US
:X  a%  [        R                  " 5       R                  5       nU$ UR                  S5      (       a+  SU;  a  SnU$ U (       a  [        U S5      (       d  SnU$ Sn U$ US:X  a  [        U S5      (       a  SnU$ )N>   r   r   r   r   r   r   r   r   r   r   r   e2kr   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   s     r9   
detect_cpur    s   #I.					("4"4"6"6(:M:M:O:OS[SbSbSdSd""$**,  "((*))"9j99E8 L7 
		)	$	$(8(8(A(A"9i88E0 L+ E* L) 
		&	!	!& L% 
%""$**,  L 
		&	!	!uE L !8J!O!O L ! L 
%"9k::E Lr;   freebsdopenbsdnetbsdntlinuxxnu	dragonflyhaikugnu)r  r  r  windowsandroidr  cygwindarwiniostvosvisionoswatchosr	  r
  r  zT.Mapping[str, str]KERNEL_MAPPINGSc                   U S:X  a  [         R                  " [        R                  " 5       R                  S5      (       a  g[        SS/5      u  pnUR                  S:w  a  [        S5      eUR                  5       R                  5       nUS;  a  [        R                  " S	U S
35        g U$ [        R                  U S 5      $ )Nsunosz<=5.10solarisz/usr/bin/unamez-or   z!Failed to run "/usr/bin/uname -o">   illumosr  zqGot an unexpected value for kernel on a SunOS derived platform, expected either "illumos" or "solaris", but got "z^".Please open a Meson issue with the OS you're running and the value detected for your kernel.)r   rS   r   unamereleaser   rR   r
   r   r   r   r   r  r@   )systemrZ   out_s       r9   detect_kernelr    s     ##HNN$4$<$<hGG  0$78	<<1 !DEEiik!,,LL  M  NQ  MR Rx x y
vt,,r;   c                    U S:X  a  gU $ )Nr  macos )r  s    r9   detect_subsystemr"    s    Mr;   c                 r    [         R                  S:X  a  g[        R                  " 5       R                  5       $ )Nr  )sysr   r  r   r!  r;   r9   detect_systemr%    s'    
||x??""$$r;   c                 B    [         R                  R                  SS 5      $ )NMSYSTEM_CARCH)r>   r?   r@   r!  r;   r9   detect_msys2_archr(    s    ::>>/400r;   c           
         [        5       n[        UU b  [        U 5      OSU b  [        U 5      OS[        R
                  [        U5      [        U5      5      $ )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  r"  )r   r  s     r9   detect_machine_infor+    sQ     _F(1(=)$4!*!6
9Df " "r;   c                   U R                   [        5       :w  a  g[        0 5      nU R                  c   S5       eU R                  U:H  =(       d=    US:H  =(       a    U R                  S:H  =(       d    US:H  =(       a    U R                  S:H  $ )aC  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.
Fz!called on incomplete machine_infor   r   r   r   )r  r%  r   
cpu_family)machine_infotrue_build_cpu_familys     r9   machine_info_can_runr0  0  s     mo--b1"".S0SS.		 	 $9	9 	V
8
+	S,2I2IU2R	V
8
+	T,2I2IV2SVr;   c                  ,   \ rS rSrSrSrSrS2S jrS3S jr      S4S jr	S5S jr
S5S	 jrS5S
 jrS6S jr\R                  4S7S jjrS8S jrS8S jrS9S jr\S:S;S jj5       rS<S jrS<S jrS<S jrS<S jrS<S jrS<S jr\" SS9S=S j5       rS>S jrS8S jrS8S jr S8S jr!S8S jr"S8S jr#S8S  jr$S8S! jr%S8S" jr&S8S# jr'S8S$ jr(S8S% jr)S8S& jr*S8S' jr+S8S( jr,S8S) jr-S?S* jr.S?S+ jr/\R                  4S@S, jjr0SAS- jr1SBS. jr2SCS/ jr3    SDS0 jr4S1r5g)EEnvironmentiA  zmeson-privatez
meson-logsz
meson-infoc           	        Xl         UGb-  X l        [        R                  R	                  U[
        R                  5      U l        [        R                  R	                  U[
        R                  5      U l        [        R                  R	                  U[
        R                  5      U l	        [        R                  " U R                  SS9  [        R                  " U R                  SS9  [        R                  " U R                  SS9   [        R                  " U R                  5       SS9U l        SU l        OS
U l        S
U l        U R!                  U5        [7        5       n[9        5       n[9        5       n[9        5       n[;        5       Ul        [?        5       Ul        [A        5       Ul        [B        RD                  " 5       U l#        0 U l$        [J        RL                  " U R                  RN                  U R                  RP                  U R                   5      U l)        U R                  RN                  b  [J        RT                  " U R                  RN                  U R                   5      n	[?        U	RW                  S0 5      5      Ul        [A        U	RW                  S0 5      5      Ul        [Y        U	RW                  S0 5      5      Ul        U R[                  XR<                  U R                  RP                  (       a  [\        R^                  O[\        R`                  5        U R                  RP                  (       Ga{  [J        RT                  " U R                  RP                  U R                   5      n	[A        U	RW                  S0 5      5      Ul1        [?        U	RW                  S0 5      5      Ul1        [Y        U	RW                  S0 5      5      Ul1        SU	;   a  [d        Rf                  " U	S   5      Ul1        SU	;   a  [d        Rf                  " U	S   5      Ul4        [k        U RF                  Rm                  5       5       HM  u  pU R                  Rn                  Rq                  U
5      (       d  M1  XRF                  U
Rs                  5       '   MO     U R[                  XRb                  [\        R`                  5        URu                  5       U l;        URu                  5       U l<        URu                  5       U l=        URu                  5       U l>        U R                  5         U R                  5         U R                  5         [        S5      n[        S5      n[        S5      nXRF                  ;   a3  XRF                  ;   d  XRF                  ;   a  [$        R2                  " SSS9  U RF                  Rm                  5        VVs0 s HR  u  nnUR                  [\        R`                  L d,  U R                  Rn                  Rq                  U5      (       d  MO  UU_MT     snnU l#        U R                  [\        R`                  S5      nUb,  [        R                  " U [\        R`                  S5      U lG        OS U lG        S/U lH        S/U lI        S U lJ        S U lK        g ! [         a    U R!                  U5         GNV[        R"                   a]  n[$        R&                  " S[)        U5      5        [        R*                  " U R                  U5        U R!                  U5         S nAGNS nAf[,         a  n[        R                  R/                  [        R0                  " U R                  5      5      (       a  [$        R2                  " SSS9  [$        R&                  " S[$        R4                  " [)        U5      5      5        [        R*                  " U R                  U5        U R!                  U5         S nAGN[-        [)        U5       S	35      eS nAff = fs  snnf )NT)exist_okF)suggest_reconfigurez(Regenerating configuration from scratch:z(Regenerating configuration from scratch.)fatalzReason:z- Try regenerating using "meson setup --wipe".ra   binaries
propertiescmakehost_machinetarget_machine	buildtyperB   optimizationzRecommend 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)L
source_dir	build_dirr>   r   rA   r2  private_dirscratch_dirlog_dirinfo_dirmakedirsr   loadget_build_dirfirst_invocationrP   create_new_coredataMesonVersionMismatchExceptionr   rT   r7   read_cmd_line_filer
   r   get_cmd_line_filer   redr   r   r+  buildr   r   collectionsOrderedDictr	   env_optsr   MachineFileStoreconfig_filescross_filesmachinestoreparse_machine_filesr@   r   _load_machine_file_optionsr   rl   HOSThostr   from_literalr   listitemsoptstoreis_per_machine_optionas_builddefault_missingmachinesr7  r8  	cmakevars_set_default_options_from_env_set_default_binaries_from_env _set_default_properties_from_envr   r   lookup_binary_entryr   from_bin_listr>  default_cmakedefault_pkgconfigwrap_resolverr+   )selfr?  r@  cmd_optionsera  r7  r8  rb  configkeyrH   btdbopkvr>  s                     r9   __init__Environment.__init__F  s   $  &N!ww||I{7N7NOD77<<	;3F3FGDLGGLLK4H4HIDMKK((48KKt4KK5c3;==ASASAUkp3q(-%(  DN!D$$[1 =W<X 8M7N 9N8O
 <Q;R	
 -. %%<
 $/#:#:#<
 %''889S9SUYUbUbUnUnptpp  A ==%%1 44T]]5O5OQUQ`Q`aF(J)CDHN)&**\2*FGJ,VZZ-DEIO++(('+}}'@'@##mFXFXZ ==$$$ 44T]]5N5NPTP_P_`F(L")EFJO'

:r(BCHM+FJJw,CDIN' + 8 89O P6)"-":":6BR;S"T #4<<#5#5#78
==))??DD38LL0 9 ++FOO]EWEWX !002 002$446"224 	**,++---/ {#w~&2#5||9KLL _  %& *.););)= o)=A99(:(::dmm>T>T>j>jkl>m 1)= o ..}/A/A=Q".<<T=CUCUWdeD#D%Y".5948
I % 6((599 6CSVL++DNNKH((55! 	c 77>>("<"<T^^"LMMLL!KSXYHHYQ(89//L,,[99(CF83`)abb	c`os?   /Z 8A`
``-` A\`%B=_?(_??`c                d   [         R                  " U5      nUR                  (       a  US:X  a  UOSn[        SU SU S35      eU(       a  UR	                  US9nU[
        R                  :X  aB  UR                  [
        R                  :X  a  [        R                  " SSS	9  UR	                  US
9$ U$ )Nproject optionsbuilt-in optionsz"Do not set subproject options in [z] section, use [subproject:z
] instead.)
subprojectzRSetting build machine options in the native file does not need the "build." prefixToncer   )
r   from_stringrz  r
   evolver   rl   r   r   deprecation)rk  machine_file_stringsectionsection_subprojectr   ro  
suggestions          r9   mfilestr2keyEnvironment.mfilestr2key  s    ##$78>>$+/@$@FXJ #EgYNijtiuu  "A  B  B**(:*;Cm))){{m111  !u  }A  B::g:..
r;   c                n   UR                  S5      nU(       aQ  [        R                  " S5        UR                  5        H'  u  pVU R	                  USSU5      nX`R
                  U'   M)     [        5       n[        R                   H+  n	UR                  U	S-   5        UR                  U	S-   5        M-     UR                  R                  5       R                  5        HT  u  pVXX;   d  M  [        R                  " U S35        U R	                  USSU5      nX`R
                  U'   UR                  U	 MV     UR                  5        H  u  pSU
;   a  U
R                  S5      u  pOS	nU
S
:X  ar  UR                  5        H\  u  pVU R	                  XZX5      nU[        R                  L a$  UR                  ULa  [        R                  " SSS9  X`R
                  U'   M^     M  U
S:X  d  M  U[        R                  L d  M  UR                  5        H%  u  pVU R	                  XZX5      nX`R
                  U'   M'     M     g)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.N_args
_link_argszc in the [properties] section of the machine file is deprecated, use the [built-in options] section.r8  :ra   ry  zqSetting build machine options in cross files, please use a native file instead, this will be removed in meson 2.0Tr{  rx  )r@   r   r  r\  r  r	   setr   all_languagesaddr8  copyro   r   rX  r   )rk  rn  r8  r   r  strkrt  rs  deprecated_propertieslangr  r   r  ro  s                 r9   rW  &Environment._load_machine_file_options  s    

7#mn ;;=%%dGT7C"#Q ) -0E++D!%%dWn5!%%d\&9: , ",,11399;GD,  D6  *M  "N  O%%dL$H"#Q))$/ <  &||~OGg~.5mmC.@+"G%'",,%||~GD++D;MWC-"4"44G9S((  *]  dh  i()LL%  . --']=O=O2O  &||~GD++D;MWC()LL%  .  .r;   c                   [         R                   R                  R                  5        VVs/ s H  u  pX! S34PM     snn[        -   n[        R
                  " [        5      n[        R                  " U[        5       GHL  u  u  pVn[        XpR                  5       U5      nUc  M(  US:X  ay  U R                  U   R                  5       (       a   UR                  [        R                   5      n	O["        R                  " SU5      n	[        [$        R&                  " U	5      5      n
ONUS:X  a=  [        [$        R&                  " UR                  [        R                   5      5      5      n
O[)        U5      n
U
 Vs/ s H  o(       d  M  UPM     n
nU R*                  (       d  GM#  US:X  aD  [         R                   R,                   H#  n[/        U S3US9nXM   R1                  U
5        M%     GMm  US:X  aD  [         R                   R2                   H#  n[/        U S3US	9nXM   R1                  U
5        M%     GM  [.        R4                  " U5      R7                  US	9nU[         R                   R                  R9                  5       ;   a3  UR:                  R                  S
S5      S   nUR7                  U S35      nXM   R1                  U
5        GMO     [        R                  " [        [        5       HV  u  u  pn[.        R4                  " U5      R7                  US	9nX;   d  M2  XR<                  ;  d  MC  XM   U R<                  U'   XM	 MX     U R>                  RA                  U5        g s  snnf s  snf )Nr  r/   z:|;r-   r1   r  )r   r   r3   r}  r  r   r   )!r   CFLAGS_MAPPINGr\  NON_LANG_ENV_OPTIONSrO  defaultdictr[  	itertoolsproductr   rJ   is_cross_buildra  r   ro   r>   pathseprer   
OrderedSetr   rH  LANGUAGES_USING_LDFLAGSr   extendLANGUAGES_USING_CPPFLAGSr~  r  r   r   r	   rQ  update)rk  rs  rt  optsrQ  evarkeynamerC   p_env_p_envp_listrm  r  ro  r  s                  r9   rc  )Environment._set_default_options_from_env  s   *3*=*=*L*L*R*R*TU*T$!a3e*TU ! 	
 ;F:Q:QRV:W,5,=,=dM,R(OT[ .A.A.CTJE  11}}[1<<>>!&RZZ!8 "$&%!8!("5"5f"=>F 11!("5"5ekk"**6M"NOF'.F%+1Vq!V1 ((()+$-$7$7$O$OD"+D61Dk"ZC$M008 %P !J.$-$7$7$P$PD"+tfENK"PC$M008 %Q (33G<CCKCX9#6#6#E#E#L#L#NN#&88>>#q#9!#<D"%**vU^"<C ,,V4K -Sd *3):):;OQ^)_%LQ+''0777LC 3ll#:$,MS!M *` 	X&A V. 2s   M$7
M*M*c                F   [         R                  " [        R                  R	                  5       [        R
                  R	                  5       5      n[         R                  " U[        5       H  u  u  p#n[        X@R                  5       U5      nUc  M'  [        R                  R                  U5      (       a+  U R                  U   R                  R                  X%/5        Mv  U R                  U   R                  R                  U[        R                   " U5      5        M     g)zSet 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   rJ   r  r>   r   existsr7  
setdefaultr   r   )rk  r  r   r  rC   r  s         r9   rd  *Environment._set_default_binaries_from_env\  s     y@@FFH(99??AC *3):):4)O%LT+ .A.A.CTJE 77>>%((MM+.77BB4QMM+.77BB4I\I\]bIcd *Pr;   c                   SS/S4SS/S4SSS/S	4S
S/S4/n[         R                  " U[        5       H  u  u  p#pEU H  n[        XPR	                  5       U5      nUc  M"  U(       aF  U R
                  U   R
                  R                  X'R                  [        R                  5      5        O(U R
                  U   R
                  R                  X'5          M     M     g)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   rJ   r  r8  r  ro   r>   r  )rk  r  r   evarsro   rC   r  r  s           r9   re  ,Environment._set_default_properties_from_envm  s      "4!5u="4!5u=L+6=;-/	9
 2;1B1B41W- T%$[2E2E2GN$4??JJ4Q\Q\]_]g]gQhi4??JJ4W  2Xr;   c                    [         R                  " 5       nUc  / nOUR                  5       n[        R                  " XR
                  U5      U l        SU l        g )NT)r   get_meson_commandr  r   CoreDatarB  rH  )rk  r	   meson_commands      r9   rI  Environment.create_new_coredata  sM    
 !224 M)..0M ))'3C3C]S $r;   c                8    U R                   R                  U5      $ rt   )r   r  )rk  when_building_fors     r9   r  Environment.is_cross_build  s    }}++,=>>r;   c                `    [         R                  " U R                   U R                  5       5      $ rt   )r   saverG  rk  s    r9   dump_coredataEnvironment.dump_coredata  s     }}T]]D,>,>,@AAr;   c                    U R                   $ rt   )rC  r  s    r9   get_log_dirEnvironment.get_log_dir  s    ||r;   c                    U R                   $ rt   r   r  s    r9   get_coredataEnvironment.get_coredata  s    }}r;   c                    [         R                  " 5       nUc  [        S5      eUR                  5       nU (       a8  S[        R
                  R                  US   5      ;   a  UR                  SS5        U$ )NzNo command?pythonr   r   z-u)r   r  r   r  r>   r   r   insert)
unbufferedcmds     r9   get_build_commandEnvironment.get_build_command  s[    ((*;#M22hhj(bgg&6&6s1v&>>JJq$
r;   c                    [        U5      $ rt   )r   rk  fnames     r9   r   Environment.is_header      r;   c                    [        U5      $ rt   )r#   r  s     r9   r#   Environment.is_source  r  r;   c                    [        U5      $ rt   )r   r  s     r9   r   Environment.is_assembly  s    5!!r;   c                    [        U5      $ rt   )r"   r  s     r9   r"   Environment.is_separate_compile  s    "5))r;   c                    [        U5      $ rt   )r    r  s     r9   r    Environment.is_llvm_ir  s    %  r;   c                    [        U5      $ rt   )r!   r  s     r9   r!   Environment.is_object  r  r;   N)maxsizec                    [        U5      $ rt   )r   r  s     r9   r   Environment.is_library  s    %  r;   c                >    U R                   U   R                  U5      $ rt   )r7  lookup_entry)rk  rC   r   s      r9   rf  Environment.lookup_binary_entry  s    }}[)66t<<r;   c                    U R                   $ rt   )rB  r  s    r9   get_scratch_dirEnvironment.get_scratch_dir  s    r;   c                    U R                   $ rt   )r?  r  s    r9   get_source_dirEnvironment.get_source_dir  s    r;   c                    U R                   $ rt   )r@  r  s    r9   rG  Environment.get_build_dir  s    ~~r;   c                "    U R                  5       $ )z=Install dir for the import library (library used for linking)
get_libdirr  s    r9   get_import_lib_dirEnvironment.get_import_lib_dir        r;   c                "    U R                  5       $ )z9Install dir for shared modules that are loaded at runtimer  r  s    r9   get_shared_module_dir!Environment.get_shared_module_dir  r  r;   c                    U R                   R                  nUR                  5       (       d  UR                  5       (       a  U R	                  5       $ U R                  5       $ )z"Install dir for the shared library)ra  rY  r   	is_cygwin
get_bindirr  )rk  ms     r9   get_shared_lib_dirEnvironment.get_shared_lib_dir  s@    MM<<>>Q[[]]??$$  r;   c                (    U R                  5        S3$ )zInstall dir for JAR filesz/java)get_datadirr  s    r9   get_jar_dirEnvironment.get_jar_dir  s    ""$%U++r;   c                "    U R                  5       $ )z"Install dir for the static libraryr  r  s    r9   get_static_lib_dirEnvironment.get_static_lib_dir  r  r;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )Nprefixr:   r   r]  get_value_forr   r  s    r9   
get_prefixEnvironment.get_prefix  '    t}}--;;Ih<OPQQr;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )Nlibdirr  r  s    r9   r  Environment.get_libdir  r  r;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )N
libexecdirr  r  s    r9   get_libexecdirEnvironment.get_libexecdir  '    t}}--;;Il<STUUr;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )Nbindirr  r  s    r9   r  Environment.get_bindir  r  r;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )N
includedirr  r  s    r9   get_includedirEnvironment.get_includedir  r  r;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )Nmandirr  r  s    r9   
get_mandirEnvironment.get_mandir  r  r;   c                p    [        U R                  R                  R                  [	        S5      5      5      $ )Ndatadirr  r  s    r9   r  Environment.get_datadir  s'    t}}--;;Ii<PQRRr;   c                   U R                   R                  U   R                  5        H+  nUR                  S:X  a  Sn  OUR                  S:X  d  M)  Sn  O   / $ [	        UR                  5       S/-   5      u  pEnUR                  S:w  a  [        R                  " S5      eUR                  S5      U   R                  S	5      R                  S
5      nU Vs/ s H"  n[        R                  R                  U5      PM$     sn$ s  snf )Nri   r   r   rM   z-print-search-dirsr   z&Could not calculate system search dirs
zlibraries: =r  )r   r   r   rm   r   get_exelistrR   r   r
   ro   lstripr>   r   normpath)rk  rC   compindexrZ   r  r  ro   s           r9   get_compiler_system_lib_dirs(Environment.get_compiler_system_lib_dirs  s    MM++K8??ADww'!E! B It//15I4JJK	<<1))*RSS		$&--n=CCCH-23U  #U333s   )Dc                    U R                   R                  U   R                  5        HE  nUR                  S:X  a    UR	                  5       $ UR                  S:X  d  M6    UR	                  5       $    / $ )Nri   r   )r   r   r   rm   get_default_include_dirs)rk  rC   r+  s      r9    get_compiler_system_include_dirs,Environment.get_compiler_system_include_dirs  sn    MM++K8??ADww'! ,,.. E!
 ,,.. B Ir;   c                    U R                   U   R                  SS 5      nUb  [        U[        5      (       d   S5       eU$ U R	                  5       (       d  g[        U R                  U   5      (       + $ )Nneeds_exe_wrapperr5   F)r8  r@   r6   boolr  r0  ra  )rk  rC   rH   s      r9   need_exe_wrapperEnvironment.need_exe_wrapper  sj    ,001DdKeT**6J6*L""$$'k(BCCCr;   c                F    U R                  5       (       d  g U R                  $ rt   )r6  r>  r  s    r9   get_exe_wrapperEnvironment.get_exe_wrapper  s     $$&&r;   c                `    U R                   S L=(       a    U R                   R                  5       $ rt   )r>  r[   r  s    r9   has_exe_wrapperEnvironment.has_exe_wrapper   s'    t+H0@0@0F0F0HHr;   c                &   [         R                  " 5       nU R                  R                  R	                  5       (       + =(       a$    U R                  R
                  R	                  5       nU(       a  UR                  U5        U(       a  U(       a  UR                  S[        U5      SS9  OU R                  R
                  R	                  5       (       d)  U R                  R
                  R                  5       (       a  UR                  U5        O`U R                  R
                  R                  5       (       a  UR                  S[        U5      5        OUR                  S[        U5      5        U(       a  UR                  S[        U5      5        U$ )NWINEPATH;)	separatorDYLD_LIBRARY_PATHLD_LIBRARY_PATHPATH)r   EnvironmentVariablesra  rN  r   rY  r  prependr[  r  	is_darwin)rk  library_pathsextra_pathsenv	need_wines        r9   get_env_for_pathsEnvironment.get_env_for_paths#  s   ++-++6688\T]]=O=O=Z=Z=\	
   -J](;sK##..00DMM4F4F4P4P4R4R""=1##--///m1DE-tM/BCKK[ 12
r;   c                d   SU 3n[        U S3US9n[        U S3US9nSnU R                  R                  R                  U5      nUc  SnU R                  R                  U/ 5      nU R                  R                  R                  U5      n	U	c  U R                  R                  U/ 5      n	[        U[        [        45      (       d   S5       e[        U	[        [        45      (       d   S5       e[        R                  " UR                  US	-   USSS
9n
[        R                  " UR                  US-   U	SSS
9nU R                  R                  R                  XU
5        U R                  R                  R                  XU5        UR                  (       a  U(       a  UR                  U5        ggg)zOAdd global language arguments that are needed before compiler/linker detection.zExtra arguments passed to the r  r}  r  FNTr5   z	 compiler)r   
allow_dupsz linker)r   r   r]  get_pending_valuerQ  r@   r6   r7   r[  r	   UserStringArrayOptionr   add_compiler_optionINVOKES_LINKERextend_value)rk  r  r+  rC   descriptionargkeylargkeycomp_args_from_envvarcomp_optionslink_optionscargslargss               r9   add_lang_argsEnvironment.add_lang_args9  s    7tf=dV5>;?tfJ/E %}}--??G$(!==,,VR8L}}--??H==,,Wb9L,d44@j@4,d44@j@4--KK+%Td<
 --LL)#Td<
 	224G224%H#8 |, $9r;   )r7  r@  r+   rb  r   rh  ri  rQ  r>  rH  rD  rC  ra  rU  r	   r8  rB  r?  rj  )r?  r7   r@  T.Optional[str]rl  coredata.SharedCMDOptionsreturnNone)
r  r7   r  r_  r  r_  r   r   ra  r   )rn  z6T.Mapping[str, T.Mapping[str, ElementaryOptionValues]]r8  r   r   r   ra  rb  )ra  rb  )r	   r`  ra  rb  )r  r   ra  r5  ra  r7   )ra  coredata.CoreData)F)r  r5  ra  T.List[str])r  z'mesonlib.FileOrString'ra  r5  )r  zmesonlib.FileOrStringra  r5  )rC   r   r   r7   ra  T.Optional[T.List[str]])rC   r   ra  re  )rC   r   ra  r5  )ra  zT.Optional[ExternalProgram])ra  r5  )rH  
T.Set[str]rI  rg  ra  zmesonlib.EnvironmentVariables)r  r7   r+  zT.Type['Compiler']rC   r   ra  rb  )6__name__
__module____qualname____firstlineno__rA  rC  rD  ru  r  rW  rc  rd  re  rI  r   rX  r  r  r  r  staticmethodr  r   r#   r   r"   r    r!   r$   r   rf  r  r  rG  r  r  r   r  r  r  r  r  r  r  r!  r  r-  r1  r6  r9  r<  rL  r]  __static_attributes__r!  r;   r9   r2  r2  A  sW   !KGHS9j.*/9.*DQ.*VZ.*`B'He"(% AN@R@R ?B    "*!  t! != !!!,!RRVRVRS4&
/ =J<N<N D 
I,'-#0'-59'-r;   r2  )r8   objectra  r7   )rC   r   rD   r5  rE   r7   ra  r_  )gcovrz3.3F)rX   r7   rY   r7   rT   r5  ra  /T.Union[T.Tuple[None, None], T.Tuple[str, str]])lcovF)r^   r7   rT   r5  ra  rp  rt   )rc   r_  ra  r_  )r   rd  ra  r_  )rq  genhtml)r^   r7   ru   r7   ra  z"T.Tuple[str, T.Optional[str], str])r   rd  ra  zmT.Tuple[T.Optional[str], T.Optional[str], T.Optional[str], T.Optional[str], T.Optional[str], T.Optional[str]])z1.8.2F)rn   r7   rT   r5  ra  rf  )rn   r7   rT   r5  ra  z%T.Optional[T.Tuple[T.List[str], str]])rd   r7   ra  re  )ra  re  )r   CompilersDictra  r7   )r   rs  r   r7   ra  r5  )r  r7   ra  r_  rc  )ra  r_  )r   zT.Optional[CompilersDict]ra  r   )r.  r   ra  r5  )Z
__future__r   r  r>   r   r  r$  rV   typingr   rO  ra   r   r   r   r	   CmdLineFileParserr
   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_CHECKINGr&   compilers.mixins.visualstudior'   r(   r)   	wrap.wrapr*   r+   Dictr7   rs  r  build_filenamer:   rJ   r\   r_   rf   rr   rw   r{   r   r}   rb   r   r   r   r   r   r   r   r  r  __annotations__r  r"  r%  r(  r+  r0  r2  r!  r;   r9   <module>r     s  
 #  $ $ $      11   
   %        ??#G;#FF3=)M  
2::"$/-/
W8'R@ 'RFP)V 4=3<2:373:182627/40549385@18/4(*$ *"-(
%
1"&V"_- _-r;   