+
    UBi3                      a  0 t $ ^ RIHt  ^ RIt^ RIt^ RIt^RIHt ^RIH	t	 ^RI
HtHtHtHtHtHtHt ^RI	Ht ^RIHt ^RIHt ]P.                  '       d   ^R	I	Ht ^R
IHt ^RIHt ^RIHt ]tM]tRR.RR.RR./t R]!R&   R. RR.RR.RR.RR.RR.R R!./t"R]!R"&   R#R#R$R%R&R'R(R)/t# ! R* R+]4      t$ ! R, R-]4      t% ! R. R/]4      t&R# )0    )annotationsN)mesonlib)options)AppleDynamicLinkerClangClDynamicLinkerLLVMDynamicLinkerGnuBFDDynamicLinkerGnuGoldDynamicLinkerMoldDynamicLinkerVisualStudioLikeLinkerMixin)	OptionKey)CompileCheckMode)GnuLikeCompiler)MutableKeyedOptionDictType)
Dependency)BuildTarget)Compilerautoz-fdiagnostics-color=autoalwaysz-fdiagnostics-color=alwaysneverz-fdiagnostics-color=neverT.Dict[str, T.List[str]]clang_color_argsplain0z-O0gz-Og1z-O12z-O23z-O3sz-Ozclang_optimization_argsccppzc++objczobjective-cobjcppzobjective-c++c            
        a  ] tR t^5t$ RtR. RR.RR.RR.R	R
./tR]R&   R. RR.RR.R. R	R./tR]R&   R V 3R l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tR R  ltR! V 3R" lltR#R$R%R$/R& V 3R' llltR( R) lt]R* V 3R+ ll4       tR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4R$R5^ R6R7/R8 V 3R9 llltR: R; ltR4R$R5^ R6R7R<R$/R= R> lltR?tV ;t# )@ClangCompilerclangnonemdz-fms-runtime-lib=dllmddz-fms-runtime-lib=dll_dbgmtz-fms-runtime-lib=staticmtdz-fms-runtime-lib=static_dbgr   
CRT_D_ARGSz-Wl,/nodefaultlib:libcmtCRT_ARGSc                   V ^8  d   QhRR/# )   defineszT.Optional[T.Dict[str, str]] )formats   "F/usr/lib/python3.14/site-packages/mesonbuild/compilers/mixins/clang.py__annotate__ClangCompiler.__annotate__M   s     , , < ,    c           	     	(  < \         SV `  4        T;'       g    / V n        V P                  P	                  \        R 4      \        R4      \        R4      \        R4      \        R4      04       \        V P                  \        4      '       d&   V P                  P                  \        R4      4       MD\        V P                  \        4      '       d%   V P                  P                  \        R4      4       V P                  P                  R4       R# )	
b_coloroutb_lto_threads
b_lto_modeb_thinlto_cacheb_thinlto_cache_dir	b_bitcodeb_vscrtllN)super__init__r1   base_optionsupdater   
isinstancelinkerr   addr   can_compile_suffixes)selfr1   	__class__s   &&r4   rB   ClangCompiler.__init__M   s    }}"  |$i&@)LBY[dev[w,-/	0 dkk#566!!)K"89%@AA!!)I"67!!%%d+r7   c               $    V ^8  d   QhRRRRRR/# r0   crt_valstr	buildtypereturnT.List[str]r2   )r3   s   "r4   r5   r6   ]   s!     ( (C (C (K (r7   c                	    \        V P                  \        4      '       g   . # V P                  W4      pV P                  V,          # N)rE   rF   r   get_crt_valr-   rI   rN   rP   s   &&&r4   get_crt_compile_args"ClangCompiler.get_crt_compile_args]   s8    $++'BCCI""76w''r7   c               $    V ^8  d   QhRRRRRR/# rM   r2   )r3   s   "r4   r5   r6   c   s!     & & & & &r7   c                	    \        V P                  \        4      '       g   . # V P                  W4      pV P                  V,          # rT   )rE   rF   r   rU   r.   rV   s   &&&r4   get_crt_link_argsClangCompiler.get_crt_link_argsc   s8    $++'BCCI""76}}W%%r7   c                    V ^8  d   QhRRRR/# )r0   	colortyperO   rQ   rR   r2   )r3   s   "r4   r5   r6   i   s     . .3 .; .r7   c                	*    \         V,          R ,          # ):NNN)r   )rI   r^   s   &&r4   get_colorout_argsClangCompiler.get_colorout_argsi   s    	*1--r7   c                    V ^8  d   QhRRRR/# )r0   definerO   rQ   boolr2   )r3   s   "r4   r5   r6   l   s     & & & &r7   c                	    WP                   9   # rT   r1   rI   rc   s   &&r4   has_builtin_define ClangCompiler.has_builtin_definel   s    %%r7   c                    V ^8  d   QhRRRR/# )r0   rc   rO   rQ   T.Optional[str]r2   )r3   s   "r4   r5   r6   o   s     ( ( ( (r7   c                	8    V P                   P                  V4      # rT   )r1   getrg   s   &&r4   get_builtin_define ClangCompiler.get_builtin_defineo   s    ||''r7   c                    V ^8  d   QhRRRR/# )r0   optimization_levelrO   rQ   rR   r2   )r3   s   "r4   r5   r6   r   s     ; ; ; ;r7   c                	    \         V,          # rT   )r    )rI   rq   s   &&r4   get_optimization_args#ClangCompiler.get_optimization_argsr   s    &'9::r7   c                   V ^8  d   QhRR/# )r0   rQ   rO   r2   )r3   s   "r4   r5   r6   u   s       r7   c                	    R # )pchr2   rI   s   &r4   get_pch_suffixClangCompiler.get_pch_suffixu   s    r7   c               $    V ^8  d   QhRRRRRR/# )r0   pch_dirrO   headerrQ   rR   r2   )r3   s   "r4   r5   r6   x   s&     R R RS R[ Rr7   c                	b    R \         P                  P                  WP                  V4      4      .# )z-include-pch)ospathjoinget_pch_name)rI   r|   r}   s   &&&r4   get_pch_use_argsClangCompiler.get_pch_use_argsx   s'     W6G6G6O PQQr7   c                    V ^8  d   QhRRRR/# )r0   moder   rQ   rR   r2   )r3   s   "r4   r5   r6   ~   s     > >,< > >r7   c                	   < R .pV\         P                  J dL   VP                  RR.4       \        P                  ! V P
                  R4      '       d   VP                  R4       \        SV `!  V4      V,           # )z%-Werror=implicit-function-declarationz-Werror=unknown-warning-optionz$-Werror=unused-command-line-argumentz>=3.6.0z%-Werror=ignored-optimization-argument)	r   COMPILEextendr   version_compareversionappendrA   get_compiler_check_args)rI   r   myargsrJ   s   && r4   r   %ClangCompiler.get_compiler_check_args~   si    &  GG#+++MM;=cde''i@@EFw.t4v==r7   
extra_argsNdependenciesc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r0   funcnamerO   prefixr   zT.Optional[T.List[str]]r   z T.Optional[T.List['Dependency']]rQ   zT.Tuple[bool, bool]r2   )r3   s   "r4   r5   r6      s2     ? ?S ?# ?!8?#C?Ob?r7   c               	   < Vf   . p\        V P                  \        4      '       d9   \        P                  ! V P
                  R4      '       d   VP                  R4       \        SV `!  WVVR7      # )Nz>=8.0z-Wl,-no_weak_imports)r   r   )	rE   rF   r   r   r   r   r   rA   has_function)rI   r   r   r   r   rJ   s   &&&$$r4   r   ClangCompiler.has_function   sk     J dkk#5668;S;STXT`T`bi;j;j45w#H1= $ ? 	?r7   c                   V ^8  d   QhRR/# r0   rQ   rR   r2   )r3   s   "r4   r5   r6      s      k r7   c                	    \         P                  ! V P                  R 4      '       d   R.# \         P                  ! V P                  R4      '       d   R.# . # )z>=3.8.0z-fopenmpz>=3.7.0z-fopenmp=libomp)r   r   r   rx   s   &r4   openmp_flagsClangCompiler.openmp_flags   sH    ##DLL)<<<%%dllI>>%&& Ir7   c               $    V ^8  d   QhRRRRRR/# )r0   rF   rO   r   rQ   rR   r2   )r3   s   "r4   r5   r6      s!     8 8S 83 8; 8r7   c                	  < VR 8X  d   R.# VR8X  d   R.# VR8X  d   R.# \         P                  ! V4      '       d=   \         P                  ! V4      '       g   \        P                  ! RV R24      hRV 2.# \        SV `  W4      # )	eldz-fuse-ld=eldqcldz-fuse-ld=qcldmoldz-fuse-ld=moldzCannot find linker .	-fuse-ld=)shutilwhichr   MesonExceptionrA   use_linker_args)clsrF   r   rJ   s   &&&r4   r   ClangCompiler.use_linker_args   s     U?"##V#$$V#$$<<<<''--)&35 5x())w&v77r7   c                    V ^8  d   QhRRRR/# )r0   namerO   rQ   rR   r2   )r3   s   "r4   r5   r6      s     & &c &k &r7   c                	    R .# )z-Werror=attributesr2   )rI   r   s   &&r4   !get_has_func_attribute_extra_args/ClangCompiler.get_has_func_attribute_extra_args   s     %%%r7   c               $    V ^8  d   QhRRRRRR/# )r0   prelink_namerO   obj_listrR   rQ   z!T.Tuple[T.List[str], T.List[str]]r2   )r3   s   "r4   r5   r6      s'     E ES EK ELm Er7   c                	    \         P                  ! V P                  R 4      '       g   \         P                  ! R4      hV.RRV.V,           3# )z>=14zprelinking requires clang >=14z-rz-o)r   r   r   r   )rI   r   r   s   &&&r4   get_prelink_argsClangCompiler.get_prelink_args   sD    ''f==))*JKK~dL9HDDDr7   c                   V ^8  d   QhRR/# r   r2   )r3   s   "r4   r5   r6      s       r7   c                	    R .# )z
--coverager2   rx   s   &r4   get_coverage_link_args$ClangCompiler.get_coverage_link_args   s
    ~r7   c               $    V ^8  d   QhRRRRRR/# )r0   bitcoderd   ltorQ   rR   r2   )r3   s   "r4   r5   r6      s!     6 6d 6 6+ 6r7   c                	    V'       d   R .# . # )z-fembed-bitcoder2   )rI   r   r   s   &&&r4   get_embed_bitcode_args$ClangCompiler.get_embed_bitcode_args   s    &-!"525r7   targetthreadsr   defaultc               (    V ^8  d   QhRRRRRRRR/# )	r0   r   T.Optional[BuildTarget]r   intr   rO   rQ   rR   r2   )r3   s   "r4   r5   r6      s,      .E WZ #&7Br7   c               	4  < . pVR 8X  d   \        V P                  \        4      '       dI   \        P                  ! V P                  P
                  R4      '       g   \        P                  ! R4      hMb\        V P                  \        \        \        \        \        34      '       g.   \        P                  ! RV P                  P                   24      hVP                  RV 24       V# VR8X  g   Q R4       hVP                  \        SV `A  WR7      4       V# )thinz>=1.1z!LLVM's ThinLTO requires mold 1.1+zLLLVM's ThinLTO only works with bfd, gold, lld, lld-link, ld64, or mold, not z-flto=r   z#someone forgot to wire something up)r   r   )rE   rF   r   r   r   r   r   r   r   r   r	   r
   idr   r   rA   get_lto_compile_args)rI   r   r   r   argsrJ   s   &$$$ r4   r   "ClangCompiler.get_lto_compile_args   s   6>$++(9;;//0C0CWMM"112UVV N.@BVXik~  AU  .V  W  W--0|  ~B  ~I  ~I  ~L  ~L  }M  /N  O  OKK&(  9$K&KK$KK4F4TUr7   c                    V ^8  d   QhRRRR/# )r0   r   rR   rQ   r2   )r3   s   "r4   r5   r6      s      K K r7   c                	    \        V P                  \        4      '       dE   V Uu. uF7  q"P                  R 4      '       g   VP                  R4      '       d   TMR V 2NK9  	  up# V# u upi )z-Wl,r   )rE   rF   r   
startswith)rI   r   flags   && r4   linker_to_compiler_args%ClangCompiler.linker_to_compiler_args   s`    dkk#>??swxswkoOOF33t{7S7SD[_`d_eYffswxxK ys   1A'A'thinlto_cache_dirc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r0   r   r   r   r   r   rO   r   rk   rQ   rR   r2   )r3   s   "r4   r5   r6      s4      +B TW  #DS_jr7   c               	F   V P                  WVR 7      pVR8X  d/   Ve+   VP                  V P                  P                  V4      4       V^ 8  dR   \        P
                  ! V P                  R4      '       g   \        P                  ! R4      hVP                  RV 24       V# ))r   r   r   r   z>=4.0.0z2clang support for LTO threads requires clang >=4.0z-flto-jobs=)	r   r   rF   get_thinlto_cache_argsr   r   r   r   r   )rI   r   r   r   r   r   s   &$$$$ r4   get_lto_link_argsClangCompiler.get_lto_link_args   s    ((d(S6>/; KK::;LMNQ;++DLL)DD--.bccKK+gY/0r7   rf   )__name__
__module____qualname____firstlineno__r   r-   __annotations__r.   rB   rW   r[   r`   rh   rn   rs   ry   r   r   r   r   classmethodr   r   r   r   r   r   r   r   __static_attributes____classcell__rJ   s   @r4   r&   r&   5   sL   	B
 	%&*+()-.,J(  	)**+b*+*H& , , (&.&(;R> >4?;??FJ? ? 8 8,&
E
6 ]^ )2 "T Z[ &/VZ r7   r&   c                  F   a  ] tR t^tRtRtRtRtRtRt	R V 3R llt
R	tV ;t# )

ClangCStdszMixin class for clang based compilers for setting C standards.

This is used by both ClangCCompiler and ClangClCompiler, as they share
the same versions
z>=6.0.0z>=8.0.0z>=9.0.0z>=18.0.0z>=19.0.0c                   V ^8  d   QhRR/# r0   rQ   r   r2   )r3   s   "r4   r5   ClangCStds.__annotate__  s      7 r7   c                	   < \         SV `  4       p. R
Op\        P                  ! V P                  V P
                  4      '       d   VR.,          p\        P                  ! V P                  V P                  4      '       d   VR.,          p\        P                  ! V P                  V P                  4      '       d   VR.,          p\        P                  ! V P                  V P                  4      '       d   VR.,          p\        P                  ! V P                  V P                  4      '       d   VR.,          pV P                  R4      pW,          p\        V\        P                  4      '       g   Q R4       hVP                  VRR	7       V# )c89c17c18c2xc23c2ystdfor mypyTgnu)r   c99c11)rA   get_optionsr   r   r   _C17_VERSION_C18_VERSION_C2X_VERSION_C23_VERSION_C2Y_VERSIONform_compileropt_keyrE   r   UserStdOptionset_versionsrI   optsstdskeystd_optrJ   s   &    r4   r   ClangCStds.get_options  s,   w"$$ ##DLL$2C2CDDUGOD##DLL$2C2CDDUGOD##DLL$2C2CDDUGOD##DLL$2C2CDDUGOD##DLL$2C2CDDUGOD''.)'7#8#899E:E9Tt,r7   r2   )r   r   r   r   __doc__r   r   r   r   r   r   r   r   r   s   @r4   r   r      s-     LLLLL r7   r   c                  :   a  ] tR tRtRtRtRtR V 3R lltRtV ;t	# )ClangCPPStdsi!  zgMixin class for clang based compilers for setting C++ standards.

This is used by the ClangCPPCompiler
z>=12.0.0z>=17.0.0c                   V ^8  d   QhRR/# r   r2   )r3   s   "r4   r5   ClangCPPStds.__annotate__+  s      7 r7   c                	  < \         SV `  4       p. ROp\        P                  ! V P                  V P
                  4      '       d   VP                  R4       \        P                  ! V P                  V P                  4      '       d   VP                  R4       V P                  R4      pW,          p\        V\        P                  4      '       g   Q R4       hVP                  VRR7       V# )c++98zc++23zc++26r   r   Tr   )r  zc++03zc++11zc++14zc++17zc++1zzc++2azc++20)rA   r   r   r   r   _CPP23_VERSIONr   _CPP26_VERSIONr   rE   r   r   r   r   s   &    r4   r   ClangCPPStds.get_options+  s    w"$
 ##DLL$2E2EFFKK ##DLL$2E2EFFKK ''.)'7#8#899E:E9Tt,r7   r2   )
r   r   r   r   r  r  r	  r   r   r   r   s   @r4   r  r  !  s    
  NN r7   r  )'__conditional_annotations__
__future__r   r   r   typingT r   r   linkers.linkersr   r   r   r	   r
   r   r   r   	compilersr   r   r   TYPE_CHECKINGr   r   r   buildr   r   CompilerMixinBaseobjectr   r   r    clang_lang_mapr&   r   r  )r  s   @r4   <module>r     s   # " 6 	    ^ ^ ^   (  ???5*$$  '(+,)*. *  R%%%%%%5 1  	5
Mo	EO EP!" !H$ r7   