
    -Ph$0                       U d dl mZ d dlZd dlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd	lmZ ej        rdd
lmZ ddlmZ ddlmZ ddlmZ g dgdgdgdgdgdgdZded<    G d de          Z G d de          Z G d de          Z G d de          Z G d dee          Z  G d dee          Z! G d  d!e!          Z" G d" d#e!          Z#dS )$    )annotationsN   )EnvironmentExceptionget_meson_command)	OptionKey   )Compiler)MetrowerksCompilermwasmarm_instruction_set_argsmwasmeppc_instruction_set_args)
TICompiler)Environment)DynamicLinker)MachineChoice)MachineInfoz-O0z-O1z-Ox)plain0g123sT.Dict[str, T.List[str]]nasm_optimization_argsc                       e Zd ZU dZdZg g dg dg dg ddZded<   	 	 d;d< fdZd=dZd>dZ	d>dZ
d?d Zd@d"ZdAd$ZdBd&ZdCd'ZdDd*ZdEd/Zd>d0ZdFd3ZdGd6ZdHd9ZdHd:Z xZS )INasmCompilernasm)z/DEFAULTLIB:ucrt.libz/DEFAULTLIB:vcruntime.libz/DEFAULTLIB:msvcrt.lib)z/DEFAULTLIB:ucrtd.libz/DEFAULTLIB:vcruntimed.libz/DEFAULTLIB:msvcrtd.lib)z/DEFAULTLIB:libucrt.libz/DEFAULTLIB:libvcruntime.libz/DEFAULTLIB:libcmt.lib)z/DEFAULTLIB:libucrtd.libz/DEFAULTLIB:libvcruntimed.libz/DEFAULTLIB:libcmtd.lib)nonemdmddmtmtdr   crt_argsNFccacheT.List[str]exelistversionstrfor_machine'MachineChoice'info'MachineInfo'linkerT.Optional['DynamicLinker']full_versionT.Optional[str]is_crossboolc	           
         t                                          ||||||||           d| _        d| j        j        v r0| j                            t          d                     d| _        d S d S )NFlinkb_vscrtT)super__init__links_with_msvcr-   idbase_optionsaddr   )
selfr$   r&   r'   r)   r+   r-   r/   r1   	__class__s
            X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/asm.pyr7   zNasmCompiler.__init__*   sx     	';fl\deee$T[^##!!)I"6"6777#'D    $#    returnc                    dS NT r<   s    r>   needs_static_linkerz NasmCompiler.needs_static_linker4       tr?   c                8   | j         j        rdnd}| j                                         s| j                                         rd}d| }n"| j                                         rd}d}nd}d}d	| | d
| g}| j         j        r|                    d           |S )N6432winWINmachoMACHOelfELFz-fz-Dz-D__x86_64__)r+   	is_64_bit
is_windows	is_cygwin	is_darwinappend)r<   cpuplatdefineargss        r>   get_always_argszNasmCompiler.get_always_args7   s    i)3ddt9!! 	TY%8%8%:%: 	D 3[[FFY  "" 	DFFDFnsnnm6mm49 	(KK'''r?   c                    dgS )Nz-WerrorrC   rD   s    r>   get_werror_argszNasmCompiler.get_werror_argsG   
    {r?   
outputnamec                
    d|gS Nz-orC   r<   r]   s     r>   get_output_argszNasmCompiler.get_output_argsJ       j!!r?   rX   c                H    g }|D ]}|dv r|                     |           |S )N>   -pthread-mms-bitfields)rT   )r<   rX   outargsargs       r>   unix_args_to_nativez NasmCompiler.unix_args_to_nativeM   s?    ! 	  	 C444NN3r?   optimization_levelc                    t           |         S N)r   r<   ri   s     r>   get_optimization_argsz"NasmCompiler.get_optimization_argsU   s    %&899r?   is_debugc                    |rdgS g S N-grC   r<   rn   s     r>   get_debug_argszNasmCompiler.get_debug_argsX        	6M	r?   c                    dS NdrC   rD   s    r>   get_depfile_suffixzNasmCompiler.get_depfile_suffix]       sr?   	outtargetoutfilec                    d|d|gS )Nz-MDz-MQrC   r<   rz   r{   s      r>   get_dependency_gen_argsz$NasmCompiler.get_dependency_gen_args`   s    wy11r?   work_direnvironment'Environment'Nonec                l    | j         j        dvr%t          d| j        d| j         j         d          d S N>   x86x86_64ASM compiler  does not support  CPU familyr+   
cpu_familyr   r9   r<   r   r   s      r>   sanity_checkzNasmCompiler.sanity_checkc   F    9'888&'utw'u'uTXT]Th'u'u'uvvv 98r?   c                    g S rk   rC   rD   s    r>   get_pic_argszNasmCompiler.get_pic_argsg       	r?   path	is_systemc                    |sd}d|z   gS N.-IrC   r<   r   r   s      r>   get_include_argszNasmCompiler.get_include_argsj        	Dt}r?   parameter_list	build_dirc           
         t          |          D ]f\  }}|d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   g|S Nr   r   	enumerateosr   normpathjoinr<   r   r   idxis        r>   &compute_parameters_with_absolute_pathsz3NasmCompiler.compute_parameters_with_absolute_pathso   {    // 	_ 	_FC!u}}&'ebg.>.>rw||IWXYZY[Y[W\?]?].^.^&^s#r?   crt_val	buildtypec                    g S rk   rC   r<   r   r   s      r>   get_crt_compile_argsz!NasmCompiler.get_crt_compile_argsv   r   r?   c                z    | j                                         sg S | j        |                     ||                   S rk   )r+   rQ   r#   get_crt_valr   s      r>   get_crt_link_argszNasmCompiler.get_crt_link_args|   s:    y##%% 	I}T--gyAABBr?   NNFr$   r%   r&   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r@   r2   r@   r%   r]   r(   r@   r%   )rX   r%   r@   r%   ri   r(   r@   r%   rn   r2   r@   r%   r@   r(   rz   r(   r{   r(   r@   r%   r   r(   r   r   r@   r   r   r(   r   r2   r@   r%   r   r%   r   r(   r@   r%   r   r(   r   r(   r@   r%   )__name__
__module____qualname__languager9   r#   __annotations__r7   rE   rY   r[   ra   rh   rm   rs   rx   r~   r   r   r   r   r   r   __classcell__r=   s   @r>   r   r      s        H	B ]]]aaacccggg* *H     8<HM( ( ( ( ( ( (          " " " "   : : : :   
   2 2 2 2w w w w      
      C C C C C C C Cr?   r   c                  >     e Zd ZdZddZdd fd
ZddZddZ xZS )YasmCompileryasmri   r(   r@   r%   c                    g S rk   rC   rl   s     r>   rm   z"YasmCompiler.get_optimization_args   s    	r?   Tr$   r2   c                r    t                                          |          }t                      ddgz   |z   S )Nz
--internalr   )r6   get_exelistr   )r<   r$   r&   r=   s      r>   r   zYasmCompiler.get_exelist   s5    ''%%f-- ""lF%;;gEEr?   rn   c                    |rE| j                                         r| j        rddgS | j                                         rddgS ddgS g S )Nrq   cv8nulldwarf2)r+   rQ   r8   rS   rr   s     r>   rs   zYasmCompiler.get_debug_args   sd     	(y##%% ($*> (e}$$$&& (f~%h''	r?   rz   r{   c                
    d|gS )Nz	--depfilerC   r}   s      r>   r~   z$YasmCompiler.get_dependency_gen_args   s    W%%r?   r   )T)r$   r2   r@   r%   r   r   )	r   r   r   r9   rm   r   rs   r~   r   r   s   @r>   r   r      s        	B   F F F F F F F
   & & & & & & & &r?   r   c                      e Zd ZdZdZd%dZed&d            Zd'd	Zd%d
Z	d%dZ
d(dZd)dZd*dZd+dZd%dZd,dZd-dZd.d Zd/d#Zd$S )0MasmCompilermasmmlr@   r%   c                    dgS )Nz/crC   rD   s    r>   get_compile_only_argsz"MasmCompiler.get_compile_only_args   s	    vr?   r(   c                     dS )NmsvcrC   rC   r?   r>   get_argument_syntaxz MasmCompiler.get_argument_syntax   s    vr?   r2   c                    dS rB   rC   rD   s    r>   rE   z MasmCompiler.needs_static_linker   rF   r?   c                    dgS )Nz/nologorC   rD   s    r>   rY   zMasmCompiler.get_always_args   r\   r?   c                    dgS )Nz/WXrC   rD   s    r>   r[   zMasmCompiler.get_werror_args   s	    wr?   r]   c                
    d|gS )Nz/ForC   r`   s     r>   ra   zMasmCompiler.get_output_args   s    z""r?   ri   c                    g S rk   rC   rl   s     r>   rm   z"MasmCompiler.get_optimization_args   r   r?   rn   c                    |rdgS g S )Nz/ZirC   rr   s     r>   rs   zMasmCompiler.get_debug_args   s     	7N	r?   r   r   r   r   c                l    | j         j        dvr%t          d| j        d| j         j         d          d S r   r   r   s      r>   r   zMasmCompiler.sanity_check   r   r?   c                    g S rk   rC   rD   s    r>   r   zMasmCompiler.get_pic_args   r   r?   r   r   c                    |sd}d|z   gS r   rC   r   s      r>   r   zMasmCompiler.get_include_args   r   r?   r   r   c           
        t          |          D ]t\  }}|d d         dk    s|d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   u|S )Nr   r   z/Ir   r   s        r>   r   z3MasmCompiler.compute_parameters_with_absolute_paths   s    // 	_ 	_FC!u}}"1"&'ebg.>.>rw||IWXYZY[Y[W\?]?].^.^&^s#r?   r   r   c                    g S rk   rC   r   s      r>   r   z!MasmCompiler.get_crt_compile_args   r   r?   objfiler0   c                    d S rk   rC   r<   r   s     r>   depfile_for_objectzMasmCompiler.depfile_for_object   rF   r?   Nr   r   r   r   r   r   r   r   r   r   r   r(   r@   r0   )r   r   r   r   r9   r   staticmethodr   rE   rY   r[   ra   rm   rs   r   r   r   r   r   r   rC   r?   r>   r   r      sF       H	B       \         # # # #      
w w w w      
           r?   r   c                  v    e Zd ZdZdZd#dZd$dZd$dZd%dZd&dZ	d'dZ
d(dZd$dZd)dZd*dZd+dZd,d!Zd"S )-MasmARMCompilerr   armasmr@   r2   c                    dS rB   rC   rD   s    r>   rE   z#MasmARMCompiler.needs_static_linker   rF   r?   r%   c                    dgS )Nz-nologorC   rD   s    r>   rY   zMasmARMCompiler.get_always_args   r\   r?   c                    g S rk   rC   rD   s    r>   r[   zMasmARMCompiler.get_werror_args   r   r?   r]   r(   c                
    d|gS r_   rC   r`   s     r>   ra   zMasmARMCompiler.get_output_args   rb   r?   ri   c                    g S rk   rC   rl   s     r>   rm   z%MasmARMCompiler.get_optimization_args   r   r?   rn   c                    |rdgS g S rp   rC   rr   s     r>   rs   zMasmARMCompiler.get_debug_args   rt   r?   r   r   r   r   c                l    | j         j        dvr%t          d| j        d| j         j         d          d S )N>   armaarch64r   r   r   r   r   s      r>   r   zMasmARMCompiler.sanity_check   sF    9'999&'utw'u'uTXT]Th'u'u'uvvv :9r?   c                    g S rk   rC   rD   s    r>   r   zMasmARMCompiler.get_pic_args   r   r?   r   r   c                    |sd}d|z   gS )Nr   z-irC   r   s      r>   r   z MasmARMCompiler.get_include_args   r   r?   r   r   c           
         t          |          D ]f\  }}|d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   g|S r   r   r   s        r>   r   z6MasmARMCompiler.compute_parameters_with_absolute_paths   r   r?   r   r   c                    g S rk   rC   r   s      r>   r   z$MasmARMCompiler.get_crt_compile_args   r   r?   r   r0   c                    d S rk   rC   r   s     r>   r   z"MasmARMCompiler.depfile_for_object  rF   r?   Nr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r9   rE   rY   r[   ra   rm   rs   r   r   r   r   r   r   rC   r?   r>   r   r      s       H	B         " " " "      
w w w w      
           r?   r   c                  H    e Zd ZdZ	 	 d d!dZd"dZd#dZd$dZd%dZd&dZ	dS )'TILinearAsmCompiler	linearasmNFr$   r%   r&   r'   r(   r)   r   r+   r   r-   T.Optional[DynamicLinker]r/   r0   r1   r2   c	                f    t          j        | ||||||||	  	         t          j        |            d S rk   )r	   r7   r   	r<   r$   r&   r'   r)   r+   r-   r/   r1   s	            r>   r7   zTILinearAsmCompiler.__init__  s>     	$+tVUacklllD!!!!!r?   r@   c                    dS rB   rC   rD   s    r>   rE   z'TILinearAsmCompiler.needs_static_linker  rF   r?   c                    g S rk   rC   rD   s    r>   rY   z#TILinearAsmCompiler.get_always_args  r   r?   r   r   c                    g S rk   rC   r   s      r>   r   z(TILinearAsmCompiler.get_crt_compile_args  r   r?   r   r   r   r   c                l    | j         j        dvr%t          d| j        d| j         j         d          d S )N>   c6000zTI Linear ASM compiler r   r   r   r   s      r>   r   z TILinearAsmCompiler.sanity_check  sN    9y00&'''^b^g^r'''  A  A  A 10r?   c                    dS rv   rC   rD   s    r>   rx   z&TILinearAsmCompiler.get_depfile_suffix  ry   r?   r   )r$   r%   r&   r%   r'   r(   r)   r   r+   r   r-   r   r/   r0   r1   r2   r   r   r   )r   r(   r   r   r@   r   r   )
r   r   r   r   r7   rE   rY   r   r   rx   rC   r?   r>   r   r     s        H 6:HM" " " " "         A A A A     r?   r   c                  @    e Zd ZdZ	 	 dddZddZddZd dZd!dZdS )"MetrowerksAsmCompilerr   NFr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   c	                    t          j        | ||||||||	  	         t          j        |            g g g g g d| _        | j                            d           d S )N)r   r   r   r   
everythingr   )r	   r7   r
   	warn_argscan_compile_suffixesr;   r   s	            r>   r7   zMetrowerksAsmCompiler.__init__&  sv     	$+tVUacklll#D))) 4 4 	!%%c*****r?   r   r   r@   c                    g S rk   rC   r   s      r>   r   z*MetrowerksAsmCompiler.get_crt_compile_args5  r   r?   ri   c                    g S rk   rC   rl   s     r>   rm   z+MetrowerksAsmCompiler.get_optimization_args8  r   r?   c                    g S rk   rC   rD   s    r>   r   z"MetrowerksAsmCompiler.get_pic_args;  r   r?   c                    dS rB   rC   rD   s    r>   rE   z)MetrowerksAsmCompiler.needs_static_linker>  rF   r?   r   r   r   r   r   r   )	r   r   r   r   r7   r   rm   r   rE   rC   r?   r>   r  r  #  s        H 8<HM+ + + + +              r?   r  c                  "    e Zd ZdZddZddZdS )MetrowerksAsmCompilerARMmwasmarminstruction_setr(   r@   T.Optional[T.List[str]]c                ,    t          j        |d           S rk   )r   getr<   r  s     r>   get_instruction_set_argsz1MetrowerksAsmCompilerARM.get_instruction_set_argsE  s    ,0$GGGr?   r   r   r   r   c                l    | j         j        dvr%t          d| j        d| j         j         d          d S )N>   r   r   r   r   r   r   s      r>   r   z%MetrowerksAsmCompilerARM.sanity_checkH  E    9w..&'utw'u'uTXT]Th'u'u'uvvv /.r?   Nr  r(   r@   r  r   r   r   r   r9   r  r   rC   r?   r>   r  r  B  sK        	BH H H Hw w w w w wr?   r  c                  "    e Zd ZdZddZddZdS )$MetrowerksAsmCompilerEmbeddedPowerPC	mwasmeppcr  r(   r@   r  c                ,    t          j        |d           S rk   )r   r  r  s     r>   r  z=MetrowerksAsmCompilerEmbeddedPowerPC.get_instruction_set_argsP  s    -1/4HHHr?   r   r   r   r   c                l    | j         j        dvr%t          d| j        d| j         j         d          d S )N>   ppcr   r   r   r   r   s      r>   r   z1MetrowerksAsmCompilerEmbeddedPowerPC.sanity_checkS  r  r?   Nr  r   r  rC   r?   r>   r  r  M  sK        	BI I I Iw w w w w wr?   r  )$
__future__r   r   typingTmesonlibr   r   optionsr   	compilersr	   mixins.metrowerksr
   r   r   	mixins.tir   TYPE_CHECKINGr   r   linkers.linkersr   r   	envconfigr   r   r   r   r   r   r   r   r  r  r  rC   r?   r>   <module>r/     s   " " " " " " " 				     > > > > > > > >             p p p p p p p p p p ! ! ! ! ! !? ())))))//////(((((('''''' 





4 4     bC bC bC bC bC8 bC bC bCH& & & & &< & & &46 6 6 6 68 6 6 6t/ / / / /h / / /f    *h   6    .   >w w w w w4 w w ww w w w w+@ w w w w wr?   