
    e                      U 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 ddlmZ ddlmZ ddlmZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZej6                  r2dd	lmZ dd
lmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z, i Z-de.d<    e       r+g de-d<   g de-d<   g de-d<   ddge-d<   ddge-d<   dd ge-d!<   ng ej^                         ja                         d"k(  rg d#e-d<   g d$e-d<   d%ge-d<   d&ge-d<   ng d'e-d<   g d(e-d<   g d)e-d<   g d*e-d<   g d+e-d<   d dge-d!<   g d,e-d-<   d.ge-d/<   d0ge-d1<   d2ge-d3<   d4ge-d5<   d6ge-d7<   d8d9ge-d8<   d:d;ge-d<<   d=ge-d=<   d>ge-d?<   d@ge-dA<   dBge-dC<   dDge-dE<   dFge-dG<   dHdIge-dH<   dedJZ1dfdKZ2dgdLZ3	 dh	 	 	 	 	 	 	 didMZ4djdNZ5ddOdkdPZ6dldQZ7dldRZ8dldSZ9dldTZ:dmdUZ;dmdVZ<dndWZ=dldXZ>dldYZ?dldZZ@dld[ZAdod\ZBdld]ZCdld^ZDdld_ZEdld`ZFdpdaZGdpdbZHdqdcZIdqddZJy)r    )annotations   )	MesonExceptionEnvironmentExceptionMachineChoice	join_argssearch_version
is_windows
Popen_safePopen_safe_loggedwindows_proof_rm)BinaryTable)mlog)guess_win_linkerguess_nix_linkerN   )Compiler)	CCompiler)CPPCompiler)FortranCompiler)RustCompiler)StaticLinkerDynamicLinker)Environment)ExternalProgramzT.Dict[str, T.List[str]]defaults)iclclccgccclangclang-clpgccc)r   r   c++g++clang++r"   cpp)ifortgfortranflang	pgfortrang95fortranr   r    objcr%   r&   objcppcscmcscse2k)r   r    lccr!   )r%   r&   zl++r'   r!   r'   )r   r    r!   nvcr#   iccicx)r%   r&   r'   znvc++zpgc++icpcicpx)r   r    r!   )r%   r&   r'   )r*   r+   	nvfortranr,   r)   ifxr-   )ldc2ldcgdcdmddjavacjavanvcccudarustcrustswiftcswiftvalacvalacythoncython3argarstatic_linkerstriplibvs_static_linkerllvm-libclang_cl_static_linkernvlinkcuda_static_linkerzgcc-argcc_static_linkerzllvm-arclang_static_linkernasmyasmc                    t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        d}||v r ||   | |      S d S )N)r$   r(   r/   rE   r0   rC   r3   rK   rA   rG   r.   rI   rL   rZ   masm)detect_c_compilerdetect_cpp_compilerdetect_objc_compilerdetect_cuda_compilerdetect_objcpp_compilerdetect_java_compilerdetect_cs_compilerdetect_vala_compilerdetect_d_compilerdetect_rust_compilerdetect_fortran_compilerdetect_swift_compilerdetect_cython_compilerdetect_nasm_compilerdetect_masm_compiler)envlangfor_machinelang_maps       =/usr/lib/python3/dist-packages/mesonbuild/compilers/detect.pycompiler_from_languagerr   ^   sX    "$$($ $$*&($$SH" 04x/?>8D>#{+ITI    c                   t        | ||      }||S |j                  |k(  sJ | j                  j                  |||        |s |j	                  | j                         |        || j                  j                  |j                     |<   |S N)rr   ro   coredataprocess_new_compilersanity_checkget_scratch_dir	compilers)rm   rn   ro   skip_sanity_checkcomps        rq   detect_compiler_forr}   r   s    !#t[9D|{***LL%%dD#6#--/559CLL4++,T2Krs   c                z   | j                  ||      }|t        j                  |      \  }}|g}nT| j                  j	                  |      st        |d      t        |   D cg c]  }|g }}t        j                         }| j                  j	                  |      rd}n| j                         }|||fS c c}w )z
    The list of compilers is detected in the exact same way for
    C, C++, ObjC, ObjC++, Fortran, CS so consolidate it here.
    Nz4 compiler binary not defined in cross or native file)	lookup_binary_entryr   parse_entrymachinesmatches_build_machiner   r   detect_compiler_cacheget_exe_wrapper)	rm   rn   ro   valuer|   ccacherz   xexe_wraps	            rq   _get_compilersr      s    
 ##K6E"..u5fF	||11+>&$1e'fgg"*4.1QaS1	1224
||))+604&&(fh&& 2s   %
B8c                ~    d| d| }| r)|dz  }| j                         D ]  \  }}|d| d| dz  } t        |      )NzUnknown z(s): z-
The following exception(s) were encountered:z

Running `z` gave "")itemsr   )
exceptionsbinariesbintypeerrmsgr$   es         rq   _handle_exceptionsr      sd     yhZ0FBB$$& 	4DAqA3hqc33F	4
v
&&rs   c           	     
   ddl m} ddlm} | j                  |j                  d      }||g}nEt
        d   D cg c]  }|g }}|j                  dk(  rt
        d   g|z   }n|j                         d	k(  rt
        d
   t
        d   g}n|j                  dk(  rt
        d   g|z   }n|j                  dk(  rt
        d   g|z   }n|j                  dk(  r/t               r"t
        d
   t
        d   |j                         g}nu|}nr|j                  dk(  r|j                  dk(  rdgg}nOt               r|j                  dk(  rdgg}n1t               r%|j                  dk(  rt
        d
   t
        d   g|z   }n|}i }|D ]  }t        j                  j                  |d         }	t        d |D              rd}
n	|	dv rd}
nd}
	 t        ||
gz   d      \  }}}d|v r|j%                  |t'        |dd             c S d |j)                         v sd |j)                         v r|j+                  |t'        |dd             c S d!|v r|j-                  |      c S |j.                  dk(  rd"|	v r|j1                  |      c S d#|v sd$|v r6t3        ||j4                        sJ |j7                  ||j8                        c S d%|v rFt3        ||j4                        sJ |j7                  ||j8                  |j;                         &      c S d'|v r:d(|v r6t3        ||j4                        sJ |j7                  ||j8                        c S |j=                  d)      rd*|	v r|j?                  |      c S |j=                  d+      rd,|	v r|jA                  |      c S d-|v r*d.|	v r|jC                  |      c S |jE                  |      c S |j=                  d/      r|jG                  |      c S |jI                         j=                  d0      s|jI                         j=                  d1      r*d2|v r|jK                  |      c S |jM                  |      c S |j.                  dk(  r|jO                  |j                  |      c S |j.                  dk(  r/|j=                  d3      r|jQ                  |j                  |      c S |j.                  dk(  r$|j=                  d4      r|jS                  |      c S |j.                  dk(  s||j=                  d5      s|jO                  |j                  |      c S  tU        ||d6       tW        d7      c c}w # t         $ r}||t#        ||
gz         <   Y d }~d }~ww xY w)8Nr   )rA   r   linkersrN   rP   rE   rW   msvcrS   rU   r    rX   r!   rY   rA   zintel-clr$   xilibpgirZ   r   c              3  ^   K   | ]%  }t         j                  j                  |      d v  ' yw)>   lib.exe	xilib.exellvm-lib.exerR   r   rT   Nospathbasename.0r   s     rq   	<genexpr>z'detect_static_linker.<locals>.<genexpr>   s&     {oprww"&jj{   +-/?>   	ar430.exe	armar.exe
ar2000.exear430armarar2000?	--versionzDetecting archiver viamsgzxilib: executing 'lib'machinez/OUT:z"ar-Error-Unknown switch: --versionr   zDMD32 D CompilerzDMD64 D CompilerzLDC - the LLVM D compiler)
rsp_syntaxGDCz based on D RenesasrlinkzGNU arzxc16-arzTexas Instruments Incorporatedr   zThe CompCert
Metrowerks	FreescaleARMusageUsagezar: bad option: --linker/Unreachable code (exception to make mypy happy)), rA   r   r   ro   r   languageget_argument_syntaxidr
   get_linker_exelistr   r   r   anyr   OSErrorr   IntelVisualStudioLinkergetattrupperVisualStudioLinkerPGIStaticLinker
returncodeArmarLinker
isinstance	DCompilerDLinkerarchrsp_file_syntax
startswith
CcrxLinker
Xc16LinkerC2000LinkerTILinkerCompCertLinkerrQ   MetrowerksStaticLinkerARM%MetrowerksStaticLinkerEmbeddedPowerPCArLinkerAppleArLinkerAIXArLinkerr   r   )rm   compilerrA   r   r   trialsldefault_linkerspopen_exceptionslinker_nameargpouterrr   s                  rq   detect_static_linkerr      s   !$$X%9%94@F(0(AB1A3BB&345GF))+v512H=U4VWF[[E!234FF[[G#456HF#%|"#56AY8Z\d\w\w\yz([[J&8+<+<+Ci[F\hkkU2fXF\hkkV312H=U4VWZiiF$F 6Bgg&&vay1{tz{{C``CC	+FcUN@XYKAsC $s*22678YX\;]^^ciik!W		%;--fgh	SW6XYY/36**622<<1K!7&&v..$(:c(Ah444??68==99&#-h444??68==XE]E]E_?``C<Nc1h444??68==99>>)$K)?%%f-->>(#	[(@%%f--+s2;&**622''//>>.)))&1199;!!,/399;3I3I+3V|88@@DDVLL<<1##H$8$8&AA<<1!8(()=)=vFF<<1!8&&v..<<10D!E##H$8$8&AAm6Bn ':
P
QQi CN  	:;Yv~67	s   
T?>U	U*U%%U*override_compilerc                  ddl m}m} ddlm} i }t	        | ||      \  }}	}
||g}| j                  |      }| j                  |   }|D ]  }t        |t              r|g}t        j                  j                  |d         }t        d |D              r/dt        j                  v rdbd	} |t        j                  j                  t        j                  d   d
d             |t        j                  j                  t        j                  d   d
d             |t        j                  j                  t        j                  d   dd             |t        j                  j                  t        j                  d   dd            g} |t        j                   d            }||v rt#        j$                  d|       xd}n,d|v rd}n%d|v rd}nd|v rd}nd|v rd}n|dv rd}n	|dv rd}nd}||gz   }	 t'        |d      \  }}}d|v r|}|j-                  dd      d   }t/        |      }d}d|v s|j1                  d      rd }d!|v rd"|v rd"}d#|v rd}|rt3        |      }|sd$|t+        |      <   -|d"k(  r)t5        |      }|d%k(  r|j6                  n|j8                  }n(t;        |      }|d%k(  r|j<                  n|j>                  }tA        | ||||      } ||	||||||
|||&
      c S d'|v r|d%k(  r|jB                  n|jD                  }| jF                  jI                  |jJ                  |||        tM        jN                  d()      5 }||jP                  dz   |jR                  gz   }tU        |      \  }} }ddd       |jW                  |||jP                  g t/               *      } ||	||||||
||+	      c S d,|v rtY        jZ                  d-|      }!|!J d.       d/j                  |!j]                         D "cg c]  }"|"|"	 c}"      }|d%k(  r|j^                  }n|d0k(  r|j`                  }tA        | |||      } ||	||||||
|1      c S d2|v rtY        jZ                  d3|      }!|!d4|t+        |      <   :|!jc                  d      }#t/        |#      }|#}|d%k(  r|jd                  n|jf                  }|ji                  ||*      }| jF                  jI                  |jJ                  |||         ||	||||||
||5	      c S d6|v rd}	 tU        ||gz         \  }}}t/        |      }tY        jZ                  d7|tX        jj                        }$|$r|$jc                  d      }%nd8}%|d%k(  r|jl                  n|jn                  }tq        | d9g|||      } |||||||%|
|1      c S d:|v sd;|v rd}ts        |      }d<|v r|d%k(  r|jt                  n|jv                  }n|d%k(  r|jx                  n|jz                  }d=|v s| j                  |   j}                         r	 tq        | ||||d>?      }|tA        | ||||      } ||	||||||
|||&
      c S d@|v r~t/        |      }dA|v rdBndC}%|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  |g |*      } |||||||%|
|1      c S dD|v r~t/        |      }dA|v rdBndC}%|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  |g |*      } |||||||%|
|1      c S dE|v sdE|v r||fD ]  }&t/        |&      }|dFk7  s n t        dG|      |&j-                  ddH      d   }'tY        jZ                  dI|'      }$|$r|$jc                  d      }%ndJ|' }(t        |(      |d%k(  r|j                  n|j                  }tq        | dKg|||      }dL|	vrg }	 ||	||||||%|
|'|5
      c S dM|v rw|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  |||jP                  g |*      } ||	||||||
|1      c S dN|v rw|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  |||jP                  g |*      } ||	||||||
|1      c S dO|v r?|d%k(  r|j                  n|j                  }tA        | ||||      }) ||	||||||
||)5	      c S dP|v r?|d%k(  r|j                  n|j                  }tA        | ||||      }) ||	||||||
||)5	      c S dQ|v sdR|v sdS|v rdQ|v r*|d%k(  r|j                  n|j                  }|j                  }*n)|d%k(  r|j                  n|j                  }|j                  }*| jF                  jI                  |jJ                  |||         |*|||*      } ||	||||||
||5	      c S dT|v rsdU|v sodV|v sk|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  ||*      } ||	||||||
||5	      c S dW|v rk|d%k(  r|j                  n|j                  }| jF                  jI                  |jJ                  |||        |j                  ||*      } ||	||||||
||5	      c S d#|v rZ|j                  }| jF                  jI                  |jJ                  |||        |j                  ||*      } ||	||||||
||5	      c S dX|v rZ|j                  }| jF                  jI                  |jJ                  |||        |j                  ||*      } ||	||||||
||5	      c S dY|v sdZ|v sdT|v r*|d%k(  r|j                  n|j                  }|j                  }*n)|d%k(  r|j                  n|j                  }|j                  }*tY        jZ                  d[|      }+|+J d.       d/j                  d\ |+j]                         D              },| jF                  jI                  |jJ                  |||        | j                  ||jJ                  d]z         }-|-dtU        |-dgz         \  }}.}tY        jZ                  d[|.      }/|/J d.       d/j                  d^ |/j]                         D              }0 |*|-||0*      }nt        d_|j                  d`       ||	||,||||
||5	      c S  t        ||       t        da|       # t(        $ r}||t+        |      <   Y d}~Xd}~ww xY w# 1 sw Y   
/xY wc c}"w # t(        $ r}||t+        ||gz         <   Y d}~d}~ww xY w# t~        $ r Y w xY w)czShared implementation for finding the C or C++ compiler to use.

    the override_compiler option is provided to allow compilers which use
    the compiler (GCC or Clang usually) as their shared linker, to find
    the linker they need.
    r   )r$   r(   r   r   Nr   c              3  ^   K   | ]%  }t         j                  j                  |      d v  ' yw)>   clang-cl.exer   cl.exer"   Nr   r   s     rq   r   z,_detect_c_or_cpp_compiler.<locals>.<genexpr>   s&     eWXrww"&RRer   WATCOMc                z    t         j                  j                  t         j                  j                  |             S ru   )r   r   normcaseabspath)r   s    rq   sanitizez+_detect_c_or_cpp_compiler.<locals>.sanitize+  s$    77++BGGOOA,>??rs   BINNTr   r   BINNT64z%Skipping unsupported cl.exe clone at:r   armccz--vsnccrx-vxc16r   ccomp-version>   	armcl.exe	cl430.exe
cl2000.exearmclcl430cl2000>   icl.exer   r   Detecting compiler viar   
Free Software Foundationzxt-r    r4   r5   zMicrochip Technologyno pre-processor definesr$   )definesfull_versionr   
Emscriptenz.csuffixversion)r   r  Arm C/C++/Fortran Compiler4version (\d+)\.(\d+)\.?(\d+)? \(build number (\d+)\)for mypy.r(   r   armclangz.*Component.*zversion string not foundr  r   zCL.EXE COMPATIBILITYz^Target: (.*?)-zunknown targetzlld-linkr!   ClangApplewindowsFinvoked_directlyzIntel(R) C++ Intel(R)IA-32x86x86_64z3Intel(R) oneAPI DPC++/C++ Compiler for applications	Microsoftunknown versionz3Failed to detect MSVC compiler version: stderr was
maxsplitz&.*(x86|x64|ARM|ARM64)([^_A-Za-z0-9]|$)zFFailed to detect MSVC compiler target architecture: 'cl /?' output is
linksccachePGI CompilersNVIDIA Compilers and Toolsz(ICC)zIntel(R) oneAPIzTMS320C2000 C/C++zMSP430 C/C++zTI ARM C/C++ Compilerr   r   r   z	RX FamilyCompCertzMetrowerks C/C++zFreescale C/C++z)Version (\d+)\.(\d+)\.?(\d+)? build (\d+)c              3  &   K   | ]	  }||  y wru    r   s     rq   r   z,_detect_c_or_cpp_compiler.<locals>.<genexpr>N  s     '\aam'\   _ldc              3  &   K   | ]	  }||  y wru   r#  r   s     rq   r   z,_detect_c_or_cpp_compiler.<locals>.<genexpr>X  s     )^PQP]!)^r$  zFailed to detect linker for z, compiler. Please update your cross file(s).zUnknown compiler )r   strreturnr'  )kr   r$   r(   r   r   is_cross_buildr   r   r'  r   r   r   r   environjoinshutilwhichr   debugr   r   r   splitr	   r   _get_gnu_compiler_defines_get_lcc_version_from_definesElbrusCCompilerElbrusCPPCompiler_get_gnu_version_from_definesGnuCCompilerGnuCPPCompilerr   EmscriptenCCompilerEmscriptenCPPCompilerrv   add_lang_argsr   tempfileNamedTemporaryFileLINKER_PREFIXnamer   WASMDynamicLinkerresearchgroupsArmLtdClangCCompilerArmLtdClangCPPCompilergroupArmclangCCompilerArmclangCPPCompilerArmClangDynamicLinker	MULTILINEClangClCCompilerClangClCPPCompilerr   _get_clang_compiler_definesAppleClangCCompilerAppleClangCPPCompilerClangCCompilerClangCPPCompilerr
   r   IntelClCCompilerIntelClCPPCompilerXilinkDynamicLinkerIntelLLVMClCCompilerIntelLLVMClCPPCompilerr   VisualStudioCCompilerVisualStudioCPPCompilerPGICCompilerPGICPPCompilerPGIDynamicLinkerNvidiaHPC_CCompilerNvidiaHPC_CPPCompilerNvidiaHPC_DynamicLinkerIntelCCompilerIntelCPPCompilerIntelLLVMCCompilerIntelLLVMCPPCompilerC2000CCompilerC2000CPPCompilerC2000DynamicLinkerTICCompilerTICPPCompilerTIDynamicLinkerArmCCompilerArmCPPCompilerArmDynamicLinkerCcrxCCompilerCcrxCPPCompilerCcrxDynamicLinkerXc16CCompilerXc16DynamicLinkerCompCertCCompilerCompCertDynamicLinkerMetrowerksCCompilerARMMetrowerksCPPCompilerARMMetrowerksLinkerARM"MetrowerksCCompilerEmbeddedPowerPC$MetrowerksCPPCompilerEmbeddedPowerPCMetrowerksLinkerEmbeddedPowerPCr   r   r   )1rm   rn   ro   r   r$   r(   r   r   rz   r   r   is_crossinfor   compiler_namer   
watcom_clsfound_clr   cmdr   r   r   r   r  r	  guess_gcc_or_lccr  clsr   f_oarm_ver_matchr   arm_ver_strmatchtargetlookatcl_signaturemr   lnkmwcc_ver_matchcompiler_versionldo_ldmwld_ver_matchlinker_versions1                                                    rq   _detect_c_or_cpp_compilerr  	  s1    !=?"0dK"HIvx$&'	!!+.H<<$D  EDh$ zH((!5e\dee 2::%@ 'rww||BJJx4H'SW'XY&rww||BJJx4H'S['\]&rww||BJJx4H)UY'Z[&rww||BJJx4H)U]'^_a
 $FLL$67z)JJFQC%C}$C}$C%CbbC00CC#	+C5MNKAsC
 ]"Cyyq)!, %,0%,u0E$C<ESL$!S(#/9G8R 8!455(7@+/3;a''C<Q<Q7@(,ann9K9K%c8S';OF';hl 
 3+/3;!''C<U<UCLL&&s||S+sK
 ,,D9 *Q#"3"3k"A166!JJ$S/1a* ..+s'8'8N1- / /F ';$lD D (3.II&]_bcM ,8j8,hh=+?+?+ASaQ]STGs{,,00%c8S';OF';$) )  IIos;M$8R 8!45'--a0K$[1G&L)-!%%#:Q:QC22;2PFLL&&s||S+sK';$|FD D "S( CB(SE)9:3 %S)GII/bllCEQ)(,!$$9O9OC%cJ<g{SF';$) ) c>W^F1(;G #~/3s{a++@Y@Y*.#+a&&3;O;OC3<<#<#G#G#I-c8S';inoF ~)#xg{S';$'VU U #c)$S)G%nU(F(,!$$9O9OCLL&&s||S+sK00b'0RF';$) ) ACG$S)G%nU(F,0CK!((S=W=WCLL&&s||S+sK00b'0RF';$) ) #!3
 * k(0//k
 +-abeah+ijj!<<q<9!<LIIGVEQ_`l_mn*1---1S[!))c>Y>YC%cF8S';OF&';$|FD D c!$(CK!..S5G5GCLL&&s||S+sK--hSEVEVXZdk-lF';hv/ / (3.+/3;!''C<U<UCLL&&s||S+sK44X{CL]L]_akr4sF';hv/ / c>&*ck!""s7K7KC hWkJA';$|A? ? #*.#+!&&3;S;SC hWkJA';$|A? ? #%3)>BY]`B`"c)*.#+a&&3;O;O00'+s{amm8I8I--LL&&s||S+sK;@F';$|FD D C<!4s8J$(CK!..S5G5GCLL&&s||S+sK--k7-KF';h\&J J #%)S[!//c6I6ICLL&&s||S+sK..{G.LF';$|FD D "S(//CLL&&s||S+sK..{G.LF';$|FD D %%CLL&&s||S+sK22;2PF';$|FD D $(9S(@|26#+a..3C_C_11>Bcka::sOwOw==YY'SUXYN!-9z9-"xx'\>3H3H3J'\\LL&&s||S+sK((cllU6JKB~'k](:;
4!#+WY]!^%1=:=1!$)^^5J5J5L)^!^RnE*-I#&&S  ,A  B  B"2K4|FD DG
EDN
 '3
!29+>
??q  	/0Ys^,	\* *  TF  B@A 8se+;!<=B> & sZ   7v.v) v6
v6
v;!w$	v&v!!v&)v3	;	w!ww!$	w10w1c                    t        | d|      S )Nr$   r  rm   ro   s     rq   r^   r^   e  s    $S#{;;rs   c                    t        | d|      S )Nr(   r  r  s     rq   r_   r_   h  s    $S%==rs   c                   ddl m} ddlm} i }| j	                  |      }t        | d|      \  }}}| j                  |   }	|D ]  }
d}	 t        |
|gz   d      \  }}}|j                         j                  d	d
      d   }t        | |      }|}| j                  j                  |j                  |||         ||
||j                   g |j#                               } |||
||||||	|	      c S  t%        ddj'                  |D cg c]  }dj'                  |       c}       d      # t        $ r}||t        |
|gz         <   Y d }~
d }~ww xY wc c}w )Nr   )CudaCompilerr   )
CudaLinkerrE   r   r   r   Vr  r  )host_compilerrx  r   z(Could not find suitable CUDA compiler: "z;  r   )rE   r  linkers.linkersr  r)  r   r   r   r   r   rQ   rsplitr_   rv   r9  r   r<  parse_versionr   r+  )rm   ro   r  r  r   rw  rz   r   r   rx  r   r   r   r   r   r   r	  cpp_compilerr~  r   r$   s                        rq   ra   ra   k  s}   ",!!+.H"0fk"JIvx<<$D E	+Hu,<BZ[KAsC& ))+$$S1$5b9*3<""3<<k3GHk<3M3Mr[e[s[s[uv68Wk8X]ipt  ~D  E  	E7E8 !I$))jsTtefUXU]U]^_U`TtJuIvvwx
yy1  	<=Yx3%'789	0 Uus   D+E+	E4EEc                   ddl m} ddlm} i }t        | d|      \  }}}| j	                  |      }| j
                  |   }	|D ]`  }
dD ]W  }	 t        |
|gz   d      \  }}}t        |      }|j                  d	d      d
   }d }d|v rd}d|v rd|v rd}|rt        |
      }|sd|t        |
      <   j|dk(  r;t        |      }|j                  }t        | |
|||      } ||
||||	||||	      c c S t        |      }|j                   }t        | |
|||      } ||
||||	||||	      c c S d|v r}|j"                  }t%        j&                  d|      }|J d       dj)                  |j+                         D cg c]  }||	 c}      }t        | |
|||      } ||
||||	||      c c S d|v r/|j,                  }t        | |
|||      } ||
||||	|||      c c S d|v r:t        |      }|j.                  }t        | |
|||      } ||
||||	|||      c c S d|v rot        |      }d|v rdnd}|j0                  }| j2                  j5                  |j6                  |||        |j9                  |g |      } ||
||||	|||      c c S d|v sd|v rot        |      }d|v rdnd}|j:                  }| j2                  j5                  |j6                  |||        |j9                  |g |      } ||
||||	|||      c c S d|v r/|j<                  }t        | |
|||      } ||
||||	|||      c c S d |v sd!|v r/|j>                  }t        | |
|||      } ||
||||	|||      c c S d"|v r|jA                  |
||||	||#      c c S d$|v rh|jB                  }| j2                  j5                  |j6                  |||        |jE                  |
||jF                  g |      } ||
||||	|||      c c S d%|v rh|jH                  }| j2                  j5                  |j6                  |||        |jE                  |
||jF                  g |      } ||
||||	|||      c c S d&|v sd'|v rf|jJ                  }d }d(|v s| j
                  |   jM                         r	 tO        | |
|||d)*      }|t        | |
|||      } ||
||||	|||      c c S d+|v r/|jR                  }t        | |
|||      } ||
||||	|||      c c S d,|v s|j                  d	d      d
   }|j                         d-   }|jT                  }| j2                  j5                  |j6                  |||        |jW                  |
||jF                  g |      } ||
||||	|||      c c S  c tY        ||       t[        d.      # t        $ r}||t        |
|gz         <   Y d }~d }~ww xY wc c}w # tP        $ r Y Cw xY w)/Nr   )r.   r   r   r.   )r   -Vr   r   r   r   zGNU Fortranr    r4   r5   r  r  r
  r  r  r  r  G95zSun Fortranz*Intel(R) Fortran Compiler for applicationsr  r  r  r  zIntel(R) Visual FortranzIntel(R) Fortranzifort (IFORT)zifx (IFORT)z	ifx (IFX)zPathScale EKOPath(tm))r  r  r   r+   r!   r  Fr  zOpen64 Compiler SuitezNAG Fortranr  r   ).r   r.   r   r   r)  r   r   r   r   r	   r/  r0  r1  ElbrusFortranCompilerr   r4  GnuFortranCompilerArmLtdFlangFortranCompilerr?  r@  r+  rA  G95FortranCompilerSunFortranCompilerIntelLLVMClFortranCompilerrv   r9  r   rR  IntelClFortranCompilerIntelFortranCompilerIntelLLVMFortranCompilerPathScaleFortranCompilerPGIFortranCompilerrY  r<  NvidiaHPC_FortranCompilerFlangFortranCompilerr
   r   r   Open64FortranCompilerNAGFortranCompilerNAGDynamicLinkerr   r   )rm   ro   r.   r   r   rz   r   r   rw  rx  r   r   r   r   r   r   r	  r  r}  r  r~  r   r  r   r  s                            rq   rh   rh     sZ   !=?"0i"MIvx!!+.H<<$D ]H& \	HC/C50@F^_3
 %S)G99T1-a0L04##( |#( 3H=<V$Yx%89#u,;GDG!77C-c8S';WF ';$ 'VU U <GDG!44C-c8S';WF ';$ 'VU U ,s288 "		*acf g$0<*<0((}/C/C/E#W!A#WX)#xg{Sg{HdV- - |00)#xg{Sg{Hd<H H #(-00)#xg{Sg{Hd<H H <sB(-")S.h88**3<<k3O 44["g4Vg{HdHV5 5 )C/3E3L(-")S.h44**3<<k3O 44["g4Vg{HdHV5 5 #%22)#xg{Sg{Hd<H H #{c'966)#xg{Sg{Hd<H H '#-77g{Hd< 8 9 9 #%00**3<<k3O 11(K252C2CRQX 2 Zg{HdH!-f> > ,s277**3<<k3O 11(K252C2CRQX 2 Zg{HdH!-f> > #~C22#s||K'@'K'K'M!13'%" >-c8S.5{DFg{Hd<H H '#-33)#*2C+Og{Hd<H H #"yyq1!4&,,.r200**3<<k3O 11k3+<+<b# 2 % g{Hd<H Hu\	H]H~ '3
P
QQy  @A 8se+;!<=J $Xr * s6   V=9W&W&#W+=	W#WW#+	W87W8c                    t        | d|      S )Nr/   _detect_objc_or_objcpp_compilerr  s     rq   r`   r`   :  s    *3DDrs   c                    t        | d|      S )Nr0   r  r  s     rq   rb   rb   =  s    *3+FFrs   c                   ddl m}m} i }t        | ||      \  }}}| j	                  |      }	| j
                  |   }
|D ]E  }dg}	 t        ||z   d      \  }}}t        |      }d|v rft        |      }|sd|t        |      <   Gt        |      }|dk(  r|j                  n|j                  }t        | ||||      } ||||||	|
|||		      c S d
|v sd }t        |      }|sd|t        |      <   d|v r|dk(  r|j                   n|j"                  }n|dk(  r|j$                  n|j&                  }d|v s| j
                  |   j)                         r	 t+        | ||||      }|st        | ||||      } ||||||	|
|||	      c S  t/        ||       t1        d      # t        $ r}||t        ||z         <   Y d }~d }~ww xY w# t,        $ r Y ow xY w)Nr   )r/   r0   r   r   r   r  r  r/   r  r!   r  r  )r   r  r   )r   r/   r0   r   r)  r   r   r   r   r	   r0  r4  GnuObjCCompilerGnuObjCPPCompilerr   rK  AppleClangObjCCompilerAppleClangObjCPPCompilerClangObjCCompilerClangObjCPPCompilerr
   r   r   r   r   )rm   rn   ro   r/   r0   r   rz   r   r   rw  rx  r   r   r   r   r   r   r	  r  r|   r   s                        rq   r  r  @  s*   =?"0dK"HIvx!!+.H<<$D  (Jm	+HsN@XYKAsC !%%,/9G8R 8!453G<G+/6>4''v?W?WD%c8T7KPF';$'&2 2 c>F1(;G8R 8!45#~6:fnt22&JiJi15t--VE_E_C3<<#<#G#G#I-c8T7KXF )#xwT';$J JM(JR '3
P
QQM  	:;Yx#~67	: & s*   FG	G'F>>G	GGc                $   ddl m} | j                  |d      }| j                  |   }|t        d   d   g}	 t        |dgz   d      \  }}}d	|v sd	|v rvt        d	|v r|n|      }|r|d
k(  r)d	|v r|n|j                         }	t        |	      dkD  r|	d   }|}
| j                  j                  |
j                  |
||         |
||||      S t        dt        |      z         # t        $ r$ t        dj                  t        |                  w xY w)Nr   )JavaCompilerrC   r   r   r   r   z#Could not execute Java compiler: {}rB   r  Unknown compiler: )rC   r  r   r   r   r   r   r   formatr   r	   r/  lenrv   r9  r   )rm   ro   r  exelistrx  r   r   r   r	  parts
comp_classs              rq   rc   rc   t  s.   "%%k6:G<<$DF#A&'e':,(>D\]3 #~C 3C@'%66#sNS::<E5zA~(!
"":#6#6
KQTU'7K>>
3i6HH
II  e"#H#O#OPYZaPb#cddes   C" "-Dc                   ddl m} t        | d|      \  }}}i }| j                  |   }|D ]z  }	 t	        |dgz   d      \  }	}
}t        |
      }d|
v r|j                  }nd|
v r|j                  }nG| j                  j                  |j                  |||         |||||      c S  t        ||       t        d	      # t
        $ r}||t        |dgz         <   Y d }~d }~ww xY w)
Nr   )r3   r3   r   r   r   Monoz	Visual C#r   )r   r3   r   r   r   r   r   r	   MonoCompilerVisualStudioCsCompilerrv   r9  r   r   r   )rm   ro   r3   rz   r   r   r   rx  r|   r   r   r   r   r	  r~  s                  rq   rd   rd     s    "0dK"HIvx<<$D 5	+DK=,@F^_KAsC
 !%S=//CC++C""3<<k3G4+t44!5$ '3
P
QQ!  	@AYt{m';<=	s   B??	C$CC$c           	        ddl m} t        | dt        j                        \  }}}| j                  |      }| j                  |   }i }|D ]u  }	 t        |dgz   d      \  }}	}
d}d|	v rt        |	      }nd|
v rt        |
      }|=|}| j                  j                  |j                  |||         |g |||||	      c S  t        ||       t        d
      # t        $ r}||t        |dgz         <   Y d}~d}~ww xY w)zSearch for a cython compiler.r   )CythonCompilerrL   r  r   r   NCythonrw  r   )rL   r  r   r   BUILDr)  r   r   r   r   r	   rv   r9  r   r   r   )rm   ro   r  rz   r  rw  rx  r   r|   r   r   r   r	  r  s                 rq   rj   rj     s   &$S(M4G4GHOIq!!!+.H<<$D/1 W	+DD6M?WXKAsC
 $(s?$S)G_$S)G'JLL&&z':':JUXYb$dXVV#W$ '3
P
QQ!  	9:Yttf}56	s   C	C>"C99C>c                   ddl m} | j                  t        j                  d      }| j                  |      }| j                  |   }|t        d   d   g}	 t        |dgz   d      dd \  }}t        |      }d
|v r6|}	| j                  j                  |	j                   |	||         |	|||||      S t        dt        |      z         # t        $ r$ t        d	j                  t        |                  w xY w)Nr   )ValaCompilerrK   r   r   r   r   r   z#Could not execute Vala compiler: {}Valar  )rK   r  r   r   r  r)  r   r   r   r   r   r  r   r	   rv   r9  r   )
rm   ro   r  r  rw  rx  r   r   r	  r  s
             rq   re   re     s
   "%%m&9&96BG!!+.H<<$DF#A&'e"7k]#:@XYZ[\]^3 S!G}!
"":#6#6
KQTU'7K4HH
3i6HH
II  e"#H#O#OPYZaPb#cddes   C
 
-C7c           
        ddl m} ddlm} i }t        | d|      \  }}}| j	                  |      }| j
                  |   }	t        | |      }
t        |
j                  |j                        }| j                  |d      }|D ]Y  }dg}	 t        ||z   d	      d   }t        |      }|j                  }d
|v r-ddg}	 t!        ||z         d   }t        |      }|j"                  }d|v sht%        d |D              rt'        j(                  d       |j+                         }|i }g }|rW|j-                  |j/                  |
j                  j0                  d   d             d|d<   |
j                  j2                  |d<   n|
j                  j0                  |
j                  j5                         z   }t6        j8                  j;                  |d         dv r|d= |j=                  d      }|j-                  |j/                  |d             |D ]  }|j-                  dd| g        |
j                  J d       |rJ t?        |
j                        ||f|
j                  j0                  |
j                  j@                  d|}n t?        |
j                        |||
jB                  f||
j                  j@                  d|}nd|d   v r_tE        | ||||d      }t        ||j                        sJ d|_#        |j-                  |j/                  |j0                  d   d             nxtI        | d||      }
|
j                  }|j0                  d   jK                  d      r|j0                  d   n|j0                  d   }|j-                  |j/                  |d             | jL                  jO                  |jP                  |||         ||||||	||       c S  tS        ||       tU        d!      # t        $ r}||t        ||z         <   Y d }~d }~ww xY w# t        $ r}||t        ||z         <   Y d }~d }~ww xY w)"Nr   )rG   r   r   rG   rust_ldr   r   r   clippyz--rustcrF   c              3  >   K   | ]  }|j                  d         yw)zlinker=N)r   )r   as     rq   r   z'detect_rust_compiler.<locals>.<genexpr>  s     =q1<<	*=s   zPlease do not put -C linker= in your compiler command, set rust_ld=command in your cross file or use the RUSTC_LD environment variable, otherwise meson will override your selection.r   r   Tdirectr   >   r   r  z-Cz	link-arg=r  )r  r	  )always_argsr	  r  F)use_linker_prefixr$   r   r   r  r   )+r   rG   r   r   r)  r   r^   r   r   VisualStudioLikeLinkerMixinr   r   r   r   r	   r   r   ClippyRustCompilerr   r   warningcopyextenduse_linker_argsr  r   get_always_argsr   r   r   poptyper	  r<  r   r  r  endswithrv   r9  r   r   r   )rm   ro   rG   r   r   rz   r  r   rw  rx  r   is_link_exeoverrider   r   r   r   r	  r~  
extra_argsr  r  r$   r   r   s                            rq   rg   rg     s7   !/1+CEIq(!!+.H<<$D	3	,BRYY(K(KLK&&{I>H dm	#HsN8PQRSTC
 !%$($5$5 s?
 k*C C03 %S)G))Cc> =H==45  }}H>@
+-OOC$7$7		8I8I!8Lb$QR+/Jx(,.II,=,=Jy) ii//"))2K2K2MMGww''
37LL#AJAAOOC$7$72$>? % A 1#(?@A yy,8j8,,T"))_[+ VryyO`O`57YY5F5FVJTVF -T"))_X{BDTDT ;9DbiiN_N_;/9;F 8A;&)#*2C+afh "&'*M*MNNN $ 3 3FNN14Er JK /sCX`a *0):)C)CH)MFNN1%SYSaSabcSd 3 3Ar :;LL&&s||S+sK';$ EdL '3
P
QQG  	:;Yx#~67	"  >? 8c>!:;s0   O4;P4	P=PP	Q%P<<Qc                p   ddl m}m} | j                  |   }dt	        | |      i}t        |d   |j                        }|si }ddlm}  ||      }|r|dk(  rd}i }	| j                  |      }
t        | d|      \  }}}|D ]  }t        j                  j                  |d	         j                  d
      rt        d|d	    d      	 t!        |dgz         dd \  }}t'        |      }|j)                  dd      d   }d|v r|j*                  }t-        j.                  d      \  }}t        j0                  |       	 |j3                         s|j5                         r:t        j                  j                  |      d d	 dz   }t7        | ||||dd|g      }n7t        j                  j                  |      d d	 dz   }t9        | |||||g      }t;        |       t;        |        |||||||||      c S d|v r.|j<                  }t9        | ||||      } ||||||||
||	      c S d|v sd|v r|j>                  }t-        j.                  d      \  }}t        j0                  |       |dk(  rdnd}	 |j3                         s|j5                         r:t        j                  j                  |      d d	 dz   }t7        | ||||d||g       }n8t        j                  j                  |      d d	 dz   }t9        | ||||||g      }t;        |       t;        |        ||||||||!      c S t        d"t%        |      z          tA        |	|       t        d#      # t"        $ r}||	t%        |dgz         <   Y d }~d }~ww xY w# t;        |       t;               w xY w# t;        |       t;               w xY w)$Nr   )r$   rA   r$   r   )detect_cpu_familyr  
x86_mscoffrA   r  )ldmdgdmdzMeson does not support z as it is only a DMD frontend for another compiler.Please provide a valid value for DC or unset it so that Meson can resolve the compiler by itself.r   r   r   zLLVM D compilerz.dobjTF)r  r  r  r  r  )r  r   version_outputr?   )exe_wrapperrw  r  r   zThe D Language FoundationzDigital Marsr  z-m64z-m32)r  r  r  r  r   )!r   r$   rA   r   r^   r   rU  environmentr  r)  r   r   r   r   r   r   r   r   r   r	   r/  LLVMDCompilerr:  mkstempcloser
   	is_cygwinr   r   r   GnuDCompilerDmdDCompilerr   )rm   ro   r$   rA   rx  
c_compileris_msvcr  r   r   rw  rz   r   r   r  r   r   r   r	  r  r~  r  r  objfiler   arch_args                             rq   rf   rf   K  s   <<$D (k:;JC!*A*ABG
 0Z(D45=!!+.H"0c;"GIvx UN
 77GBK(334DE&)'"+ 7t tu u	;- 781=FAs !%yyq)!,#//C
 ##D)DAqHHQK*??$(8 gg..q1#26>G-c.5.1<@DW\:;	>F !gg..q1#26<G-c.5sL+:;>F !# )+tT)&N N c\..C%c7C+NF+tT$x)&: : )C/>S3H..C
 ##D)DAqHHQK "&!1vvH*??$(8 gg..q1#26>G-c.5sL+?DRSU]Q^`F !gg..q1#26<G-c.5sL+:;XHF !# )+tT)&: : ##7)G:L#LMMkUNn '3
P
QQ[  	CDYw+'>?@	> !# )H !# )s2   M;BN1BN	M?"M::M?NN5c           	        ddl m} | j                  |d      }| j                  |      }| j                  |   }|t
        d   d   g}	 t        |dgz   d      \  }}}t        |      }	d	|v rKt        j                  d
      5 }
|}t        | |||	||
j                  g      }d d d         ||	|||      S t        dt        |      z         # t        $ r$ t        dj                  t        |                  w xY w# 1 sw Y   ^xY w)Nr   )SwiftCompilerrI   r   r   r   r   z$Could not execute Swift compiler: {}Swiftz.swiftr  r  r  r  )rI   r  r   r)  r   r   r   r   r   r  r   r	   r:  r;  r   r=  )rm   ro   r  r  rw  rx  r   r  r   r	  r  r~  r   s                rq   ri   ri     s.   $%%k7;G!!+.H<<$DG$Q'(f%g&6<TU	1c S!G#~((9 	;QC%c&-sG[23&&;F	;
 Wk8T&J 	J 3i6HH
II  f"#I#P#PQZ[bQc#deef
	; 	;s   	C C?-C<?Dc           
        ddl m}m}m}m} t        | d|      \  }}}| j                  |      }t        | |      }	|sddlm	}
  |
d|	i      }n| j                  |   }i }|D ]  }|dgk(  rwt               rmt        j                  |d         sUt        j                  j!                  t        j"                  d   d	      }t        j                  |d   |
      xs |d   |d<   	 t%        |dgz   d      d   }t)        |      }d	|v rE|}| j*                  j-                  |j.                  |||         |g |||||	j0                  |      c S d|v rE|}| j*                  j-                  |j.                  |||         |g |||||	j0                  |      c S d|v sd|v s=d|v rE|}| j*                  j-                  |j.                  |||         |g |||||	j0                  |      c S |}| j*                  j-                  |j.                  |||         |g |||||	j0                  |      c S  t3        ||       t5        d      # t&        $ r#}||dj!                  |dgz         <   Y d }~
d }~ww xY w)Nr   )NasmCompilerYasmCompilerMetrowerksAsmCompilerARM$MetrowerksAsmCompilerEmbeddedPowerPCrZ   r   detect_machine_infor$   r   ProgramFilesNASM)r   r   r   r   r  r  r[   r   r   r   r   )asmr  r   r  r  r   r)  r^   r  r  r   r
   r,  r-  r   r   r+  r*  r   r   r	   rv   r9  r   r   r   r   )rm   ro   r  r   r  r  rz   r  rw  r   r  rx  r   r|   default_pathoutputr   r	  r  comp_class_mwasmarmcomp_class_mwasmeppcs                        rq   rk   rk     sv   oo$S&+>OIq!!!+.H 
3	,B5"C9-||K(/1 pF8
V\\$q'5J77<<

>(BFKLll47>I$q'DG	&t{m';AYZ[\]F
 !(V%JLL&&z':':JUXYb$dBIIX`aav%JLL&&z':':JUXYb$dBIIX`aaV#{f'<&>#**+>+G+GI\^ikno*2tWk4QSQZQZemnn'K$**+?+H+HJ^`kmpq+Bg{DRTR[R[fnoo9p< '3
P
QQ1  	?@SXXdk]&:;<	s   #I	I0I++I0c           	        | j                  |      }t        | |      }|sddlm}  |d|i      }n| j                  |   }ddlm}m} |j                  dk(  rdg}|}	d}
n^|j                  d	k(  rd
g}|}	d}
nG|j                  dk(  rdg}|}	d}
n0|j                  dk(  rdg}|}	d}
nt        d|j                   d      i }	 t        ||
gz         d   }t        |      }| j                  j                  |	j                  |	||         |	g |||||j                  |      S # t         $ r"}||dj#                  ||
gz         <   Y d }~nd }~ww xY wt%        ||g       t        d      )Nr   r  r$   r   )MasmCompilerMasmARMCompilerr  mlr   r  ml64armarmasmz-haarch64armasm64z	Platform z not supported by MASMr  r  r   )r)  r^   r  r  r   r  r  r  
cpu_familyr   r   r	   rv   r9  r   r   r   r+  r   )rm   ro   rw  r   r  rx  r  r  r|   r  r   r   r	  r	  r   s                  rq   rl   rl     sy   !!+.H	3	,B5"C9-||K(2%v!
	H	$x!
	E	!z$
	I	%|$
"Yt.??U#VWW/15DC5L)!, ("":#6#6
KQTU"dG[$		T\]] 534$#,/05'$0
P
QQs    AD 	E	'EE	c                   | g dz   }t        j                  dt        |              t        |dt        j
                        \  }}}|j                  dk7  rt        d| d| d      i }|j                  d	      D ]O  }|s|j                  d
d      ^}}|dk7  r t        |      dk(  rd||d   <   t        |      dk(  sE|d   ||d   <   Q |S )z@
    Detect GNU compiler platform type (Apple, MinGW, Unix)
    z-Ez-dM-Running command: r   writestdinr   z5Unable to detect GNU compiler type:
Compiler stdout:

-----
Compiler stderr:

-----
r   r  r   #definer   
r   r.  r   r   
subprocessPIPEr   r   r/  r  	r   argsr   r	  errorr  linerA   rests	            rq   r0  r0  0  s     ((DJJ"9T?"345!$b
HAvu||q" $88>x @88=wi$I J 	J !#GT" 	'::c1%D	>t9>!GDGt9>#AwGDG	' Nrs   c                   | g dz   }t        j                  dt        |              t        |dt        j
                        \  }}}|j                  dk7  rt        d| d| d      i }|j                  d	      D ]O  }|s|j                  d
d      ^}}|dk7  r t        |      dk(  rd||d   <   t        |      dk(  sE|d   ||d   <   Q |S )z5
    Get the list of Clang pre-processor defines
    r  r  r   r  r   z<Unable to get clang pre-processor defines:
Compiler stdout:
r  r  r   r  r   r  r   r   r#  s	            rq   rK  rK  M  s     ((DJJ"9T?"345!$b
HAvu||q" $88>x @88=wi$I J 	J !#GT" 	'::c1%D	>t9>!GDGt9>#AwGDG	' Nrs   c                    d}| j                  dd      }| j                  dd      }| j                  dd      }|j                  |||f      S )Nr  __GNUC__0__GNUC_MINOR____GNUC_PATCHLEVEL__getr+  )r  dotmajorminorpatchs        rq   r4  r4  e  sO    
CKK
C(EKK(#.EKK-s3E88UE5)**rs   c                    d}| j                  dd      }|d d }|dd  }| j                  dd      }|j                  |||f      S )Nr  __LCC__100r   __LCC_MINOR__r+  r.  )r  r0  generation_and_major
generationr1  r2  s         rq   r1  r1  l  sV    
C";;y%8%bq)J $EKK-E88Z.//rs   )rm   'Environment'rn   r'  ro   r   r(  T.Optional[Compiler])
rm   r:  rn   r'  ro   r   r{   boolr(  r;  )rm   r:  rn   r'  ro   r   r(  zHT.Tuple[T.List[T.List[str]], T.List[str], T.Optional['ExternalProgram']])r   )r   z'T.Mapping[str, T.Union[Exception, str]]r   zT.List[T.List[str]]r   r'  r(  z
T.NoReturn)rm   r:  r   r   r(  r   )
rm   r:  rn   r'  ro   r   r   zT.Optional[T.List[str]]r(  r   )rm   r:  ro   r   r(  r   )rm   r:  ro   r   r(  
'Compiler')rm   r:  rn   r'  ro   r   r(  r=  )rm   r:  ro   r   r(  r   )r   zT.List[str]r(  T.Dict[str, str])r  r>  r(  r'  )K
__future__r   mesonlibr   r   r   r   r	   r
   r   r   r   	envconfigr   r   r   r   r   r   r!  platformr?  r,  r:  r   typingTTYPE_CHECKINGrz   r   r$   r   r(   r   r.   r   rG   r   r  r   r   r  r   programsr   r   __annotations__r   lowerrr   r}   r   r   r   r  r^   r_   ra   rh   r`   rb   r  rc   rd   rj   re   rg   rf   ri   rk   rl   r0  rK  r4  r1  r#  rs   rq   <module>rI     s   #   $  8   	   	 ??# ("=)* &(
" ' < LHSMHHUOLHYe}HVHXU^HTNx!U*5:#9'[KU16`HYU^HTN-9 8 9 J 9 	* !5M I  %w	 &0\	! ""*	 !)
	 #,+	 F# J(	'4 "	';	'%	' 	' '1	'[RD JN Z@x
<>#zJhRTEG2RhJ.R4R:J(sRjmR^J4-R^(RZ:0+0rs   