
    -Ph$                    F   d dl mZ d dlZd dlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl"m%Z%m&Z& ddl'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl3m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z;m<Z< ej=        r3ddlm>Z> ddl?m@Z@ ddlAmBZB dd lCmDZD dd!lEmFZF dd"l
mGZG dd#l9mHZH dd$lImJZJ e<ZKneLZKg d%ZMeMd& eMD             z  ZMeMg d'z  ZM G d( d)ee<          ZN G d* d+e,e+eN          ZO G d, d-eO          ZP G d. d/eeeO          ZQ G d0 d1e2eO          ZR G d2 d3eeN          ZS G d4 d5e$e#eN          ZT G d6 d7e0eN          ZU G d8 d9e0eN          ZV G d: d;e.eN          ZW G d< d=e(eN          ZX G d> d?eO          ZY G d@ dAeK          ZZ G dB dCe eZeN          Z[ G dD dEe,e!eZeN          Z\ G dF dGe)eZeN          Z] G dH dIe]          Z^ G dJ dKeeN          Z_ G dL dMeeN          Z` G dN dOeeN          Za G dP dQeeN          Zb G dR dSeeN          Zc G dT dUec          Zd G dV dWec          Ze G dX dYe4eN          Zf G dZ d[e4eN          Zg G d\ d]e8eN          ZhdS )^    )annotationsN   )options)	OptionKey)mlog)MesonExceptionversion_compare   )C_FUNC_ATTRIBUTES)AppleCompilerMixinAppleCStdsMixin)CLikeCompiler)CcrxCompiler)Xc16Compiler)CompCertCompiler)
TICompiler)ArmCompilerArmclangCompiler)MSVCCompilerClangClCompiler)GnuCompilerGnuCStds)gnu_common_warning_argsgnu_c_warning_args)IntelGnuLikeCompilerIntelVisualStudioLikeCompiler)ClangCompiler
ClangCStds)ElbrusCompiler)PGICompiler)EmscriptenMixin)MetrowerksCompiler)mwccarm_instruction_set_argsmwcceppc_instruction_set_args)TaskingCompiler)gnu_winlibsmsvc_winlibsCompiler)MutableKeyedOptionDictType)
Dependency)MachineInfo)Environment)DynamicLinker)MachineChoice)CompileCheckMode)BuildTarget)c89c9xc90c99c1xc11c17c18c2xc23c2yc                (    g | ]}d |dd          S )gnur
   N ).0stds     V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/c.py
<listcomp>rB   6   s&    111_3qrr7__111    )iso9899:1990iso9899:199409iso9899:1999iso9899:2011iso9899:2017iso9899:2018c                  Z     e Zd Zd)dZdZ	 	 d*d+dZd,dZd-dZdddd.d&Zd/ fd(Z	 xZ
S )0	CCompilernamestrreturnc                `    	 t           |         S # t          $ r t          d| d          w xY w)NzUnknown function attribute "")r   KeyErrorr   )selfrL   s     rA   attribute_check_funczCCompiler.attribute_check_func;   sL    	I$T** 	I 	I 	I !G!G!G!GHHH	Is    -cNccacheT.List[str]exelistversionfor_machiner.   is_crossboolinfo'MachineInfo'linkerT.Optional['DynamicLinker']full_versionT.Optional[str]c	                h    t          j        | ||||||||	  	         t          j        |            d S )N)rZ   r`   r^   )r(   __init__r   	rR   rU   rW   rX   rY   rZ   r\   r^   r`   s	            rA   rc   zCCompiler.__init__C   sL    
 	$+t#+,v	W 	W 	W 	Wt$$$$$rC   c                    dgS )Nz	-nostdincr>   rR   s    rA   get_no_stdinc_argszCCompiler.get_no_stdinc_argsL   s
    }rC   work_direnvironment'Environment'Nonec                6    d}|                      ||d|          S )Nz.int main(void) { int class=0; return class; }
zsanitycheckc.c)_sanity_check_impl)rR   rh   ri   codes       rA   sanity_checkzCCompiler.sanity_checkO   s#    @&&x>NPTUUUrC   
extra_argsdependencieshnamesymbolprefixenvrq   IT.Union[None, T.List[str], T.Callable[['CompileCheckMode'], T.List[str]]]rr    T.Optional[T.List['Dependency']]T.Tuple[bool, bool]c               Z    |||d}d}|                       |j        di ||||          S )N)ru   headerrt   z{prefix}
        #include <{header}>
        int main(void) {{
            /* If it's not defined as a macro, try to use as a symbol */
            #ifndef {symbol}
                {symbol};
            #endif
            return 0;
        }}rp   r>   )compilesformat)	rR   rs   rt   ru   rv   rq   rr   fargsts	            rA   has_header_symbolzCCompiler.has_header_symbolS   sR     "UfEE }}XQX....
*6  8 8 	8rC   'MutableKeyedOptionDictType'c                    t                                                      }|                     d          }|                    |t	          j        dt                    i           |S )Nr@   rT   )superget_optionsform_compileropt_keyupdater   UserStdOptionALL_STDSrR   optskey	__class__s      rA   r   zCCompiler.get_optionsd   s_    ww""$$''..&sH55
 	 	 	 rC   )rL   rM   rN   rM   NNrU   rV   rW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   rN   rV   )rh   rM   ri   rj   rN   rk   )rs   rM   rt   rM   ru   rM   rv   rj   rq   rw   rr   rx   rN   ry   rN   r   )__name__
__module____qualname__rS   languagerc   rg   ro   r   r   __classcell__r   s   @rA   rK   rK   :   s        I I I I H 8<15% % % % %   V V V V swKO8 8 8 8 8 8"         rC   rK   c                  D     e Zd Z	 	 	 d d!dZd" fdZd#d$dZd#d%dZ xZS )&ClangCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   definesT.Optional[T.Dict[str, str]]r`   ra   c
                    t                               | ||||||||		  	         t          j        | |           ddg}
g |
|
dgz   |
ddgz   dgd| _        d S Nr^   r`   -Wall-Winvalid-pch-Wextra
-Wpedanticz-Weverything0123
everything)rK   rc   r   	warn_argsrR   rU   rW   rX   rY   rZ   r\   r^   r   r`   default_warn_argss              rA   rc   zClangCCompiler.__init__o   s    
 	4';RV_e  uA  	B  	B  	BtW---$o6!00I;>0I|3LL)7(8	: :rC   rN   r   c                8   t                                                      }| j                                        s| j                                        rF|                     d          }t          j        |                     |          dt                    ||<   |S Nwinlibsz*Standard Windows libraries to link against
r   r   r\   
is_windows	is_cygwinr   r   UserStringArrayOptionmake_option_namer&   r   s      rA   r   zClangCCompiler.get_options}       ww""$$9!! 	TY%8%8%:%: 	++I66C5%%c**< DI rC   targetr0   rv   r,   
subprojectc                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S Nr@   none-std=get_compileropt_value
isinstancerM   appendrR   r   rv   r   argsr@   s         rA   get_option_std_argsz"ClangCCompiler.get_option_std_args   Z    ((VZHH#s#####&==KK#&&&rC   'BuildTarget'rj   c                ,   | j                                         s| j                                         ra|                     d|||          }t	          |t
                    sJ |                                }|D ]}t	          |t                    sJ |S g S Nr   r\   r   r   r   r   listcopyrM   rR   r   rv   r   retvallibsls          rA   get_option_link_argsz#ClangCCompiler.get_option_link_args   s    9!! 	TY%8%8%:%: 	//	3
SSFfd+++++ &D * *!!S))))))K	rC   NNNrU   rV   rW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r   r   r`   ra   r   Nr   r0   rv   r,   r   ra   rN   rV   r   r   rv   rj   r   ra   rN   rV   )r   r   r   rc   r   r   r   r   r   s   @rA   r   r   m   s         8<9=15	: : : : :                 rC   r   c                      e Zd ZdZdS )ArmLtdClangCCompilerarmltdclangNr   r   r   idr>   rC   rA   r   r      s        	BBBrC   r   c                      e Zd ZdZdS )AppleClangCCompilerzHandle the differences between Apple Clang and Vanilla Clang.

    Right now this just handles the differences between the versions that new
    C standards were added.
    N)r   r   r   __doc__r>   rC   rA   r   r      s           rC   r   c                  2    e Zd ZdZdZdZdZdZ	 	 	 dddZdS )EmscriptenCCompiler
emscriptenz	>=1.38.35z>=3.1.45NrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r   r   r`   ra   c
                    |st          d          t          |d          st          d          t                              | |||||||||	
  
         d S )Nz;Emscripten compiler can only be used for cross compilation.z	>=1.39.19z$Meson requires Emscripten >= 1.39.19)r^   r   r`   )r   r	   r   rc   
rR   rU   rW   rX   rY   rZ   r\   r^   r   r`   s
             rA   rc   zEmscriptenCCompiler.__init__   s    
  	` !^___w44 	I !GHHHfgwX $V(/l 	  	L 	L 	L 	L 	LrC   r   r   )	r   r   r   r   _C17_VERSION_C18_VERSION_C2X_VERSION_C23_VERSIONrc   r>   rC   rA   r   r      sZ        	B LLLL 8<9=15	L L L L L L LrC   r   c                  F     e Zd ZdZ	 	 dd dZd! fdZd"d#dZd"d$dZ xZS )%ArmclangCCompilerz
    Keil armclang
    NrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                    t                               | ||||||||	  	         t          j        |            ddg}	g |	|	dgz   |	ddgz   dgd| _        d S r   )rK   rc   r   r   
rR   rU   rW   rX   rY   rZ   r\   r^   r`   r   s
             rA   rc   zArmclangCCompiler.__init__   s     	4';\ 	 	K 	K 	K!$'''$o6!00I;>0I|3LL)7(8	: :rC   rN   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    g dd           |S )Nr@   for mypy)r3   r4   r6   Tr=   r   r   r   r   r   r   set_versionsrR   r   r   std_optr   s       rA   r   zArmclangCCompiler.get_options   sz    ww""$$''..s)'7#899EE:EEE222===rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S r   r   r   s         rA   r   z%ArmclangCCompiler.get_option_std_args   r   rC   r   rj   c                    g S r   r>   )rR   r   rv   r   s       rA   r   z&ArmclangCCompiler.get_option_link_args       	rC   r   r   r   r   r   r   )	r   r   r   r   rc   r   r   r   r   r   s   @rA   r   r      s          8<15: : : : :                 rC   r   c                  P     e Zd ZdZ	 	 	 d$d%dZd& fdZd'd(dZd'd)d Zd*d#Z xZ	S )+GnuCCompilerz>=3.4.0NrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r   r   r`   ra   c
                ^   t                               | ||||||||		  	         t          j        | |           dg}
t          | j        | j                  r|
dgz  }
g |
|
dgz   |
ddgz   |
ddgz   |                     t                    z   |                     t                    z   d| _	        d S )Nr   r   r   r   r   r   )
rK   rc   r   r	   rX   _INVALID_PCH_VERSIONsupported_warn_argsr   r   r   r   s              rA   rc   zGnuCCompiler.__init__   s    
 	4';RV_e  uA  	B  	B  	BT7+++$I4<)BCC 	3/!22!00I;>0I|3LL):i=V)V)-)A)ABY)Z)Z*[)-)A)ABT)U)U*V	X XrC   rN   r   c                8   t                                                      }| j                                        s| j                                        rF|                     d          }t          j        |                     |          dt                    ||<   |S r   r   r   s      rA   r   zGnuCCompiler.get_options  r   rC   r   r0   rv   r,   r   c                    g }t          d| j                  }|                     ||||          }t          |t                    sJ |dk    r|                    d|z              |S )Nc_std)machiner   r   )r   rY   r   r   rM   r   )rR   r   rv   r   r   r   r@   s          rA   r   z GnuCCompiler.get_option_std_args  so    )9:::((c6:FF#s#####&==KK#&&&rC   r   rj   c                ,   | j                                         s| j                                         ra|                     d|||          }t	          |t
                    sJ |                                }|D ]}t	          |t                    sJ |S g S r   r   r   s          rA   r   z!GnuCCompiler.get_option_link_args  s    9!! 	TY%8%8%:%: 	//	3
SSFfd+++++ &D * *!!S))))))K	rC   pch_dirr{   c                F    ddt           j                            |          gS )Nz-fpch-preprocessz-include)ospathbasename)rR   r   r{   s      rA   get_pch_use_argszGnuCCompiler.get_pch_use_args   s    "J0@0@0H0HIIrC   r   r   r   r   r   r   )r   rM   r{   rM   rN   rV   )
r   r   r   r   rc   r   r   r   r   r   r   s   @rA   r   r      s        $ 8<9=15	X X X X X$         
 
 
 
 
J J J J J J J JrC   r   c                      e Zd Z	 	 dddZdS )PGICCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S Nr   rK   rc   r    rd   s	            rA   rc   zPGICCompiler.__init__%  N     	4';\ 	 	K 	K 	KT"""""rC   r   r   )r   r   r   rc   r>   rC   rA   r  r  $  s5         8<15# # # # # # #rC   r  c                  2     e Zd ZdZ	 	 dddZd fdZ xZS )NvidiaHPC_CCompiler
nvidia_hpcNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  r  rd   s	            rA   rc   zNvidiaHPC_CCompiler.__init__2  r  rC   rN   r   c                    t                                                      }g d}||                     d                   }t          |t          j                  s
J d            |                    |d           |S )N)r1   r3   r4   r6   r7   r8   r@   r   Tr   r   )rR   r   cppstd_choicesr   r   s       rA   r   zNvidiaHPC_CCompiler.get_options:  sz    ww""$$CCCt00778'7#899EE:EEE^666rC   r   r   r   )r   r   r   r   rc   r   r   r   s   @rA   r  r  .  sc        	B 8<15# # # # #         rC   r  c                  D     e Zd Z	 	 	 d"d#dZd$ fdZdddd% fd!Z xZS )&ElbrusCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r   r   r`   ra   c
                t    t                               | ||||||||		  	         t          j        |            d S r  )rK   rc   r   r   s
             rA   rc   zElbrusCCompiler.__init__D  sN    
 	4';\ 	 	K 	K 	K%%%%%rC   rN   r   c                   t                                                      }g d}|g dz  }t          | j        d          r|ddgz  }t          | j        d          rt          | j        d          r|g dz  }t          | j        d	          r|g dz  }t          | j        d
          r|g dz  }|                     d          }||         }t          |t          j                  s
J d            |                    |           |S )N)r1   r2   r4   gnu89gnu9xgnu99)rD   rE   rF   z	>=1.20.00r6   gnu11z	>=1.21.00z<1.22.00)r3   r5   gnu90gnu1xrG   z	>=1.23.00z	>=1.26.00)r7   r8   rH   rI   gnu17gnu18r@   r   	r   r   r	   rX   r   r   r   r   r   rR   r   stdsr   r   r   s        rA   r   zElbrusCCompiler.get_optionsM  s4   ww""$$???BBBB4<55 	%UG$$D4<55 	E/$,Xb:c:c 	EDDDDD4<55 	EDDDDD4<55 	UTTTTD''..s)'7#899EE:EEET"""rC   rp   funcnameru   rv   rj   rq   T.Optional[T.List[str]]rr   rx   ry   c               `    |dk    rdS t                                          |||||          S )Nlchmod)FFrp   )r   has_function)rR   r  ru   rv   rq   rr   r   s         rA   r   zElbrusCCompiler.has_functiona  sE     x<77''&#3=5A ( C C CrC   r   r   r   )r  rM   ru   rM   rv   rj   rq   r  rr   rx   rN   ry   )r   r   r   rc   r   r   r   r   s   @rA   r  r  C  s         8<9=15	& & & & &     * <@FJC C C C C C C C C C C CrC   r  c                  8     e Zd Z	 	 dddZd fdZdddZ xZS ) IntelCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                    t                               | ||||||||	  	         t          j        |            d| _        ddg}	g |	dgz   |	ddgz   |	ddgz   |	dgz   d| _        d S )Nr   zc-headerr   z-w3z-diag-disable:remarkr   r   )rK   rc   r   lang_headerr   r   s
             rA   rc   zIntelCCompiler.__init__m  s     	4';\ 	 	K 	K 	K%d+++%$e,!04J3KK0I?U3VV0I?U3VV(9YK(G	I IrC   rN   r   c                6   t                                                      }ddg}t          | j        d          r|dgz  }|                     d          }||         }t          |t          j                  s
J d            |                    |d           |S )	Nr1   r4   z>=16.0.0r6   r@   r   Tr   r  r  s        rA   r   zIntelCCompiler.get_options|  s    ww""$$u~4<44 	UGOD''..s)'7#899EE:EEETt,,,rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S r   r   r   s         rA   r   z"IntelCCompiler.get_option_std_args  sZ    ((VZHH#s#####&==KK#&&&rC   r   r   r   r   r   r   r   r   rc   r   r   r   r   s   @rA   r"  r"  l  s|         8<15I I I I I	 	 	 	 	 	        rC   r"  c                      e Zd ZdZdS )IntelLLVMCCompilerz
intel-llvmNr   r>   rC   rA   r)  r)    s        	BBBrC   r)  c                  .     e Zd ZdZd fdZdddZ xZS )VisualStudioLikeCCompilerMixinz3Shared methods that apply to MSVC-like C compilers.rN   r)   c                    t                                                      }|                     d          }t          j        |                     |          dt                    ||<   |S r   )r   r   r   r   r   r   r'   r   s      rA   r   z*VisualStudioLikeCCompilerMixin.get_options  s_    ww""$$''	221!!#&&8 S	 rC   Nr   r   rv   rj   r   ra   rV   c                    |                      d|||          }t          |t                    sJ |                                }|D ]}t          |t                    sJ |S r   )r   r   r   r   rM   r   s          rA   r   z3VisualStudioLikeCCompilerMixin.get_option_link_args  sk    ++IsFJOO&$'''''"KKMM 	& 	&Aa%%%%%%rC   )rN   r)   r   r   )r   r   r   r   r   r   r   r   s   @rA   r+  r+    s\        ==             rC   r+  c                  @     e Zd ZdZdZ	 	 dddZd fdZdd dZ xZS )!VisualStudioCCompilerz>=19.28NrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r   r^   r_   r`   ra   c
                v    t                               | ||||||||		  	         t          j        | |           d S r  )rK   rc   r   )
rR   rU   rW   rX   rY   rZ   r\   r   r^   r`   s
             rA   rc   zVisualStudioCCompiler.__init__  sP     	4';(4 	 	6 	6 	6 	dF+++++rC   rN   r   c                   t                                                      }ddg}t          | j        | j                  r|dgz  }t          | j        | j                  r|ddgz  }|                     d          }||         }t          |t          j	                  s
J d            |
                    |dd	           |S )
Nr1   r4   r6   r7   r8   r@   r   T)r=   gnu_deprecated)r   r   r	   rX   _C11_VERSIONr   r   r   r   r   r   r  s        rA   r   z!VisualStudioCCompiler.get_options  s    ww""$$u~4<):;; 	UGOD4<):;; 	#UEN"D''..s)'7#899EE:EEETtDAAArC   r0   rv   r,   r   c                    g }|                      d|||          }|dv r|                    d           n|dv r|                    d           |S )Nr@   >   r6   z/std:c11>   r7   r8   z/std:c17)r   r   r   s         rA   r   z)VisualStudioCCompiler.get_option_std_args  sb    ((VZHH '>>KK
####N""KK
###rC   r   )rU   rV   rW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r   rM   r^   r_   r`   ra   r   r   r   )	r   r   r   r3  r   rc   r   r   r   r   s   @rA   r/  r/    s        LL 8<15, , , , ,     	 	 	 	 	 	 	 	 	rC   r/  c                  &    e Zd Z	 	 dddZdddZdS )ClangClCCompilerNrW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r   r^   r_   r`   ra   c	                v    t                               | g |||||||	  	         t          j        | |           d S r  )rK   rc   r   	rR   rW   rX   rY   rZ   r\   r   r^   r`   s	            rA   rc   zClangClCCompiler.__init__  sP     	4Wg{H(4 	 	6 	6 	6 	 v.....rC   r0   rv   r,   r   rN   c                |    |                      d|||          }t          |t                    sJ |dk    rd| gS g S )Nr@   r   z/clang:-std=)r   r   rM   )rR   r   rv   r   r@   s        rA   r   z$ClangClCCompiler.get_option_std_args  sP    ((VZHH#s#####&==(3(())	rC   r   rW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r   rM   r^   r_   r`   ra   r   r   )r   r   r   rc   r   r>   rC   rA   r6  r6    sN         8<15/ / / / /      rC   r6  c                  <     e Zd ZdZ	 	 dddZd fdZdddZ xZS ) IntelClCCompilerz!Intel "ICL" compiler abstraction.NrW   rV   rX   rM   rY   r.   rZ   r[   r\   r]   r   r^   r_   r`   ra   c	                v    t                               | g |||||||	  	         t          j        | |           d S r  )rK   rc   r   r8  s	            rA   rc   zIntelClCCompiler.__init__  sP     	4Wg{H(4 	 	6 	6 	6 	&.tV<<<<<rC   rN   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    g d           |S Nr@   r   )r1   r4   r6   r   r   s       rA   r   zIntelClCCompiler.get_options  u    ww""$$''..s)'7#899EE:EEE222333rC   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    rt          j        dd           n|dk    r|                    d|z              |S )Nr   r1   zUICL doesn't explicitly implement c89, setting the standard to 'none', which is close.T)oncer   z/Qstd:)r   r   rM   r   logr   r   s         rA   r   z$IntelClCCompiler.get_option_std_args  s}    ((CLL#s#####%<<HlswxxxxxF]]KK3'''rC   r   r:  r   r   r   )r   r   r   r   rc   r   r   r   r   s   @rA   r<  r<    s}        ++ 8<15= = = = =             rC   r<  c                      e Zd ZdZdS )IntelLLVMClCCompilerzintel-llvm-clNr   r>   rC   rA   rE  rE    s        	BBBrC   rE  c                  8     e Zd Z	 	 dddZd fdZdddZ xZS ) ArmCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r   rd   s	            rA   rc   zArmCCompiler.__init__
  sN     	4';(4 	 	6 	6 	6 	T"""""rC   rN   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    g d           |S r?  r   r   s       rA   r   zArmCCompiler.get_options  r@  rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S Nr@   r   z--r   r   s         rA   r   z ArmCCompiler.get_option_std_args  Z    ((VZHH#s#####&==KKs
###rC   r   r   r   r   r   r'  r   s   @rA   rG  rG  	  sw         8<15# # # # #             rC   rG  c                  p     e Zd Z	 	 d$d%dZd&dZd' fdZd&dZd(d)dZd&dZd&dZ	d*dZ
d&d Zd+d#Z xZS ),CcrxCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r   rd   s	            rA   rc   zCcrxCCompiler.__init__%  N     	4';\ 	 	K 	K 	Kd#####rC   rN   c                    dgS )Nz-nologor>   rf   s    rA   get_always_argszCcrxCCompiler.get_always_args.  
    {rC   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    ddg           |S Nr@   r   r1   r4   r   r   s       rA   r   zCcrxCCompiler.get_options1  r    ww""$$''..s)'7#899EE:EEEeU^,,,rC   c                    g S r   r>   rf   s    rA   rg   z CcrxCCompiler.get_no_stdinc_args9  r   rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d           n|dk    r|                    d           |S )Nr@   r1   z-lang=cr4   z	-lang=c99r   r   s         rA   r   z!CcrxCCompiler.get_option_std_args<  st    ((VZHH#s#####%<<KK	""""E\\KK$$$rC   c                    g S r   r>   rf   s    rA   get_compile_only_argsz#CcrxCCompiler.get_compile_only_argsF  r   rC   c                    dgS )Nz-optimize=0r>   rf   s    rA   get_no_optimization_argsz&CcrxCCompiler.get_no_optimization_argsI  s
    rC   c                    d| gS )Nz-output=obj=r>   rR   r   s     rA   get_output_argszCcrxCCompiler.get_output_argsL  s    'v''((rC   c                    dgS Nz-change_message=errorr>   rf   s    rA   get_werror_argszCcrxCCompiler.get_werror_argsO      '((rC   r   	is_systemc                    |dk    rd}d|z   gS )N .z	-include=r>   rR   r   rd  s      rA   get_include_argszCcrxCCompiler.get_include_argsR  s    2::Dd"##rC   r   r   r   r   r   r   r   rM   rN   rV   r   rM   rd  r[   rN   rV   )r   r   r   rc   rR  r   rg   r   rZ  r\  r_  rb  ri  r   r   s   @rA   rN  rN  $  s        8<15$ $ $ $ $                     ) ) ) )) ) ) )$ $ $ $ $ $ $ $rC   rN  c                  h     e Zd Z	 	 d#d$dZd% fdZd&dZd'd(dZd&dZd&dZd)dZ	d&dZ
d*d"Z xZS )+Xc16CCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r   rd   s	            rA   rc   zXc16CCompiler.__init__Y  rP  rC   rN   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    ddgd           |S )Nr@   r   r1   r4   Tr   r   r   s       rA   r   zXc16CCompiler.get_optionsa  sw    ww""$$''..s)'7#899EE:EEEeU^666rC   c                    g S r   r>   rf   s    rA   rg   z Xc16CCompiler.get_no_stdinc_argsi  r   rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r-|                    d           |                    d|z              |S )Nr@   r   z-ansir   r   r   s         rA   r   z!Xc16CCompiler.get_option_std_argsl  sl    ((VZHH#s#####&==KK   KK#&&&rC   c                    g S r   r>   rf   s    rA   rZ  z#Xc16CCompiler.get_compile_only_argsu  r   rC   c                    dgS Nz-O0r>   rf   s    rA   r\  z&Xc16CCompiler.get_no_optimization_argsx  	    wrC   c                    d| gS Nz-or>   r^  s     rA   r_  zXc16CCompiler.get_output_args{      VrC   c                    dgS ra  r>   rf   s    rA   rb  zXc16CCompiler.get_werror_args~  rc  rC   r   rd  c                    |dk    rd}d|z   gS Nrf  rg  z-Ir>   rh  s      rA   ri  zXc16CCompiler.get_include_args      2::Dt}rC   r   r   r   r   r   r   rj  rk  )r   r   r   rc   r   rg   r   rZ  r\  r_  rb  ri  r   r   s   @rA   rm  rm  X  s         8<15$ $ $ $ $                     ) ) ) )       rC   rm  c                  N     e Zd Z	 	 dddZd fdZddZd dZddZd!dZ xZ	S )"CompCertCCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r   rd   s	            rA   rc   zCompCertCCompiler.__init__  sN     	4';\ 	 	K 	K 	K!$'''''rC   rN   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    ddg           |S rU  r   r   s       rA   r   zCompCertCCompiler.get_options  rV  rC   c                    dgS rt  r>   rf   s    rA   r\  z*CompCertCCompiler.get_no_optimization_args  ru  rC   r   c                    d| gS rw  r>   r^  s     rA   r_  z!CompCertCCompiler.get_output_args  rx  rC   c                    dgS )Nz-Werrorr>   rf   s    rA   rb  z!CompCertCCompiler.get_werror_args  rS  rC   r   rd  c                    |dk    rd}d|z   gS r{  r>   rh  s      rA   ri  z"CompCertCCompiler.get_include_args  r|  rC   r   r   r   r   rj  rk  )
r   r   r   rc   r   r\  r_  rb  ri  r   r   s   @rA   r~  r~    s         8<15( ( ( ( (                     rC   r~  c                  H     e Zd Z	 	 dddZddZd  fdZddZd!d"dZ xZS )#TICCompilerNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r   rd   s	            rA   rc   zTICCompiler.__init__  sN     	4';\ 	 	K 	K 	KD!!!!!rC   rN   c                    g S r   r>   rf   s    rA   rR  zTICCompiler.get_always_args  r   rC   r   c                    t                                                      }|                     d          }||         }t          |t          j                  s
J d            |                    g d           |S r?  r   r   s       rA   r   zTICCompiler.get_options  r@  rC   c                    g S r   r>   rf   s    rA   rg   zTICCompiler.get_no_stdinc_args  r   rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S rK  r   r   s         rA   r   zTICCompiler.get_option_std_args  rL  rC   r   r   r   r   r   r   )	r   r   r   rc   rR  r   rg   r   r   r   s   @rA   r  r    s         8<15" " " " "                   rC   r  c                      e Zd ZdZdS )C2000CCompilerc2000Nr   r>   rC   rA   r  r    s        	BBBrC   r  c                      e Zd ZdZdS )C6000CCompilerc6000Nr   r>   rC   rA   r  r    s        	BBBrC   r  c                  D     e Zd ZdZ	 	 dd dZd!dZd" fdZd#d$dZ xZS )%MetrowerksCCompilerARMmwccarmNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  rK   rc   r"   rd   s	            rA   rc   zMetrowerksCCompilerARM.__init__  N     	4';\ 	 	K 	K 	K#D)))))rC   instruction_setrN   r  c                ,    t          j        |d           S r   )r#   getrR   r  s     rA   get_instruction_set_argsz/MetrowerksCCompilerARM.get_instruction_set_args  s    +/FFFrC   r   c                v    t                                                      }|                     |dg           |S Nr4   r   r   _update_language_stdsrR   r   r   s     rA   r   z"MetrowerksCCompilerARM.get_options  5    ww""$$""4%111rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r*|                    d           |                    |           |S )Nr@   r   z-langr   r   s         rA   r   z*MetrowerksCCompilerARM.get_option_std_args  sh    ((VZHH#s#####&==KK   KKrC   r   r   r  rM   rN   r  r   r   r   	r   r   r   r   rc   r  r   r   r   r   s   @rA   r  r    s        	B 8<15* * * * *G G G G     
        rC   r  c                  D     e Zd ZdZ	 	 dd dZd!dZd" fdZd#d$dZ xZS )%"MetrowerksCCompilerEmbeddedPowerPCmwcceppcNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  r  rd   s	            rA   rc   z+MetrowerksCCompilerEmbeddedPowerPC.__init__  r  rC   r  rN   r  c                ,    t          j        |d           S r   )r$   r  r  s     rA   r  z;MetrowerksCCompilerEmbeddedPowerPC.get_instruction_set_args  s    ,0$GGGrC   r   c                v    t                                                      }|                     |dg           |S r  r  r  s     rA   r   z.MetrowerksCCompilerEmbeddedPowerPC.get_options  r  rC   r   r0   rv   r,   r   c                    g }|                      d|||          }t          |t                    sJ |dk    r|                    d|z              |S )Nr@   r   z-lang r   r   s         rA   r   z6MetrowerksCCompilerEmbeddedPowerPC.get_option_std_args  sZ    ((VZHH#s#####&==KK3'''rC   r   r   r  r   r   r   r  r   s   @rA   r  r    s        	B 8<15* * * * *H H H H     
        rC   r  c                       e Zd ZdZ	 	 dddZdS )TaskingCCompilertaskingNrU   rV   rW   rX   rM   rY   r.   rZ   r[   r\   r]   r^   r_   r`   ra   c	                t    t                               | ||||||||	  	         t          j        |            d S r  )rK   rc   r%   rd   s	            rA   rc   zTaskingCCompiler.__init__  sN     	4';\ 	 	K 	K 	K &&&&&rC   r   r   )r   r   r   r   rc   r>   rC   rA   r  r    s:        	B 8<15' ' ' ' ' ' 'rC   r  )i
__future__r   os.pathr   typingTrf  r   r   r   mesonlibr   r	   c_function_attributesr   mixins.appler   r   mixins.cliker   mixins.ccrxr   mixins.xc16r   mixins.compcertr   	mixins.tir   
mixins.armr   r   mixins.visualstudior   r   
mixins.gnur   r   r   r   mixins.intelr   r   mixins.clangr   r   mixins.elbrusr   
mixins.pgir    mixins.emscriptenr!   mixins.metrowerksr"   r#   r$   mixins.taskingr%   	compilersr&   r'   r(   TYPE_CHECKINGr)   rr   r*   	envconfigr+   ri   r,   linkers.linkersr-   r.   r/   buildr0   CompilerMixinBaseobjectr   rK   r   r   r   r   r   r   r  r  r  r"  r)  r+  r/  r6  r<  rE  rG  rN  rm  r~  r  r  r  r  r  r  r>   rC   rA   <module>r     s  
 # " " " " "                        6 6 6 6 6 6 6 6 4 4 4 4 4 4 = = = = = = = = ' ' ' ' ' ' % % % % % % % % % % % % - - - - - - ! ! ! ! ! ! 5 5 5 5 5 5 5 5 > > > > > > > > - - - - - - - - C C C C C C C C M M M M M M M M 3 3 3 3 3 3 3 3 ) ) ) ) ) ) # # # # # # . . . . . . 1 1 1 1 1 1 Z Z Z Z Z Z Z Z + + + + + +          ? 444444))))))''''''))))))//////((((((++++++###### XXX 11111 1 nnn n0 0 0 0 0x 0 0 0f* * * * *Z	 * * *Z    >   
    ,o~   L L L L L/> L L L8$ $ $ $ $() $ $ $N6J 6J 6J 6J 6J8[) 6J 6J 6Jr# # # # #;	 # # #    +y   *&C &C &C &C &Cni &C &C &CR! ! ! ! !)9 ! ! !H       
    %6   ,$ $ $ $ $L*H) $ $ $N    z?4RT]   $    46TV_   @    +   
    ;	   61$ 1$ 1$ 1$ 1$L) 1$ 1$ 1$h, , , , ,L) , , ,\    ()   >    *i   @    [       [       /   8    );Y   6	' 	' 	' 	' 	'	 	' 	' 	' 	' 	'rC   