+
    UBi!                    D  a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t^ RIHtHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHtHtHtHtHtHt ^R	IHt ^R
IHt ]P<                  '       dM   ^RIHt ^RI H!t!H"t" ^RIH#t# ^RI$H%t% ^RI&H't' ^RI(H)t) ^RI*H+t+ ^RIH,t, ^RI-H.t. ]P^                  ! RRR7      t0]P^                  ! R4      t1 0 Rmt20 Rmt30 Rmt4/ RRbRRbRRbRRbRRbRRbRRbR RbR!RbR"RbR#RbR$RbR%RbR&RbR'RbR(Rbt5R)]6R*&   ]5Po                  4       t8R0t9]:! ]5R,          4      ]9,          t;]:! ]5R,          4      ]9,          t<0 Rmt=R,0t>]:! ]	P~                  ! . ]5P                  4       O]=N]>N]9N5!  4      tA]A]2,
          tBRtCR]C,           tD]E! ]	P~                  ! R- ]5P                  4        4       !  4      tG0 RmtH0 RmtI]P                  ! R.4      tKRR/RR0RR1RR2RR3RR4RR5R!R6R R7R%R8R"R9/tLR:]6R;&   R< R= ltMR> R? ltNR@ RA ltO]! RRB7      RC RD l4       tPRE RF ltQRG RH ltRRI RJ ltSRK RL ltTRM RN ltU]! RRB7      RO RP l4       tVRQ RR ltW]! RRB7      RS RT l4       tXRU RV ltYRW RX ltZ ! RY RZ]P                  4      t\. ROt]. ROt^R[. R\. R]. R^R_.R`Ra.RbRc.R+Rd./t_Re]6Rf&   Rg. RhRi./t`Rj]6Rk&   Rl Rm ltaRn Ro ltbRp Rq ltcRr Rs ltdRt Ru lteRv Rw ltf ! Rx Ry]4      tg] ! Rz R{]4      4       th] ! R| R}]4      4       ti ! R~ R]]P                  R7      tkR# )    )annotationsN)	dataclassfield)	lru_cache)mlog)mesonlib)options)HoldableObjectEnvironmentExceptionMesonExceptionPopen_safe_loggedLibTypeTemporaryDirectoryWinProof)	OptionKeyCompilerArgs)coredata)BuildTarget	DFeatures)MutableKeyedOptionDictType)MachineInfo)Environment)RSPFileSyntax)DynamicLinker)MachineChoice)
DependencyCompilerTypeCompiler)bound_Thccppcudafortrandobjcobjcpprustvalacsswiftjavacythonnasmmasm	linearasmz!T.Mapping[str, T.Tuple[str, ...]]lang_suffixessllc              #  V   "   T F  w  rV Uu. uF  q3V3NK  	  upx  K  	  R # u upi 5iN ).0langvsuffixs   &   C/usr/lib/python3.14/site-packages/mesonbuild/compilers/compilers.py	<genexpr>r=   Y   s+      (K4I!$!d^!$4I$s   )$)z(.*\.so(\.[0-9]+)?(\.[0-9]+)?(\.[0-9]+)?$CFLAGSCXXFLAGSCUFLAGS	OBJCFLAGSOBJCXXFLAGSFFLAGSDFLAGS	VALAFLAGS	RUSTFLAGSCYTHONFLAGSCSFLAGSzT.Mapping[str, str]CFLAGS_MAPPINGc                    V ^8  d   QhRRRR/# )   r9   strreturnintr7   )formats   "r<   __annotate__rP   s   s     	$ 	$S 	$S 	$    c                H    V \         9  d   ^# \         P                  V 4      ) # )a  
Sorting function to sort the list of languages according to
reversed(compilers.clink_langs) and append the unknown langs in the end.
The purpose is to prefer C over C++ for files that can be compiled by
both such as assembly, C, etc. Also applies to ObjC, ObjC++, etc.
)clink_langsindex)r9   s   &r<   
sort_clinkrU   s   s#     ;d###rQ   c                    V ^8  d   QhRRRR/# rK   fname'mesonlib.FileOrString'rM   boolr7   )rO   s   "r<   rP   rP   ~   s     % %, % %rQ   c                    \        V \        P                  4      '       d   V P                  p V P	                  R 4      R,          pV\
        9   # .)
isinstancer   FilerX   splitheader_suffixesrX   r;   s   & r<   	is_headerrd   ~   s:    %''[[b!F_$$rQ   c                    V ^8  d   QhRRRR/# )rK   r;   rL   rM   rZ   r7   )rO   s   "r<   rP   rP      s     % %S %T %rQ   c                    V \         9   # r6   )source_suffixes)r;   s   &r<   is_source_suffixrh      s    _$$rQ   maxsizec                    V ^8  d   QhRRRR/# rK   rX   rL   rM   rZ   r7   )rO   s   "r<   rP   rP      s     $ $C $D $rQ   c                d    V P                  R 4      R,          P                  4       p\        V4      # r\   )ra   lowerrh   rc   s   & r<   cached_is_source_by_namero      s)    [[b!'')FF##rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP           + +, + +rQ   c                p    \        V \        P                  4      '       d   V P                  p \	        V 4      # r6   )r_   r   r`   rX   ro   rX   s   &r<   	is_sourcert      '    %''#E**rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP      s     ( (. (4 (rQ   c                    \        V \        P                  4      '       d   V P                  p V P	                  R 4      R,          pV\
        9   # r\   )r_   r   r`   rX   ra   assembler_suffixesrc   s   & r<   is_assemblyry      s;    %''[[b!F'''rQ   c                    V ^8  d   QhRRRR/# rK   rX   zmesonlib.FileOrStringrM   rZ   r7   )rO   s   "r<   rP   rP      s     + +( +T +rQ   c                    \        V \        P                  4      '       d   V P                  p V P	                  R 4      R,          pV\
        R,          9   # )r]   r-   r^   )r_   r   r`   rX   ra   r2   rc   s   & r<   is_javar}      s?    %''[[b!F]6***rQ   c                    V ^8  d   QhRRRR/# r{   r7   )rO   s   "r<   rP   rP      s     % %4 % %rQ   c                .    V P                  R 4      '       * # )z.rs)endswithrs   s   &r<   is_separate_compiler      s    ~~e$$$rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP      s     & &- &$ &rQ   c                    \        V \        P                  4      '       d   V P                  p V P	                  R 4      R,          pV\
        9   # r\   )r_   r   r`   rX   ra   llvm_ir_suffixesrc   s   & r<   
is_llvm_irr      s;    %''[[b!F%%%rQ   c                    V ^8  d   QhRRRR/# rl   r7   )rO   s   "r<   rP   rP      s     " "C "D "rQ   c                D    V P                  R 4      R,          pV\        9   # r\   )ra   obj_suffixesrc   s   & r<   cached_is_object_by_namer      s     [[b!F\!!rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP      rq   rQ   c                p    \        V \        P                  4      '       d   V P                  p \	        V 4      # r6   )r_   r   r`   rX   r   rs   s   &r<   	is_objectr      ru   rQ   c                    V ^8  d   QhRRRR/# rl   r7   )rO   s   "r<   rP   rP      s     " "S "T "rQ   c                ~    \         P                  V 4      '       d   R # V P                  R4      R,          pV\        9   # )Tr]   r^   )soregexmatchra   lib_suffixesrc   s   & r<   cached_is_library_by_namer      s2    }}U[[b!F\!!rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP      s     , ,- ,$ ,rQ   c                p    \        V \        P                  4      '       d   V P                  p \	        V 4      # r6   )r_   r   r`   rX   r   rs   s   &r<   
is_libraryr      s'    %''$U++rQ   c                    V ^8  d   QhRRRR/# rW   r7   )rO   s   "r<   rP   rP      s     " "2 "t "rQ   c                    \        V \        P                  4      '       d   V P                  p V P	                  R 4      R,          pV\
        9   # r\   )r_   r   r`   rX   ra   all_suffixesrc   s   & r<   is_known_suffixr      s:    %''[[b!F\!!rQ   c                  "    ] tR t^tRtRtRtRtR# )CompileCheckMode
preprocesscompilelinkr7   N)__name__
__module____qualname____firstlineno__
PREPROCESSCOMPILELINK__static_attributes__r7   rQ   r<   r   r      s    JGDrQ   r   plain0g1z-O12z-O23z-O3z-OsT.Dict[str, T.List[str]]clike_optimization_argsFTz-gzT.Dict[bool, T.List[str]]clike_debug_argsc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rK   boptionszT.Set[OptionKey]target'BuildTarget'env'Environment'optionT.Union[str, OptionKey]rM   rZ   r7   )rO   s   "r<   rP   rP      s8      - (% 3 8<rQ   c                    \        V\        4      '       d   \        V4      p W09  d   R # VP                  P	                  W4      p\        V\
        4      '       g   Q R4       hV#   \         d     R # i ; i)Fzmust return bool)r_   rL   r   r   get_option_for_targetrZ   KeyError)r   r   r   r   rets   &&&& r<   option_enabledr      sm     &#6"!ll00@#t$$8&88$
 s   A% 9A% %A43A4c          
     ,    V ^8  d   QhRRRRRRRRR	R/# )
rK   r   r   r   r   optr   fallbackz'_T'rM   r7   )rO   s   "r<   rP   rP      s2     	 	] 	M 	PY 	ei 	nr 	rQ   c                     V P                   P                  W4      p\	        T\        T4      4      '       g"   Q R\        T4      : R\        T4      : 24       hT#   \        \        3 d    Tu # i ; i)z2Get the value of an option, or the fallback value.zShould have z	 but was )r   r   r   AttributeErrorr_   type)r   r   r   r   r:   s   &&&& r<   get_option_value_for_targetr      ss    LL..v; ah((_Lh8J)TXYZT[S^*__(H n% s   A A10A1c               $    V ^8  d   QhRRRRRR/# )rK   r   r   r   r   rM   rZ   r7   )rO   s   "r<   rP   rP      s&     	_ 	_ 	_] 	_t 	_rQ   c                    VP                   P                  V R4      R8H  ;'       gG    VP                   P                  V R4      R8H  ;'       d     VP                   P                  V R4      R9   # )zShould debug assertions be disabled

:param target: a target to check for
:param env: the environment
:return: whether to disable assertions or not
b_ndebugtrue
if-release	buildtype>   r   release)r   r   )r   r   s   &&r<   are_asserts_disabledr      sn     LL..vzBfL ^ ^\\//
C|S ] ]\\//DH\\_rQ   c               $    V ^8  d   QhRRRRRR/# )rK   
subprojectrL   r   r   rM   rZ   r7   )rO   s   "r<   rP   rP     s'     i iC im iPT irQ   c                J   \        R V 4      pVP                  P                  P                  V4      R8H  ;'       gi    VP                  P                  P                  V4      R8H  ;'       d9    VP                  P                  P                  VP	                  RR7      4      R9   # )r   r   r   r   )name>   r   r   )r   r   optstoreget_value_forevolve)r   r   keys   && r<   #are_asserts_disabled_for_subprojectr     s    
J

+CLL!!//4> h h\\""005E g g\\""001MNRffirQ   c               (    V ^8  d   QhRRRRRRRR/# )	rK   r   r   compiler
'Compiler'r   r   rM   T.List[str]r7   )rO   s   "r<   rP   rP     s/     A A- A: AM A^i ArQ   c                   . pR p VP                   P                  V R4      '       dR   \        W \        R4      ^ 4      p\        W \        R4      R4      pVP	                  VP                  V VVR7      4       Rp TP                   P                  T R4      p\        T\        4      '       g   Q hY1P                  T4      ,          p TP                   P                  T R4      p\        T\        4      '       g   Q hTR	.8X  d   . pTP                  Y4      p	T	'       dO   TP                  T	4      ^ ,          '       g    \        R
TP                  4        RT	 24      hTP	                  T	4        TP                   P                  T R4      p
T
R8X  d!   TP	                  TP!                  4       4       M&T
R8X  d    TP	                  TP#                  4       4        TP                   P                  T R4      '       d   Y1P%                  4       ,          p Y1P'                  \)        Y4      4      ,          p\+        TP,                  YR4      pTP	                  TP/                  Y4      4        TP                   P                  T R4      p\        T\        4      '       g   Q hTP                   P                  T R4      p\        T\        4      '       g   Q h Y1P1                  Y4      ,          pT#   \        \        3 d     ELi ; i  \         d     ELJi ; i  \         d     ELi ; i  \        \        3 d     ELdi ; i  \        \        3 d     ELCi ; i  \         d     EL4i ; i  \         d     T# i ; i  \         d     T# i ; i)Fb_ltob_lto_threads
b_lto_modedefault)r   threadsmodeT
b_colorout
b_sanitizenonez	Compiler & does not support sanitizer arguments b_pgogenerateuse
b_coverage	b_bitcodeb_vscrtr   )r   r   r   r   extendget_lto_compile_argsr   r   r_   rL   get_colorout_argslistsanitizer_compile_argshas_multi_argumentsr   name_stringget_profile_generate_argsget_profile_use_argsget_coverage_argsget_assert_argsr   r   base_optionsget_embed_bitcode_argsget_crt_compile_args)r   r   r   argsltonum_threadsltomodeclroutsanitizesanitize_argspgo_valbitcodecrt_valr   s   &&&           r<   get_base_compile_argsr    sN   D
C
<<--fg>>5c9_C]_`aK1#y?VXabGKK55# 6   C33FLI&#&&&&**622<<55flK(D))))xH 77I //>qAA$y1E1E1G0HHno|n}%~KK&,,44VWEj KK::<=KK5578<<--flCC..00D(()=f)JKK X22FMGKK//=>
,,44VYG'3''''LL66v{K	)S))))	11'EED
 Kk n%      n% 
 n%     	 K		 Ks   !K) AK) :AL A4L ;0L ,AL% /&L% !L= 8L=  M 'A(M9 M' )K>=K>LLL"!L"%L:9L:=MMM$#M$'M62M9 5M66M9 9NNc               (    V ^8  d   QhRRRRRRRR/# )	rK   r   r   linkerr   r   r   rM   r   r7   )rO   s   "r<   rP   rP   U  s1     Z Z} Z)Z)Z.9ZrQ   c           	     
   . pVP                  4       p VP                  P                  V R 4      '       EdF   VP                  P                  V R4      '       d    VP                  VP	                  4       4       Rp\        R4      p\        W VR4      '       dU   \        W \        R4      R4      pVR8X  d8   \        P                  P                  VRR4      p\        P                  ! V4       \        W \        R	4      ^ 4      p\        W \        R
4      R4      pVP                  VP                  V VVVR7      4       \        P                  P                  RR4      p	VP                  VP                  V	4      4        TP                  P                  T R4      p
\        T
\         4      '       g   Q hT
R.8X  d   . p
TP#                  Y
4      pT'       dO   TP%                  T4      ^ ,          '       g    \'        RTP)                  4        RT 24      hTP                  T4        TP                  P                  T R4      pTR8X  d!   TP                  TP+                  4       4       M&TR8X  d    TP                  TP-                  4       4        TP                  P                  T R4      '       d   Y1P/                  4       ,          p\1        TP2                  YR4      p\1        TP2                  YR4      pT'       d2   T P4                  R8X  g!   TP                  TP7                  4       4       M'T'       d    TP                  TP9                  4       4       T'       g   ^RIHp TP                  TP?                  4       4       \        Y4      '       g>   \1        TP2                  YR4      '       d!   TP                  TPA                  4       4       MTP                  TPC                  4       4        TP                  P                  T R4      p\        T\D        4      '       g   Q hTP                  P                  T R4      p\        T\D        4      '       g   Q h TPG                  TT4      p\        T\         4      '       g   Q hTT,          pT#   \        \        3 d     EL$i ; i  \         d     ELi ; i  \        \        3 d     EL>i ; i  \        \        3 d     ELi ; i  \         d     T# i ; i  \         d     T# i ; i)r   werrorNb_thinlto_cacheFb_thinlto_cache_dir zmeson-privatezthinlto-cacher   r   r   )r   r   r   thinlto_cache_dirz@PRIVATE_DIR@zlto.or   r   zLinker r   r   r   r   r   
b_asneededr   zshared module)SharedModuleb_lundefr   r   )$get_build_dirr   r   r   get_werror_argsr   r   ospathjoinmkdirget_lto_link_argsget_lto_obj_cache_pathr   r   r_   r   sanitizer_link_argshas_multi_link_argumentsr   r   r   r   get_coverage_link_argsr   r   typenamebitcode_argsget_asneeded_argsbuildr  headerpad_argsno_undefined_link_argsget_allow_undefined_link_argsrL   get_crt_link_args)r   r  r   r   	build_dirr
  cachedir_keyr   lto_modeobj_cache_path	sanitizersanitizer_argsr   	as_neededr   r  r  r   crtargss   &&&                r<   get_base_link_argsr)  U  sI    D!!#I<<--fg>>||11&(CCF2245 $$%67L*3eLL$?YWlMmoq$r!$*(*YQ`(a%HH./5c9_C]_`aK23	,@WYbcHKK00#"3	 1 5 6
  WW\\/7CNKK55nEFLL66v|L	)T**** I33FF 22>B1EE$wv/A/A/C.DDjkyjz%{||KK',,44VWEj KK88:;KK3356<<--flCC1133D v22FNIV00&{KG v/9F'')*	F,,./ (F))+,600v22FLLKK5578KK<<>?,,44VYG'3''''LL66v{K	)S))))	..w	BGgt,,,,GOD
 KA n%    n% 
 n% B  	 K		 Ks   "R !R D#R =A4R$ 20R$ #AR6 &&R6 !S /S .A(S8 3S& R! R!$R32R36S
SS#"S#&S51S8 4S55S8 8TTc                      ] tR tRtRtR# )CrossNoRunExceptioni  r7   N)r   r   r   r   r   r7   rQ   r<   r+  r+    s    rQ   r+  c                  Z    ] tR tRt$ R]R&   RtR]R&   RtR]R	&   RtR]R
&   RtR]R&   Rt	R# )	RunResulti  rZ   compiledi  rN   
returncode	UNDEFINEDrL   stdoutstderrFcachedr7   N)
r   r   r   r   __annotations__r/  r1  r2  r3  r   r7   rQ   r<   r-  r-    s/    NJFCFCFDrQ   r-  c                      ] tR tRt$ RtR]R&   R]R&   R]R&   R]R	&   R]R
&   ]! RRR7      tR]R&   ]! RRR7      tR]R&   Rt	R# )CompileResulti  z.The result of Compiler.compiles (and friends).rL   r1  r2  r   commandrN   r/  
input_nameNF)r   initT.Optional[str]output_namerZ   r3  r7   )
r   r   r   r   __doc__r4  r   r;  r3  r   r7   rQ   r<   r6  r6    sC     9KKOO#(E#BKBU3FD3rQ   r6  c                  >   ] tR tRt$ . tR]R&   . tR]R&   RtR]R&   RtR	]R
&   R	]R&   R]R&   Rt	ERUR R llt
]R R l4       tR R ltR R lt]! RR7      R R l4       tR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' lt]R( R) l4       tR* R+ ltERVR- R. lltR/ R0 ltR1 R2 ltR3RR4R/R5 R6 lltR4R/R7 R8 lltR9 R: lt ERWR; R< llt!R= R> lt"]#PH                  R? R@ l4       t%RA RB lt&RC RD lt'RE RF lt(RG RH lt)RI RJ lt*RK RL lt+RM RN lt,RO RP lt-RQ RR lt.RS RT lt/RU RV lt0ERXRW RX llt1ERXRY RZ llt2ERXR[ R\ llt3R3RR4R/R] R^ llt4R3RR4RR_R,/R` Ra llt5R3RR4R/Rb Rc llt6ERYRd Re llt7R3RR4R/Rf Rg llt8R3RR4R/Rh Ri llt9R3RR4R/Rj Rk llt:R3RR4R/Rl Rm llt;]Rn Ro l4       t<Rp Rq lt=]Rr Rs l4       t>]?P                  RR,3Rt Ru lltAERVRv Rw lltBRx Ry ltCRz R{ ltDR| R} ltER~ R ltFR R ltGERXR R lltH]IP                  ERXR]KP                  RR,RR/R R lll4       tM]IP                  R3RR]KP                  RR/R R ll4       tNR R ltOERVR R lltPR R ltQR R ltRR R ltSR R ltTR R ltUR R ltVR R ltWR R ltXR R ltYERXR R lltZR R lt[R R lt\R R lt]R R lt^R R lt_R R lt`R R ltaR R ltbR R ltcR R ltdR R lteR R ltfR R ltg]hR R l4       tiR R ltjR R ltkR R ltlR R ltmRRR^ RR/R R lltnRRR^ RRRR/R R lltoR R ltpR R ltqR R ltrR R ltsR R lttR R ltuR R ltvR R ltwR R ltxR R ltyR R ltz]R R l4       t{R R lt|R R lt}R R lt~R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltERXR ER  lltER ER ltERWER ER lltER ER ltER ER ltER	 ER
 ltER ER ltER ER ltER ER ltER ER lt]#PH                  ER ER l4       tERWER ER lltER ER ltER ER ltER ER ltER ER ltER ER  ltER! ER" ltER# ER$ ltER% ER& ltER' ER( ltER) ER* lt]#PH                  ER+ ER, l4       tER- ER. ltER/ ER0 ltER1 ER2 ltER3 ER4 ltER5 ER6 lt]KEPH                  3ER7 ER8 llt]IP                  RR]KEPH                  R,R,3ER9 ER: ll4       tR3RR4RR]KEPH                  R_R,/ER; ER< lltER=RR3RR4RR_R,/ER> ER? lltER@ ERA ltERB ERC ltERD ERE ltERF ERG ltERH ERI ltERJ ERK ltERL ERM ltERN ERO ltERXERP ERQ lltERR ERS ltERTtR# (Z  r   i  r   ignore_libsinternal_libsNzT.Union[None, str, T.List[str]]LINKER_PREFIXTrL   languageidr   	warn_argsCOMPILERc               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )rK   ccacher   exelistversionrL   for_machiner   environmentr   r  zT.Optional['DynamicLinker']full_versionr:  r7   )rO   s   "r<   rP   Compiler.__annotate__  sC     * *{ *[ *3 *+*:E*4*  /*rQ   c                	\   W,           V n         W n        \        V P                  ,          V n        \        V P                  4      V n        V P                  ^ ,          V n        W0n        Wpn	        W@n
        \        4       V n        W`n        WPn        VP                  V4      V n        . V n        R# )r   N)rG  exelist_no_ccacher2   rA  file_suffixessetcan_compile_suffixesdefault_suffixrH  rK  rI  r   r  rJ  is_cross_buildis_crossmodes)selfrF  rG  rH  rI  rJ  r  rK  s   &&&&&&&&r<   __init__Compiler.__init__  s     '!(*4==9$'(:(:$;!"003(&.1e&#22;?')
rQ   c                   V ^8  d   QhRR/# )rK   rM   r   r7   )rO   s   "r<   rP   rL    s     ; ;k ;rQ   c                	P    V P                   P                  V P                  ,          # r6   )rJ  machinesrI  rV  s   &r<   infoCompiler.info  s!    
 (()9)9::rQ   c                   V ^8  d   QhRR/# )rK   rM   Noner7   )rO   s   "r<   rP   rL    s     N N4 NrQ   c                    R# )z?Initializer compiler attributes that require options to be set.Nr7   r\  s   &r<   init_from_optionsCompiler.init_from_options      rQ   c                   V ^8  d   QhRR/# rK   rM   rL   r7   )rO   s   "r<   rP   rL    s     7 7# 7rQ   c                	    R pVP                  V P                  P                  V P                  RP	                  V P
                  4      4      # )z<{0}: v{1} `{2}`> )rO   	__class__r   rH  r  rG  )rV  repr_strs   & r<   __repr__Compiler.__repr__  s:    &t~~66"xx57 	7rQ   ri   c                    V ^8  d   QhRRRR/# )rK   srcrY   rM   rZ   r7   )rO   s   "r<   rP   rL    s     H H6 H4 HrQ   c                	&   \        V\        P                  4      '       d   VP                  p\        P
                  P                  V4      ^,          pVR8w  d   VP                  4       p\        V4      ;'       d    VR,          V P                  9   # )   z.Crp  NN)
r_   r   r`   rX   r  r  splitextrn   rZ   rQ  )rV  rn  r;   s   && r<   can_compileCompiler.can_compile  sh    c8==))))C!!#&q)T>\\^FF|GGr
d.G.G GGrQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s       rQ   c                	    V P                   # r6   )rB  r\  s   &r<   get_idCompiler.get_id  s    wwrQ   c                   V ^8  d   QhRR/# )rK   rM   zT.List[Compiler]r7   )rO   s   "r<   rP   rL  	  s      + rQ   c                	    V P                   # r6   )rU  r\  s   &r<   	get_modesCompiler.get_modes	  s    zzrQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s       rQ   c                	(    V P                   ^ ,          # )r   rG  r\  s   &r<   get_exeCompiler.get_exe  s    ||ArQ   c                   V ^8  d   QhRR/# rK   rM   r   r7   )rO   s   "r<   rP   rL    s        k  rQ   c                	(    V P                   R ,          # )rq  r  r\  s   &r<   get_exe_argsCompiler.get_exe_args  s    ||BrQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s      s rQ   c                	j     V P                   P                  #   \         d    T P                  u # i ; ir6   )r  rB  r   r\  s   &r<   get_linker_idCompiler.get_linker_id  s-    	;;>>! 	77N	s    22c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     , ,C ,rQ   c                	    V P                   V P                  .pV P                  '       d   VR V P                  ,          .,          pRRP                  V4      ,          # )z"%s"z(%s)rh  )rB  rH  rK  r  )rV  detailss   & r<   get_version_stringCompiler.get_version_string  sL    77DLL)$"3"3455G'*++rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL  !  s      c rQ   c                	    V P                   # r6   )rA  r\  s   &r<   get_languageCompiler.get_language!  s    }}rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL  %  s     ) )S )rQ   c                	6    V P                   P                  4       # r6   )rA  
capitalize)clss   &r<   get_display_languageCompiler.get_display_language$  s    ||&&((rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL  (  s     # #C #rQ   c                	    V P                   # r6   )rR  r\  s   &r<   get_default_suffixCompiler.get_default_suffix(  s    """rQ   Fc               0    V ^8  d   QhRRRRRRRRRR	R
R/# )rK   dnamerL   prefix
extra_argsAT.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]dependencieszT.List['Dependency']disable_cacherZ   rM   zT.Tuple[str, bool]r7   )rO   s   "r<   rP   rL  +  sG     V V VS V`V!5V #'V 4FVrQ   c                	B    \        R V P                  4       ,          4      h)z%s does not support get_define r   rw  )rV  r  r  r  r  r  s   &&&&&&r<   
get_defineCompiler.get_define+  s     ##Dt{{}#TUUrQ   c               8    V ^8  d   QhRRRRRRRRRRRR	R
RRR/# )rK   
expressionrL   lowT.Optional[int]highguessr  r  GT.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]r   T.Optional[T.List['Dependency']]rM   rN   r7   )rO   s   "r<   rP   rL  1  sZ     W Wc W W W*W47W gW #CW HKWrQ   c               	B    \        R V P                  4       ,          4      h)z %s does not support compute_int r  )rV  r  r  r  r  r  r  r  s   &&&&&&$$r<   compute_intCompiler.compute_int1  s     ##E#UVVrQ   c               $    V ^8  d   QhRRRRRR/# )rK   parameter_listr   r!  rL   rM   r7   )rO   s   "r<   rP   rL  7  s(     r r[ r:=rBMrrQ   c                	B    \        R V P                  4       ,          4      h)z;%s does not support compute_parameters_with_absolute_paths r  )rV  r  r!  s   &&&r<   &compute_parameters_with_absolute_paths/Compiler.compute_parameters_with_absolute_paths7  s    "#`cgcncncp#pqqrQ   r  r  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )rK   r  rL   membernamesr   r  r  r  r  r  rM   T.Tuple[bool, bool]r7   )rO   s   "r<   rP   rL  ;  sA     Y YC Yk Y3 Y gY"BYNaYrQ   c               	B    \        R V P                  4       ,          4      h)z"%s does not support has_member(s) r  )rV  r  r  r  r  r  s   &&&&$$r<   has_membersCompiler.has_members;  s     ##G$++-#WXXrQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   r  rL   r  r  r  r  r  rM   r  r7   )rO   s   "r<   rP   rL  @  s9     T T Tc T^T?TK^TrQ   c               	B    \        R V P                  4       ,          4      h)z%s does not support has_type r  rV  r  r  r  r  s   &&&&$r<   has_typeCompiler.has_type@  s     ##BT[[]#RSSrQ   c                   V ^8  d   QhRR/# rK   rM   rZ   r7   )rO   s   "r<   rP   rL  E  s     j j jrQ   c                	B    \        R V P                  4       ,          4      h)z3%s does not support symbols_have_underscore_prefix r  r\  s   &r<   symbols_have_underscore_prefix'Compiler.symbols_have_underscore_prefixE  s    "#X[_[f[f[h#hiirQ   c                    V ^8  d   QhRRRR/# )rK   rF  rZ   rM   r   r7   )rO   s   "r<   rP   rL  H  s     P P$ P+ PrQ   c                	z    V'       d   V P                   P                  4       # V P                  P                  4       # r6   )rG  copyrN  )rV  rF  s   &&r<   get_exelistCompiler.get_exelistH  s+    &,t||  "O$2H2H2M2M2OOrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  K  s     P PK PrQ   c                	z    V P                   '       d   V P                   P                  4       # V P                  4       # r6   )r  r  r\  s   &r<   get_linker_exelistCompiler.get_linker_exelistK  s+    ,0KKKt{{&&(OT=M=M=OOrQ   c                    V ^8  d   QhRRRR/# rK   
outputnamerL   rM   r   r7   )rO   s   "r<   rP   rL  O  s      # + rQ   c                	    R # r6   r7   rV  r  s   &&r<   get_output_argsCompiler.get_output_argsN      rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL  R  s     7 7 7 7rQ   c                	8    V P                   P                  V4      # r6   )r  r  r  s   &&r<   get_linker_output_argsCompiler.get_linker_output_argsR  s    {{**:66rQ   c                    V ^8  d   QhRRRR/# )rK   dirnamerL   rM   r   r7   )rO   s   "r<   rP   rL  U  s     4 4c 4k 4rQ   c                	8    V P                   P                  V4      # r6   )r  get_search_args)rV  r  s   &&r<   get_linker_search_argsCompiler.get_linker_search_argsU  s    {{**733rQ   c                    V ^8  d   QhRRRR/# )rK   definerL   rM   r:  r7   )rO   s   "r<   rP   rL  X  s     X X X XrQ   c                	:    \        R V P                  ,          4      h)z'%s does not support get_builtin_define.r   rB  rV  r  s   &&r<   get_builtin_defineCompiler.get_builtin_defineX      "#Ltww#VWWrQ   c                    V ^8  d   QhRRRR/# )rK   r  rL   rM   rZ   r7   )rO   s   "r<   rP   rL  [  s     X X X XrQ   c                	:    \        R V P                  ,          4      h)z'%s does not support has_builtin_define.r  r  s   &&r<   has_builtin_defineCompiler.has_builtin_define[  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  ^         rQ   c                	    . # r6   r7   r\  s   &r<   get_always_argsCompiler.get_always_args^      	rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  a  s     - -t -rQ   c                6    V P                   P                  4       # )zK
Determines whether the linker can accept arguments using the @rsp syntax.
)r  get_accepts_rspr\  s   &r<   can_linker_accept_rspCompiler.can_linker_accept_rspa  s     {{**,,rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  g  s     - - -rQ   c                	6    V P                   P                  4       # r6   )r  r  r\  s   &r<   get_linker_always_argsCompiler.get_linker_always_argsg  s    {{**,,rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL  j  s     , ,s ,rQ   c                	6    V P                   P                  4       # r6   )r  get_lib_prefixr\  s   &r<   get_linker_lib_prefixCompiler.get_linker_lib_prefixj      {{))++rQ   c                    V ^8  d   QhRRRR/# )rK   
implibnamerL   rM   r   r7   )rO   s   "r<   rP   rL  m  s      # + rQ   c                    . # )zg
Used only on Windows for libraries that need an import library.
This currently means C, C++, Fortran.
r7   )rV  r  s   &&r<   gen_import_library_args Compiler.gen_import_library_argsm  s	    
 	rQ   c                    V ^8  d   QhRRRR/# )rK   r   r   rM   rL   r7   )rO   s   "r<   rP   rL  t  s     - -I -# -rQ   c                	8    V P                    R VP                   2# )_)rA  r   )rV  r   s   &&r<   make_option_nameCompiler.make_option_namet  s    --#((,,rQ   c                   V ^8  d   QhRR/# )rK   rM   z'MutableKeyedOptionDictType'r7   )rO   s   "r<   rP   rL  w  s      9 rQ   c                	    / # r6   r7   r\  s   &r<   get_optionsCompiler.get_optionsw  r  rQ   c               $    V ^8  d   QhRRRRRR/# rK   r   r   r   r:  rM   r   r7   )rO   s   "r<   rP   rL  z  s"      m  do rQ   c                	    . # r6   r7   rV  r   r   s   &&&r<   get_option_compile_args Compiler.get_option_compile_argsz  r  rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r   r   r   r:  rM   r   r7   )rO   s   "r<   rP   rL  }  s"      + ? ^i rQ   c                	    . # r6   r7   r  s   &&&r<   get_option_std_argsCompiler.get_option_std_args}  r  rQ   c               $    V ^8  d   QhRRRRRR/# r  r7   )rO   s   "r<   rP   rL    s'     D D= Do Dal DrQ   c                	8    V P                   P                  W4      # r6   )r  get_option_link_argsr  s   &&&r<   r  Compiler.get_option_link_args  s    {{//CCrQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   hnamerL   r  r  r  r  r  rM   r  r7   )rO   s   "r<   rP   rL    s9     	p 	p# 	ps 	p!h	p#C	pOb	prQ   c               B    \        RV P                  4       ,          4      h)zCheck that header is usable.

Returns a two item tuple of bools. The first bool is whether the
check succeeded, the second is whether the result was cached (True)
or run fresh (False).
+Language %s does not support header checks.r   r  )rV  r"  r  r  r  s   &&&$$r<   check_headerCompiler.check_header  s     ##PSWSlSlSn#noorQ   r  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )rK   r"  rL   r  r  r  r  r  r  rZ   rM   r  r7   )rO   s   "r<   rP   rL    sG     p p pS pfp!Ap #'p 4GprQ   c               B    \        RV P                  4       ,          4      h)at  Check that header is exists.

This check will return true if the file exists, even if it contains:

```c
# error "You thought you could use this, LOLZ!"
```

Use check_header if your header only works in some cases.

Returns a two item tuple of bools. The first bool is whether the
check succeeded, the second is whether the result was cached (True)
or run fresh (False).
r$  r%  )rV  r"  r  r  r  r  s   &&&$$$r<   
has_headerCompiler.has_header  s    $ ##PSWSlSlSn#noorQ   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )rK   r"  rL   symbolr  r  r  r  r  rM   r  r7   )rO   s   "r<   rP   rL    sA     w ws wC w w&mw(HwTgwrQ   c               	B    \        R V P                  4       ,          4      h)z2Language %s does not support header symbol checks.r%  )rV  r"  r-  r  r  r  s   &&&&$$r<   has_header_symbolCompiler.has_header_symbol  s     ##WZ^ZsZsZu#uvvrQ   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rK   coderY   r  GT.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]], None]r  r  run_envzT.Optional[T.Dict[str, str]]run_cwdr:  rM   r-  r7   )rO   s   "r<   rP   rL    sB     6 6/ 6_6:6 26 %	6 1:	6rQ   c           
     	2   V P                   P                  V P                  4      pV'       d,   V P                   P                  4       '       g   \	        R 4      hV P                  WV\        P                  RR7      ;_uu_ 4       pVP                  ^ 8w  dG   \        P                  ! RVP                   RVP                   R24       \        R4      uuRRR4       # V'       d8   V P                   P                  P                  4       VP                  .,           pMVP                  .p \         P"                  ! WVR7      w  rp RRR4       \        P                  ! R4       \        P                  ! X
4       \        P                  ! R4       \        P                  ! X4       \        RX	P                  Y4      #   \$         d=   p\        P                  ! R	T R
T R24       \        R4      u Rp?uuRRR4       # Rp?ii ; i  + '       g   i     L; i)z8Can not run test applications in this cross environment.T)r   want_outputzCould not compile test file z: 
FN)r   cwdzCould not run: z	 (error: z)
zProgram stdout:
zProgram stderr:
)rJ  need_exe_wrapperrI  has_exe_wrapperr+  _build_wrapperr   r   r/  r   debugr8  r-  exe_wrapperget_commandr;  r   
Popen_safe	Exception)rV  r2  r  r  r4  r5  r:  pcmdlistpesosees   &&&&&&       r<   runCompiler.run  s   
  ++<<T=M=MND$4$4$D$D$F$F%&`aa  <FVF[F[im nnrs||q 

9!,,r!,,WYZ[ ' on  **66BBDV==/(%007S
 o 	

&'

2

&'

2r}}b55  (

_WIYqcEF '' on( onsD   AHH$AH)F<<H'G>.H/H>HHH	c               (    V ^8  d   QhRRRRRRRR/# )	rK   r2  rL   r  r3  r  r  rM   r-  r7   )rO   s   "r<   rP   rL    s+      s f!AMVrQ   c               	@   V P                   P                  P                  pV P                  W#\	        R 4      4      pV\        V4      3pWd9   d   WF,          pRVn        \        P                  ! R4       \        P                  ! RV4       \        P                  ! RV4       \        P                  ! RVP                  4       \        P                  ! RVP                  4       \        P                  ! RVP                  4       V# V P                  WVR7      pWtV&   V# )	r   TzUsing cached run result:Code:
zArgs:
zCached run returncode:
zCached run stdout:
zCached run stderr:
)r  r  )rJ  r   run_check_cachebuild_wrapper_argsr   tupler3  r   r=  r/  r1  r2  rH  )rV  r2  r  r  rM  r   r   rB  s   &&$$    r<   
cached_runCompiler.cached_run  s     **33CC&&zAQRXAYZU4[!!$AAHJJ12JJy$'JJy*-JJ11<<@JJ-qxx8JJ-qxx8  <PA#$C rQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   r  rL   r  r  r  r  r  rM   T.Tuple[int, bool]r7   )rO   s   "r<   rP   rL    s9     p ps pC pbp=pI[prQ   c               	B    \        R V P                  4       ,          4      h)z+Language %s does not support sizeof checks.r%  r  s   &&&$$r<   sizeofCompiler.sizeof  s     ##PSWSlSlSn#noorQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   r  rL   r  r  T.Optional[T.List[str]]r  r  rM   rS  r7   )rO   s   "r<   rP   rL    s9     s s# ss s5s @sL^srQ   c               	B    \        R V P                  4       ,          4      h)z.Language %s does not support alignment checks.r%  r  s   &&&$$r<   	alignmentCompiler.alignment  s     ##SVZVoVoVq#qrrrQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   funcnamerL   r  r  rX  r  r  rM   r  r7   )rO   s   "r<   rP   rL    s9     	r 	rS 	r# 	r!8	r#C	rOb	rrQ   c               B    \        RV P                  4       ,          4      h)zSee if a function exists.

Returns a two item tuple of bools. The first bool is whether the
check succeeded, the second is whether the result was cached (True)
or run fresh (False).
z-Language %s does not support function checks.r%  )rV  r]  r  r  r  s   &&&$$r<   has_functionCompiler.has_function  s     ##RUYUnUnUp#pqqrQ   c               $    V ^8  d   QhRRRRRR/# )rK   r   r   r]  r   rM   r7   )rO   s   "r<   rP   rL    s!       ; ; rQ   c                "    VP                  4       # z7Always returns a copy that can be independently mutatedr  )r  r   r]  s   &&&r<   _unix_args_to_nativeCompiler._unix_args_to_native       yy{rQ   c                    V ^8  d   QhRRRR/# rK   r   r   rM   r7   )rO   s   "r<   rP   rL    s     : : : :rQ   c                	8    V P                  WP                  4      # r6   )re  r]  rV  r   s   &&r<   unix_args_to_nativeCompiler.unix_args_to_native  s    ((yy99rQ   c                    V ^8  d   QhRRRR/# ri  r7   )rO   s   "r<   rP   rL    s      { { rQ   c                "    VP                  4       # rc  rd  )r  r   s   &&r<   native_args_to_unixCompiler.native_args_to_unix  rg  rQ   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )rK   libnamerL   
extra_dirsr   libtyper   lib_prefix_warningrZ   ignore_system_dirsrM   rX  r7   )rO   s   "r<   rP   rL    sA     p pC p[ p7 p)-pJNp[rprQ   c                	<    \        R V P                  4        R24      h)	Language z" does not support library finding.r%  )rV  rs  rt  ru  rv  rw  s   &&&&&&r<   find_libraryCompiler.find_library  s!    "Yt/H/H/J.KKm#noorQ   c               $    V ^8  d   QhRRRRRR/# )rK   ru  r   strictrZ   rM   zT.Optional[T.Tuple[str, ...]]r7   )rO   s   "r<   rP   rL    s"     . .' .4 .Li .rQ   c                	R    \        R P                  V P                  4       4      4      h)z0Language {} does not support get_library_naming.r   rO   r  )rV  ru  r}  s   &&&r<   get_library_namingCompiler.get_library_naming  s)    ">EE))+-. 	.rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s      + rQ   c                	    . # r6   r7   r\  s   &r<   get_program_dirsCompiler.get_program_dirs  r  rQ   c                    V ^8  d   QhRRRR/# rK   r   r   rM   r  r7   )rO   s   "r<   rP   rL    s     	. 	. 	.8K 	.rQ   c                R    \        RP                  V P                  4       4      4      h)zChecks if the compiler has all of the arguments.

:returns:
    A tuple of (bool, bool). The first value is whether the check
    succeeded, and the second is whether it was retrieved from a cache
z1Language {} does not support has_multi_arguments.r  rk  s   &&r<   r   Compiler.has_multi_arguments  s+     #?FF))+-. 	.rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL    s     5 5[ 5=P 5rQ   c                8    V P                   P                  V4      # )zChecks if the linker has all of the arguments.

:returns:
    A tuple of (bool, bool). The first value is whether the check
    succeeded, and the second is whether it was retrieved from a cache
)r  r   rk  s   &&r<   r  !Compiler.has_multi_link_arguments  s     {{..t44rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r  rL   r   r   rM   r7   )rO   s   "r<   rP   rL    s"     9 93 96F 93 9rQ   c                	    V\         P                  8w  g   Q R 4       hV\         P                  8X  d   RpMRp\        P                  P                  VRV,           4      # )AIn pre-processor mode, the output is sent to stdout and discardedexeobjzoutput.)r   r   r   r  r  r  )rV  r  r   r;   s   &&& r<   _get_compile_outputCompiler._get_compile_output  sR    '222w4ww2 #(((FFww||GY%788rQ   c                    V ^8  d   QhRRRR/# rK   r   r   rM   r   r7   )rO   s   "r<   rP   rL  )  s     	 	/? 	K 	rQ   c                	   . pW P                  4       ,          pV\        P                  J d   W P                  4       ,          pV# V\        P                  J d   W P                  4       ,          pV# V\        P                  J g   Q hV# r6   )r  r   r   get_compile_only_argsr   get_preprocess_only_argsr   )rV  r   r   s   && r<   get_compiler_args_for_mode#Compiler.get_compiler_args_for_mode)  s    $$&&#+++..00D
 	 %0001133D  +00000rQ   c                    V ^8  d   QhRRRR/# )rK   r   zT.Optional[T.Iterable[str]]rM   r   r7   )rO   s   "r<   rP   rL  4  s     ( ("= ( (rQ   c                    \        W4      # )z;Return an appropriate CompilerArgs instance for this class.r   rk  s   &&r<   compiler_argsCompiler.compiler_args4  s    D''rQ   r   r7  temp_dirc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rK   r2  rY   r  z(T.Union[None, CompilerArgs, T.List[str]]r   r   r7  rZ   r  r:  rM   T.Iterator[CompileResult]r7   )rO   s   "r<   rP   rL  9  sA     9 93 9D9)9PT9 *9 6O9rQ   c          
   #  	\  "   V\         P                  8X  d   V'       d   Q R 4       hVf   . p\        V'       d   TMRR7      ;_uu_ 4       pRp\        V\        4      '       d   \
        P                  P                  VRV P                  ,           4      p\        VRRR7      ;_uu_ 4       p	V	P                  V4       VP                  R4      '       g   V	P                  R4       RRR4       R	pR
V 2p
MVP                  pRV 2p
V P                  4       pVP                  V4       V\         P                  8w  d)   V P                  Wc4      pWP!                  V4      ,          pVP#                  V P%                  \        V4      4      4       V'       d	   W,          pV P'                  V'       * R7      VP)                  4       ,           p\*        P,                  ! R4       \*        P,                  ! RV4       \*        P,                  ! V
4       \
        P.                  P1                  4       pRVR&   V'       d   RVR&   \3        VRWnR7      w  ppp\5        VVWP6                  VR7      pV'       d   XVn        Vx  RRR4       R#   + '       g   i     EL; i  + '       g   i     R# ; i5i)r  N)dirFz	testfile.wzutf-8)encodingr8  TrL  zSource file: )rF  zRunning compile:zWorking directory: CLC_ALLr   CCACHE_DISABLEzCommand line)msgr9  r   )r8  )r   r   r   r_   rL   r  r  r  rR  openwriter   rX   r  appendr  r  r   r  r  	to_nativer   r=  environr  r   r6  r/  r;  )rV  r2  r  r   r7  r  
tmpdirname	no_ccachesrcnameofile
code_debugcommandsoutputcommand_listos_envrB  stdostderesults   &&&$$$             r<   r   Compiler.compile8  s#     #..."g$gg?J'HdKKzI$$$'',,z'2T5H5H'HJ'399UKK%==..D) :
 !	&tf-
**,WI6
 ))+HOOG$ '22211*C0088OOD;;<LT<RST
 &++y=+AHDVDVDXXLJJ)*JJ,j9JJz"ZZ__&F"F8+.'(-lT^kMAtT"4|\\V]^F%+"L[ LK
 :99 LKKsC   J,+J,A J+:J	%EJ7AJ:
J,J	JJ)	#	J,c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rK   r2  rY   r  z(T.Union[None, T.List[str], CompilerArgs]r   r   r  r:  rM   r  r7   )rO   s   "r<   rP   rL  u  s9      #: #K- "1 =VrQ   c             #  	  "   Ve   \        V4      M	\        4       p\        V P                  4      V P                  WV3pV P                  P                  P
                  pWg9   d   Wv,          pRVn        \        P                  ! R4       \        P                  ! RRP                  VP                  4      R4       \        P                  ! RV4       \        P                  ! RVP                  4       \        P                  ! RVP                  4       Vx  R # V P                  WVR	VR
7      ;_uu_ 4       pWV&   Vx  R R R 4       R #   + '       g   i     R # ; i5i)NTzUsing cached compile:zCached command line: rh  r8  rL  zCached compiler stdout:
zCached compiler stderr:
Fr  r   r7  r  )rO  rG  rH  rJ  r   compiler_check_cacher3  r   r=  r  r7  r1  r2  r   )	rV  r2  r  r   r  textra_argsr   cacherB  s	   &&$$$    r<   cached_compileCompiler.cached_compilet  s     ?I>Tz):Z_Za/4T\\/BDLLRVei.j   ))>><
AAHJJ./JJ.0CTJJJy$'JJ2AHH=JJ2AHH=GdRWbjkkopc
 lkkks   D5E7	E
 
E
E		Ec                    V ^8  d   QhRRRR/# )rK   	colortyperL   rM   r   r7   )rO   s   "r<   rP   rL    s      3 ; rQ   c                	    . # r6   r7   )rV  r  s   &&r<   r   Compiler.get_colorout_args      	rQ   c               $    V ^8  d   QhRRRRRR/# )rK   rel_objrL   pchrZ   rM   r   r7   )rO   s   "r<   rP   rL    s!      # D [ rQ   c                	    . # r6   r7   )rV  r  r  s   &&&r<   get_compile_debugfile_args#Compiler.get_compile_debugfile_args  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s       rQ   c                	    R # Fr7   r\  s   &r<   should_link_pch_objectCompiler.should_link_pch_object  s    rQ   c                    V ^8  d   QhRRRR/# )rK   
targetfilerL   rM   r:  r7   )rO   s   "r<   rP   rL    s     : :# :/ :rQ   c                	8    V P                   P                  V4      # r6   )r  get_debugfile_namerV  r  s   &&r<   get_link_debugfile_name Compiler.get_link_debugfile_name      {{--j99rQ   c                    V ^8  d   QhRRRR/# )rK   r  rL   rM   r   r7   )rO   s   "r<   rP   rL    s     : :# :+ :rQ   c                	8    V P                   P                  V4      # r6   )r  get_debugfile_argsr  s   &&r<   get_link_debugfile_args Compiler.get_link_debugfile_args  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     5 5k 5rQ   c                	6    V P                   P                  4       # r6   )r  get_std_shared_lib_argsr\  s   &r<   get_std_shared_lib_link_args%Compiler.get_std_shared_lib_link_args  s    {{2244rQ   c                    V ^8  d   QhRRRR/# rK   r   r   rM   r   r7   )rO   s   "r<   rP   rL    s     > >m > >rQ   c                	8    V P                   P                  V4      # r6   )r  get_std_shared_module_argsrV  r   s   &&r<   get_std_shared_module_link_args(Compiler.get_std_shared_module_link_args  s    {{55f==rQ   c                    V ^8  d   QhRRRR/# ri  r7   )rO   s   "r<   rP   rL    s     4 4{ 4{ 4rQ   c                	8    V P                   P                  V4      # r6   )r  get_link_whole_forrk  s   &&r<   r  Compiler.get_link_whole_for  s    {{--d33rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     6 6{ 6rQ   c                	6    V P                   P                  4       # r6   )r  get_allow_undefined_argsr\  s   &r<   r  &Compiler.get_allow_undefined_link_args  s    {{3355rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL         / / /rQ   c                	6    V P                   P                  4       # r6   )r  no_undefined_argsr\  s   &r<   r  Compiler.no_undefined_link_args      {{,,..rQ   c                    V ^8  d   QhRRRR/# )rK   instruction_setrL   rM   rX  r7   )rO   s   "r<   rP   rL    s       @W rQ   c                    R# )zCompiler arguments needed to enable the given instruction set.

Return type ay be an empty list meaning nothing needed or None
meaning the given set is not supported.
Nr7   )rV  r  s   &&r<   get_instruction_set_args!Compiler.get_instruction_set_args  s     rQ   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rK   r!  rL   from_dirr   r   extra_pathsrX  rM   z"T.Tuple[T.List[str], T.Set[bytes]]r7   )rO   s   "r<   rP   rL    s8     V V# V Vk V&=V@VrQ   c                	:    V P                   P                  WW44      # r6   )r  build_rpath_args)rV  r!  r  r   r  s   &&&&&r<   r  Compiler.build_rpath_args  s     {{++IUUrQ   c                    V ^8  d   QhRRRR/# )rK   filenamerL   rM   r7   )rO   s   "r<   rP   rL    s     6 6 6 6rQ   c                	8    V P                   P                  V4      # r6   )r  get_archive_name)rV  r  s   &&r<   r	  Compiler.get_archive_name  s    {{++H55rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     : :k :rQ   c                	^    V P                   '       g   . # V P                   P                  4       # r6   )r  get_command_to_archive_shlibr\  s   &r<   r  %Compiler.get_command_to_archive_shlib  s#    {{{I{{7799rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s      k rQ   c                	    . # r6   r7   r\  s   &r<   thread_flagsCompiler.thread_flags  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL         * *; *rQ   c                	6    V P                   P                  4       # r6   )r  r  r\  s   &r<   thread_link_flagsCompiler.thread_link_flags      {{''))rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     o ok orQ   c                	B    \        R V P                  4       ,          4      h)z*Language %s does not support OpenMP flags.r%  r\  s   &r<   openmp_flagsCompiler.openmp_flags  s    "#ORVRkRkRm#mnnrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     # #; #rQ   c                	"    V P                  4       # r6   )r  r\  s   &r<   openmp_link_flagsCompiler.openmp_link_flags  s      ""rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s       rQ   c                	    . # r6   r7   r\  s   &r<   language_stdlib_only_link_flags(Compiler.language_stdlib_only_link_flags  r  rQ   c                    V ^8  d   QhRRRR/# )rK   vistyperL   rM   r   r7   )rO   s   "r<   rP   rL    s      # + rQ   c                	    . # r6   r7   )rV  r&  s   &&r<   gnu_symbol_visibility_args#Compiler.gnu_symbol_visibility_args  r  rQ   c                    V ^8  d   QhRRRR/# )rK   valuerL   rM   r   r7   )rO   s   "r<   rP   rL    s     9 9C 9K 9rQ   c                	8    V P                   P                  V4      # r6   )r  get_win_subsystem_args)rV  r+  s   &&r<   r-  Compiler.get_win_subsystem_args  s     {{11%88rQ   c                    V ^8  d   QhRRRR/# )rK   r   rL   rM   r  r7   )rO   s   "r<   rP   rL    s     ] ]s ]/B ]rQ   c                	<    \        R V P                  4        R24      h)ry  z& does not support function attributes.r%  rV  r   s   &&r<   has_func_attributeCompiler.has_func_attribute  s(    "11344Z[] 	]rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL         J Jk JrQ   c                	V    R p\        VP                  V P                  4       4      4      h)z6Language {} does not support position-independent coder  rV  ms   & r<   get_pic_argsCompiler.get_pic_args  s$    D"188D,E,E,G#HIIrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    r5  rQ   c                	V    R p\        VP                  V P                  4       4      4      h)z<Language {} does not support position-independent executabler  r7  s   & r<   get_pie_argsCompiler.get_pie_args  s$    J"188D,E,E,G#HIIrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    r  rQ   c                	6    V P                   P                  4       # r6   )r  r=  r\  s   &r<   get_pie_link_argsCompiler.get_pie_link_args  r  rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     	 	 	rQ   c                     R# )aC  Returns the argument family type.

Compilers fall into families if they try to emulate the command line
interface of another compiler. For example, clang is in the GCC family
since it accepts most of the same arguments as GCC. ICL (ICC on
windows) is in the MSVC family since it accepts most of the same
arguments as MSVC.
otherr7   r7   rQ   r<   get_argument_syntaxCompiler.get_argument_syntax  s     rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     N N; NrQ   c                	B    \        R V P                  4       ,          4      h)z.%s does not support get_profile_generate_args r  r\  s   &r<   r   "Compiler.get_profile_generate_args  s    "<t{{}LN 	NrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     I Ik IrQ   c                	B    \        R V P                  4       ,          4      h)z)%s does not support get_profile_use_args r  r\  s   &r<   r   Compiler.get_profile_use_args  s    "7$++-GI 	IrQ   c                    V ^8  d   QhRRRR/# ri  r7   )rO   s   "r<   rP   rL     s      ; ; rQ   c                	    RpRpRp. p\        V4      pV FN  pWr9   d   K  VP                  V4      '       d	   Ws9  d   K*  Wt9   d   \        V4       K=  VP                  V4       KP  	  V# )-headerpad_max_install_names)rP  )z-Wl,-L)rQ  z
-framework)iter
startswithnextr  )rV  r   rm_exactrm_prefixesrm_nextr   iargsargs   &&      r<   remove_linkerlike_argsCompiler.remove_linkerlike_args   sk    4%'T
C ~~k**s/E~UJJsO  
rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r   rZ   r   rM   r   r7   )rO   s   "r<   rP   rL    s!      d  + rQ   c                	    . # r6   r7   )rV  r   r   s   &&&r<   r   Compiler.get_embed_bitcode_args  r  rQ   r   r   r   c               (    V ^8  d   QhRRRRRRRR/# )	rK   r   T.Optional[BuildTarget]r   rN   r   rL   rM   r   r7   )rO   s   "r<   rP   rL    s,      .E WZ #&7BrQ   c               	    . # r6   r7   )rV  r   r   r   s   &$$$r<   r   Compiler.get_lto_compile_args  r  rQ   r
  c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rK   r   r`  r   rN   r   rL   r
  r:  rM   r   r7   )rO   s   "r<   rP   rL    s4     * *+B *TW * #*DS*_j*rQ   c               	6    V P                   P                  4       # r6   )r  get_lto_args)rV  r   r   r   r
  s   &$$$$r<   r  Compiler.get_lto_link_args  s    {{''))rQ   c                    V ^8  d   QhRRRR/# rK   r  rL   rM   r   r7   )rO   s   "r<   rP   rL     s     8 83 8; 8rQ   c                	8    V P                   P                  V4      # r6   )r  r  rV  r  s   &&r<   r  Compiler.get_lto_obj_cache_path   s    {{11$77rQ   c               $    V ^8  d   QhRRRRRR/# rK   r   r`  r+  r   rM   r7   )rO   s   "r<   rP   rL  #  s#      -D [ ]h rQ   c                	    . # r6   r7   rV  r   r+  s   &&&r<   r   Compiler.sanitizer_compile_args#  r  rQ   c               $    V ^8  d   QhRRRRRR/# rm  r7   )rO   s   "r<   rP   rL  &  s#     1 1*A 1+ 1Ze 1rQ   c                	8    V P                   P                  V4      # r6   )r  r&  ro  s   &&&r<   r  Compiler.sanitizer_link_args&  s    {{))%00rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  )  s     / /; /rQ   c                	6    V P                   P                  4       # r6   )r  r  r\  s   &r<   r  Compiler.get_asneeded_args)  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  ,  s     , , ,rQ   c                	6    V P                   P                  4       # r6   )r  r  r\  s   &r<   r  Compiler.headerpad_args,  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  /  s     * *k *rQ   c                	6    V P                   P                  4       # r6   )r  r  r\  s   &r<   r  Compiler.bitcode_args/  r  rQ   c                    V ^8  d   QhRRRR/# rK   optimization_levelrL   rM   r   r7   )rO   s   "r<   rP   rL  2  s     J JS J[ JrQ   c                	8    V P                   P                  V4      # r6   )r  get_optimization_link_argsrV  r  s   &&r<   r  #Compiler.get_optimization_link_args2  s    {{556HIIrQ   c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
rK   r  rL   
shlib_namer;   	soversiondarwin_versionsT.Tuple[str, str]rM   r   r7   )rO   s   "r<   rP   rL  5  s9      c s C TW ):?JrQ   c                	<    V P                   P                  WW4V4      # r6   )r  get_soname_args)rV  r  r  r;   r  r  s   &&&&&&r<   r  Compiler.get_soname_args5  s!    {{** 	rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL  ;  s        =  [  rQ   c                	    VP                   # r6   )	link_argsr  s   &&r<   get_target_link_argsCompiler.get_target_link_args;  s    rQ   c                    V ^8  d   QhRRRR/# rK   depz'Dependency'rM   r   r7   )rO   s   "r<   rP   rL  >  s     & &| & &rQ   c                	"    VP                  4       # r6   )get_compile_argsrV  r  s   &&r<   get_dependency_compile_args$Compiler.get_dependency_compile_args>  s    ##%%rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL  A  s     6 6L 6[ 6rQ   c                	@    VP                  V P                  4       4      # r6   )get_link_argsr  r  s   &&r<   get_dependency_link_args!Compiler.get_dependency_link_argsA  s      !2!2!455rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r  rL   rH  rM   r   r7   )rO   s   "r<   rP   rL  E  s!      S 3 ; rQ   c                    . # )zKGet a list of arguments to pass to the compiler to set the linker.
        r7   )r  r  rH  s   &&&r<   use_linker_argsCompiler.use_linker_argsD  s	     	rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  J  s      ; rQ   c                	    . # r6   r7   r\  s   &r<   r   Compiler.get_coverage_argsJ  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  M  r  rQ   c                	6    V P                   P                  4       # r6   )r  r   r\  s   &r<   r  Compiler.get_coverage_link_argsM  r  rQ   c                    V ^8  d   QhRRRR/# )rK   defsfilerL   rM   r   r7   )rO   s   "r<   rP   rL  P  s     = = = =rQ   c                	8    V P                   P                  V4      # r6   )r  gen_vs_module_defs_args)rV  r  s   &&r<   r   Compiler.gen_vs_module_defs_argsP  s    {{228<<rQ   c                    V ^8  d   QhRRRR/# )rK   disablerZ   rM   r   r7   )rO   s   "r<   rP   rL  S  s      t  rQ   c                    . # )zGet arguments to enable or disable assertion.

:param disable: Whether to disable assertions
:return: A list of string arguments for this compiler
r7   )rV  r  s   &&r<   r   Compiler.get_assert_argsS  s	     	rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r  rL   r   rM   r7   )rO   s   "r<   rP   rL  [  s&     m m3 m3 m3 mrQ   c                	    V\         P                  9   d   V# VR9   g   Q hRpRpVR8X  d   RpRpVR8X  d   R# VR8X  d   V# VR9   d   V# VR	8X  g   Q h\        R
4      h)from_buildtypestatic_from_buildtypemddmdmtdmtr   r   r=  customzBRequested C runtime based on buildtype, but buildtype is "custom".>   r  r  >   minsizer   debugoptimized)r	   
MSCRT_VALSr   )rV  r  r   dbgrels   &&&  r<   get_crt_valCompiler.get_crt_val[  s    g(((NEEEE--CC '!JBBJ(((&'kllrQ   c               $    V ^8  d   QhRRRRRR/# rK   r  rL   r   rM   r   r7   )rO   s   "r<   rP   rL  q  s&     [ [C [C [K [rQ   c                	    \        R 4      hz4This compiler does not support Windows CRT selectionr   rV  r  r   s   &&&r<   r   Compiler.get_crt_compile_argsq      "#YZZrQ   c               $    V ^8  d   QhRRRRRR/# r  r7   )rO   s   "r<   rP   rL  t  s&     [ [ [ [ [rQ   c                	    \        R 4      hr  r  r  s   &&&r<   r   Compiler.get_crt_link_argst  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  w  s      { rQ   c                	    . # r6   r7   r\  s   &r<   r  Compiler.get_compile_only_argsw  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  z  s     Q Q+ QrQ   c                	    \        R 4      h)z*This compiler does not have a preprocessorr  r\  s   &r<   r  !Compiler.get_preprocess_only_argsz  s    "#OPPrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  }  s     / /[ /rQ   c                	"    V P                  4       # r6   )r  r\  s   &r<   get_preprocess_to_file_args$Compiler.get_preprocess_to_file_args}  s    ,,..rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL          + rQ   c                	    . # r6   r7   r\  s   &r<   get_default_include_dirs!Compiler.get_default_include_dirs  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s      K rQ   c                v    V P                  4       R8X  g$   V P                  P                  4       '       g   R.# . # )z=Enable transparent large-file-support for 32-bit UNIX systemsmsvcz-D_FILE_OFFSET_BITS=64)rF  r]  	is_darwinr\  s   &r<   get_largefile_argsCompiler.get_largefile_args  s7    ((*f4		8K8K8M8M --- 	rQ   c                    V ^8  d   QhRRRR/# )rK   	elf_classr  rM   r   r7   )rO   s   "r<   rP   rL    s      / [ rQ   c                	    . # r6   r7   )rV  r  s   &&r<   get_library_dirsCompiler.get_library_dirs  r  rQ   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )rK   rX   rL   rtyper  r  rX  r  r  rM   zT.Union[str, int]r7   )rO   s   "r<   rP   rL    sO     S S #S #S "%S &=	S
 (HS
 M^SrQ   c                	2    \        V P                   R 24      h)z" does not support get_return_valuer  )rV  rX   r  r  r  r  s   &&&&&&r<   get_return_valueCompiler.get_return_value  s     #dggY.P#QRRrQ   c               (    V ^8  d   QhRRRRRRRR/# )	rK   r   rL   rt  r   allow_systemrZ   rM   rX  r7   )rO   s   "r<   rP   rL    s7     Q Q Q#.Q &*Q 6MQrQ   c                	2    \        V P                   R 24      h)z  does not support find_frameworkr  )rV  r   rt  r  s   &&&&r<   find_frameworkCompiler.find_framework  s     #dggY.N#OPPrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     W Wk WrQ   c                	2    \        V P                   R 24      h)z& does not support find_framework_pathsr  r\  s   &r<   find_framework_pathsCompiler.find_framework_paths      "dggY.T#UVVrQ   c                    V ^8  d   QhRRRR/# rK   r   rL   rM   r7   )rO   s   "r<   rP   rL    s     S S S SrQ   c                	2    \        V P                   R 24      h)z" does not support attribute checksr  r1  s   &&r<   attribute_check_funcCompiler.attribute_check_func  s    "dggY.P#QRRrQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     W W WrQ   c                	2    \        V P                   R 24      hz& does not support pre compiled headersr  r\  s   &r<   get_pch_suffixCompiler.get_pch_suffix  r  rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL    s     W W W WrQ   c                	2    \        V P                   R 24      hr  r  r1  s   &&r<   get_pch_nameCompiler.get_pch_name  r  rQ   c               $    V ^8  d   QhRRRRRR/# )rK   pch_dirrL   headerrM   r   r7   )rO   s   "r<   rP   rL    s&     W W WS W[ WrQ   c                	2    \        V P                   R 24      hr  r  )rV  r  r  s   &&&r<   get_pch_use_argsCompiler.get_pch_use_args  r  rQ   c                    V ^8  d   QhRRRR/# )rK   r   rL   rM   r   r7   )rO   s   "r<   rP   rL    s     V Vc Vk VrQ   c                	2    \        V P                   R 24      h)z% does not support function attributesr  r1  s   &&r<   !get_has_func_attribute_extra_args*Compiler.get_has_func_attribute_extra_args  s    "dggY.S#TUUrQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     & &S &rQ   c                	8    R P                  V P                  4      # )rh  )r  rG  r\  s   &r<   r   Compiler.name_string  s    xx%%rQ   c                    V ^8  d   QhRRRR/# )rK   work_dirrL   rM   r`  r7   )rO   s   "r<   rP   rL    s      S T rQ   c                    R# )zCheck that this compiler actually works.

This should provide a simple compile/link test. Something as simple as:
```python
main(): return 0
```
is good enough here.
Nr7   )rV  r  s   &&r<   sanity_checkCompiler.sanity_check  rd  rQ   c               (    V ^8  d   QhRRRRRRRR/# )	rK   rC  r   r  rL   use_exe_wrapper_for_crossrZ   rM   r  r7   )rO   s   "r<   rP   rL    s.       s _c   pA rQ   c                	8   V P                   '       dV   V'       dN   V P                  P                  4       '       g   R
# V P                  P                  P	                  4       V,           p\
        P                  ! R\        P                  ! V4      4        \        VRVR7      w  rEpTP                  ^ 8w  d6   \        P                  ! RT P                   RT P                  4        R	24      hYV3#   \         d!   p\        P                  ! RT: R24      hRp?ii ; i)r	  zRunning test binary command: zSanity check)r9  z*Could not invoke sanity check executable: r]   NzExecutables created by z
 compiler z are not runnable.)r	  r	  )rT  rJ  r;  r>  r?  r   r=  r   	join_argsr   rA  r   r/  rA  r   )rV  rC  r  r  rD  r  r  rG  s   &&&&    r<   run_sanity_checkCompiler.run_sanity_check  s    ===6##3355&&22>>@7JG

2H4F4Fw4OP	e.wHUNBd ==A//2I$--Xbcgcscscubv  wI  1J  K  Kz  	e//2\]^\aab0cdd	es   C. .D9DDc                    V ^8  d   QhRRRR/# )rK   rX   rL   rM   zT.Tuple[T.Optional[str], str]r7   )rO   s   "r<   rP   rL    s      # 2O rQ   c                	
    R V3# r6   r7   )rV  rX   s   &&r<   split_shlib_to_partsCompiler.split_shlib_to_parts  s    U{rQ   c               $    V ^8  d   QhRRRRRR/# )rK   	outtargetrL   outfilerM   r   r7   )rO   s   "r<   rP   rL    s!       s { rQ   c                	    . # r6   r7   )rV  r   r!  s   &&&r<   get_dependency_gen_args Compiler.get_dependency_gen_args  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s      { rQ   c                	    . # r6   r7   r\  s   &r<   get_std_exe_link_argsCompiler.get_std_exe_link_args  r  rQ   c               $    V ^8  d   QhRRRRRR/# )rK   r  rL   	is_systemrZ   rM   r   r7   )rO   s   "r<   rP   rL    s!      S T k rQ   c                	    . # r6   r7   )rV  r  r*  s   &&&r<   get_include_argsCompiler.get_include_args  r  rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     I IC IrQ   c                	4    V P                  4       R 8X  d   R # R# )r  gcc)rF  r\  s   &r<   get_depfile_formatCompiler.get_depfile_format  s    113v=vH5HrQ   c                    V ^8  d   QhRRRR/# )rK   objfilerL   rM   r:  r7   )rO   s   "r<   rP   rL    s     9 9# 9/ 9rQ   c                	>    VR ,           V P                  4       ,           # )r]   )get_depfile_suffix)rV  r4  s   &&r<   depfile_for_objectCompiler.depfile_for_object  s    }t66888rQ   c                   V ^8  d   QhRR/# rf  r7   )rO   s   "r<   rP   rL    s     W WC WrQ   c                	2    \        V P                   R 24      h)z& does not implement get_depfile_suffixr  r\  s   &r<   r6  Compiler.get_depfile_suffix  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s      K rQ   c                    . # )z>Arguments to turn off default inclusion of standard libraries.r7   r\  s   &r<   get_no_stdinc_argsCompiler.get_no_stdinc_args  r  rQ   c                    V ^8  d   QhRRRR/# )rK   levelrL   rM   r   r7   )rO   s   "r<   rP   rL    s      3 ; rQ   c                	    . # r6   r7   )rV  rA  s   &&r<   get_warn_argsCompiler.get_warn_args  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    r  rQ   c                	    . # r6   r7   r\  s   &r<   r  Compiler.get_werror_args  r  rQ   c                    V ^8  d   QhRRRR/# r~  r7   )rO   s   "r<   rP   rL    s        rQ   c                	    R # r6   r7   r  s   &&r<   get_optimization_argsCompiler.get_optimization_args  r  rQ   c                   V ^8  d   QhRR/# )rK   rM   zT.Tuple[str, ...]r7   )rO   s   "r<   rP   rL    s     [ [(9 [rQ   c                	2    \        V P                   R 24      h)z* does not implement get_module_incdir_argsr  r\  s   &r<   get_module_incdir_argsCompiler.get_module_incdir_args      "dggY.X#YZZrQ   c                    V ^8  d   QhRRRR/# rh  r7   )rO   s   "r<   rP   rL     s     [ [3 [; [rQ   c                	2    \        V P                   R 24      h)z* does not implement get_module_outdir_argsr  rj  s   &&r<   get_module_outdir_argsCompiler.get_module_outdir_args   rP  rQ   c                    V ^8  d   QhRRRR/# )rK   module_namerL   rM   r7   )rO   s   "r<   rP   rL    s     \ \3 \3 \rQ   c                	2    \        V P                   R 24      h)z+ does not implement module_name_to_filenamer  )rV  rV  s   &&r<   module_name_to_filename Compiler.module_name_to_filename  s    "dggY.Y#Z[[rQ   c                    V ^8  d   QhRRRR/# r  r7   )rO   s   "r<   rP   rL    s     
/ 
/,< 
/ 
/rQ   c                "    V P                  4       # )a  Arguments to pass the compiler and/or linker for checks.

The default implementation turns off optimizations.

Examples of things that go here:
  - extra arguments for error checking
  - Arguments required to make the compiler exit with a non-zero status
    when something is wrong.
)get_no_optimization_args)rV  r   s   &&r<   get_compiler_check_args Compiler.get_compiler_check_args  s     ,,..rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    r  rQ   c                    . # )z8Arguments to the compiler to turn off all optimizations.r7   r\  s   &r<   r\  !Compiler.get_no_optimization_args  r  rQ   c               (    V ^8  d   QhRRRRRRRR/# )	rK   r  UT.Union[None, CompilerArgs, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]r  r  r   r   rM   r   r7   )rO   s   "r<   rP   rL    s2     # #'|#)I# "2# R^#rQ   c                   \        V4      '       d	   V! V4      pVf   . pVf   . pV P                  V P                  V4      4      pV FE  pWEP                  4       ,          pV\        P
                  J g   K/  WEP                  4       ,          pKG  	  V\        P                  J dB   W@P                  P                  P                  V P                  V P                  4      ,          pMTV\        P
                  J dA   W@P                  P                  P                  V P                  V P                  4      ,          pWA,          pV# )a:  Arguments to pass the build_wrapper helper.

This generally needs to be set on a per-language basis. It provides
a hook for languages to handle dependencies and extra args. The base
implementation handles the most common cases, namely adding the
check_arguments, unwrapping dependencies, and appending extra args.
)callabler  r]  r  r   r   r  r   rJ  r   get_external_argsrI  rA  get_external_link_args)rV  r  r  r   r   r&   s   &&&&  r<   rN  Compiler.build_wrapper_args  s    J#D)JJL !!$">">t"DEA&&((D',,,))  #+++$$--??@P@PRVR_R_``D%***$$--DDTEUEUW[WdWdeeDrQ   c               4    V ^8  d   QhRRRRRRRRR	R
RR
RR/# )rK   r2  rY   r  rc  r  r  r   r   r7  rZ   r  rM   r  r7   )rO   s   "r<   rP   rL  <  sO      #: #x%E . X\ '+	 8Q	rQ   c              #    "   V P                  W#V4      pV'       g	   V'       d@   V P                  WWEV P                  P                  R7      ;_uu_ 4       pVx  RRR4       R# V P	                  WW@P                  P                  R7      ;_uu_ 4       pVx  RRR4       R#   + '       g   i     R# ; i  + '       g   i     R# ; i5i)zHelper for getting a cached value when possible.

This method isn't meant to be called externally, it's mean to be
wrapped by other methods like compiles() and links().
r  N)r  r   r  )rN  r   rJ  scratch_dirr  )	rV  r2  r  r  r   r7  r  r   rs	   &&&&&&&  r<   r<  Compiler._build_wrapper;  s      &&zFKd$bfbrbrb~b~  DE @ $$TP`P`PlPl$mmqr nm @ nmms:   "C
0C
B"9C
B6
C
"B3	-	C
6C		C
c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rK   r2  rY   r  UT.Union[None, T.List[str], CompilerArgs, T.Callable[[CompileCheckMode], T.List[str]]]r  r  r   r   r  rZ   rM   r  r7   )rO   s   "r<   rP   rL  N  sC     / /4 /r/?/ (/ !%	/ 2E	/rQ   c                   V P                  WW4VR7      ;_uu_ 4       pVP                  ^ 8H  VP                  3uuRRR4       #   + '       g   i     R# ; i)zRun a compilation or link test to see if code can be compiled/linked.

:returns:
    A tuple of (bool, bool). The first value is whether the check
    succeeded, and the second is whether it was retrieved from a cache
)r  N)r<  r/  r3  )rV  r2  r  r  r   r  rB  s   &&$$$$ r<   compilesCompiler.compilesN  sE       <Ub ccgh<<1$ahh. dcccs   AA	r   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rK   r2  rY   r   zT.Optional['Compiler']r  ro  r  r  r  rZ   rM   r  r7   )rO   s   "r<   rP   rL  \  sK     q q1 q.qoq =q "	q /B	qrQ   c          
     	b   V'       ds   VP                  WR R7      ;_uu_ 4       p\        P                  P                  VP                  4      pV P                  WsV\        P                  R R7      uuRRR4       # V P                  WV\        P                  VR7      #   + '       g   i     L3; i)T)r  r7  )r  r  r   r  N)r<  r   r`   from_absolute_filer;  rq  r   r   )rV  r2  r   r  r  r  rl  r4  s   &&$$$$  r<   linksCompiler.links\  s    
 ((VZ([[_`"--::1==I}}W2>EUEZEZjn % p \[
 }}T*6=M=R=Rbo  q 	q \[s   ABB.	c               $    V ^8  d   QhRRRRRR/# )rK   kwargsr   build_to_srcrL   rM   r   r7   )rO   s   "r<   rP   rL  j  s&     U Uy U U UrQ   c                2    \        V P                   R24      h)z&Used by D for extra language features.z$ does not implement get_feature_argsr  )rV  ry  rz  s   &&&r<   get_feature_argsCompiler.get_feature_argsj  s     #dggY.R#STTrQ   c               $    V ^8  d   QhRRRRRR/# )rK   prelink_namerL   obj_listr   rM   z!T.Tuple[T.List[str], T.List[str]]r7   )rO   s   "r<   rP   rL  o  s'     U US UK ULm UrQ   c                	2    \        V P                   R 24      h)z$ does not know how to do prelinking.r  )rV  r  r  s   &&&r<   get_prelink_argsCompiler.get_prelink_argso  s    "dggY.R#STTrQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL  r  s       rQ   c                    R# )zCControls whether compile args have to be used for prelinking or notFr7   r\  s   &r<   get_prelink_append_compile_args(Compiler.get_prelink_append_compile_argsr  s    rQ   c                   V ^8  d   QhRR/# )rK   rM   z'RSPFileSyntax'r7   )rO   s   "r<   rP   rL  v  s     - - -rQ   c                6    V P                   P                  4       # )zThe format of the RSP file that this compiler supports.

If `self.can_linker_accept_rsp()` returns True, then this needs to
be implemented
)r  rsp_file_syntaxr\  s   &r<   r  Compiler.rsp_file_syntaxv  s     {{**,,rQ   c                    V ^8  d   QhRRRR/# )rK   is_debugrZ   rM   r   r7   )rO   s   "r<   rP   rL  ~  s      t  rQ   c                    . # )z%Arguments required for a debug build.r7   )rV  r  s   &&r<   get_debug_argsCompiler.get_debug_args~  r  rQ   c                   V ^8  d   QhRR/# r  r7   )rO   s   "r<   rP   rL    s     T TT TrQ   c                	2    \        R V P                   24      h)zThere is no static linker for )NotImplementedErrorrA  r\  s   &r<   needs_static_linkerCompiler.needs_static_linker  s    !$B4==/"RSSrQ   c                   V ^8  d   QhRR/# )rK   rM   r   r7   )rO   s   "r<   rP   rL    s     U U( UrQ   c                :    \        V P                  4        R24      h)z%Get compiler's preprocessor.
        z does not support preprocessorr  r\  s   &r<   get_preprocessorCompiler.get_preprocessor  s     #dkkm_4R#STTrQ   c                    V ^8  d   QhRRRR/# )rK   basenamerL   rM   r   r7   )rO   s   "r<   rP   rL    s     R RS RY RrQ   c                	N    \        V P                   R V 2V P                  R7      # )r  )machine)r   rA  rI  )rV  r  s   &&r<   form_compileropt_keyCompiler.form_compileropt_key  s$    DMM?!H:6@P@PQQrQ   c               (    V ^8  d   QhRRRRRRRR/# )	rK   r   r   r   r`  r   r:  rM   zoptions.ElementaryOptionValuesr7   )rO   s   "r<   rP   rL    s7     
g 
g#:
g&=
g +:
g $B	
grQ   c                	(   \        V\        4      '       d   V P                  V4      pV'       d&   V P                  P                  P                  W!4      # V P                  P                  P                  P                  VP                  VR 7      4      # ))r   )	r_   rL   r  rJ  r   r   r   r   r   )rV  r   r   r   s   &&&&r<   get_compileropt_valueCompiler.get_compileropt_value  sp    
 c3++C0C##,,BB6OO##,,55CCCJJZdJDeffrQ   c               $    V ^8  d   QhRRRRRR/# )rK   optsr   r+  r   rM   r`  r7   )rO   s   "r<   rP   rL    s#      *D [ ]a rQ   c                	    V P                  R 4      pW,          p\        V\        P                  \        P                  34      '       g   Q R4       hRV9  d   R.V,           pW$n        R# )stdzfor mypyr   N)r  r_   r	   UserStdOptionUserComboOptionchoices)rV  r  r+  r   r  s   &&&  r<   _update_language_stdsCompiler._update_language_stds  s\    ''.i# 5 5w7N7NOPP\R\\PHu$ErQ   )r   rQ  rR  rJ  rG  rN  rO  rI  rK  rT  r  rU  rH  )NNr  )Tr6   )NNNN)r   r   r   r   r>  r4  r?  r@  INVOKES_LINKERr   rW  propertyr]  rb  rk  r   rs  rw  r{  r  r  r  r  r  classmethodr  r  r  r  r  r  r  r  r  r  abcabstractmethodr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r/  rH  rP  rU  rZ  r_  re  rl  rp  r   PREFER_SHAREDrz  r  r  r   r  r  r  r  
contextlibcontextmanagerr   r   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r#  r(  r-  r2  r9  r=  rA  staticmethodrF  r   r   rZ  r   r   r  r  r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r#  r'  r,  r1  r7  r6  r>  rC  r  rJ  rN  rS  rX  r]  r\  r   rN  r<  rq  rv  r|  r  r  r  r  r  r  r  r  r  r   r7   rQ   r<   r   r     sz     "K! "$M;#59M29NMG''D* *$ ; ;N7
 tH H , ) )#V VWrYjnYEIY
TBFT
jP PP 	 74XX--,-  D D	pko	pFJ	ppimpDHp */p(wptwKOw
6 6DimDH(peip@Dp
s8<sCGs
	r;?	rFJ	r  :   V]UjUj04QVp. .
	.59	( ( 9,<,A,A9W\9 -19 9v NR0@0E0E 48 4 ::5>46/V V
6:
*o#9]JJ* 	 	NI* ]^ )2*T *Z[ *&/*VZ*81/,*J &6  
/=m,[[Q/& SQ QWSWWWV& 	  "I9W 	 [[\
/ 5E4L4L# #J {HL0@0H0H^c-2	  $/uy/BF/ +;*B*B/ (-	/ /q15qrvq @Dq %*	q qU
U-TU
R
g 
g rQ   )	metaclass>   Hr!   dihhhpphxxippmocpxdpxivapi>   or  res>   ajsrE  dlllibdylibdll.a)r"   )r#   cppmcccpcxxzc++r  hpr  r  r  zh++inoixxCPPr  HPPr  )cu)f90f95f03f08fforftnfpp)r&   r  )r8  )mm)rs)r*   r  gs)r+   )r,   )r-   )pyx)asmr/   )r0   )sa>   Sr3   sxr  r0   )r(   r#   r'   r"   r/   r%   )r)   r&   r$   >   r"   r&   r#   r$   r'   r(   r%   >   r"   r#   r'   r(   )
z
-lkernel32z-luser32z-lgdi32z
-lwinspoolz	-lshell32z-lole32z
-loleaut32z-luuidz
-lcomdlg32z
-ladvapi32)
zkernel32.libz
user32.libz	gdi32.libzwinspool.libzshell32.libz	ole32.libzoleaut32.libzuuid.libzcomdlg32.libzadvapi32.lib)l__conditional_annotations__
__future__r   r  r  os.pathr  reenum	itertoolstypingTdataclassesr   r   	functoolsr   r	  r   r   r	   r
   r   r   r   r   r   r   arglistr   TYPE_CHECKINGr   r  r   r   r   	envconfigr   rJ  r   linkersr   linkers.linkersr   r   r  r   TypeVarr   r    rb   r   r   r2   r4  keysall_languagesc_cpp_suffixesrP  cpp_suffixes
c_suffixesrx   r   chainvaluesr   rg   
clib_langsrS   dictitemsSUFFIX_TO_LANGLANGUAGES_USING_LDFLAGSLANGUAGES_USING_CPPFLAGSr   r   rI   rU   rd   rh   ro   rt   ry   r}   r   r   r   r   r   r   r   Enumr   gnu_winlibsmsvc_winlibsr   r   r   r   r   r   r  r)  r+  r-  r6  ABCMetar   )r  s   @r<   <module>r     s  
 # " 
      (     
   "???.4')'/()99^:>LYYt_; ["@44	  C4 G4 E4 4 F4 g4 G4 "4 	'4 Z4 I4 i4  !4" I#4$ %40 ( ""$='(>9s#$~5
4 6 9??qM$8$8$:q<NqP`qbpqr0 ?
 $j0ioo (K4A4G4G4I(K L M Q 9 
**@
A 	:
I
Kmx
K
Km)'#  	$%% 4$ $+
(+%& 4" "+
 4" ",
"tyy N<
 R%%%%5 1  
24&/ +  		_iAFZz	. 	    
4N 
4 
4T~ TrQ   