§
    ‹ã÷c=  ã                   óÜ   — d dl Z d dlZddlmZmZ ddlmZ ej        rddl	m
Z
 g dgdgdgd	gd	gd	gd
œZ G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    Né   )ÚEnvironmentExceptionÚget_meson_commandé   )ÚCompiler)ÚEnvironmentz-O0z-O1z-Ox)ÚplainÚ0ÚgÚ1Ú2Ú3Úsc                   ó:  — e Zd ZdZdZdefd„Zdej        e	         fd„Z
dej        e	         fd„Zde	dej        e	         fd„Zdej        e	         dej        e	         fd	„Zd
e	dej        e	         fd„Zdedej        e	         fd„Zde	fd„Zde	de	dej        e	         fd„Zde	ddddfd„Zde	dej        e	         fd„Zdej        e	         fd„Zde	dedej        e	         fd„Zdej        e	         de	dej        e	         fd„Zd e	de	dej        e	         fd!„ZdS )"ÚNasmCompilerÚnasmÚreturnc                 ó   — dS ©NT© ©Úselfs    ú:/usr/lib/python3/dist-packages/mesonbuild/compilers/asm.pyÚneeds_static_linkerz NasmCompiler.needs_static_linker   ó   € Øˆtó    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__)ÚinfoÚ	is_64_bitÚ
is_windowsÚ	is_cygwinÚ	is_darwinÚappend)r   ÚcpuÚplatÚdefineÚargss        r   Úget_always_argszNasmCompiler.get_always_args   s¼   € Ø”iÔ)Ð3ˆdˆd¨tˆØŒ9×ÒÑ!Ô!ð 	 T¤Y×%8Ò%8Ñ%:Ô%:ð 	ØˆDØ ˜3�[�[ˆFˆFØŒY× Ò Ñ"Ô"ð 	ØˆDØˆFˆFàˆDØˆFØ˜�n˜s�n�n m¨6 m mÐ4ˆØŒ9Ôð 	(Ø�KŠK˜Ñ'Ô'Ð'Øˆr   c                 ó   — dgS )Nz-Werrorr   r   s    r   Úget_werror_argszNasmCompiler.get_werror_args,   ó
   € Øˆ{Ðr   Ú
outputnamec                 ó
   — d|gS ©Nz-or   ©r   r4   s     r   Úget_output_argszNasmCompiler.get_output_args/   ó   € Ø�jÐ!Ð!r   r/   c                 óL   — g }|D ]}|dk    rŒ	|                      |¦  «         Œ|S )Nz-pthread)r+   )r   r/   ÚoutargsÚargs       r   Úunix_args_to_nativez NasmCompiler.unix_args_to_native2   s>   € ØˆØð 	 ð 	 ˆCØ�jÒ Ð ØØ�NŠN˜3ÑÔÐÐØˆr   Úoptimization_levelc                 ó   — t           |         S ©N)Únasm_optimization_args©r   r>   s     r   Úget_optimization_argsz"NasmCompiler.get_optimization_args:   s   € Ý%Ð&8Ô9Ð9r   Úis_debugc                 óH   — |r| j                              ¦   «         rg S g d¢S g S )N)ú-gz-FÚdwarf©r&   r(   ©r   rD   s     r   Úget_debug_argszNasmCompiler.get_debug_args=   s6   € Øð 	)ØŒy×#Ò#Ñ%Ô%ð Ø�	Ø(Ð(Ð(Ð(Øˆ	r   c                 ó   — dS )NÚdr   r   s    r   Úget_depfile_suffixzNasmCompiler.get_depfile_suffixD   s   € Øˆsr   Ú	outtargetÚoutfilec                 ó   — d|d|gS )Nz-MDz-MQr   ©r   rN   rO   s      r   Úget_dependency_gen_argsz$NasmCompiler.get_dependency_gen_argsG   s   € Ø�w  yÐ1Ð1r   Úwork_dirÚenvironmentr   Nc                 ó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   Úid©r   rS   rT   s      r   Úsanity_checkzNasmCompiler.sanity_checkJ   óF   € ØŒ9ÔÐ'8Ð8Ð8Ý&Ð'u°t´wÐ'uÐ'uÐTXÔT]ÔThÐ'uÐ'uÐ'uÑvÔvÐvð 9Ð8r   Ú	buildtypec                 ó   — g S r@   r   ©r   rb   s     r   Úget_buildtype_argszNasmCompiler.get_buildtype_argsN   ó   € àˆ	r   c                 ó   — g S r@   r   r   s    r   Úget_pic_argszNasmCompiler.get_pic_argsR   ó   € Øˆ	r   ÚpathÚ	is_systemc                 ó   — |sd}d|z   gS ©Nú.ú-Ir   ©r   rj   rk   s      r   Úget_include_argszNasmCompiler.get_include_argsU   ó   € Øð 	Øˆ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   ro   ©Ú	enumerateÚosrj   ÚnormpathÚjoin©r   rs   rt   ÚidxÚis        r   Ú&compute_parameters_with_absolute_pathsz3NasmCompiler.compute_parameters_with_absolute_pathsZ   ó{   € å Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øØÐr   Úcrt_valc                 ó   — g S r@   r   ©r   r�   rb   s      r   Úget_crt_compile_argsz!NasmCompiler.get_crt_compile_argsa   ri   r   )Ú__name__Ú
__module__Ú__qualname__Úlanguager^   Úboolr   ÚTÚListÚstrr0   r2   r8   r=   rC   rJ   rM   rR   r`   re   rh   rq   r   r„   r   r   r   r   r      sy  € € € € € Ø€HØ	€Bð Tð ð ð ð ð ¤¨¤ð ð ð ð ð  ¤¨¤ð ð ð ð ð"¨#ð "°!´&¸´+ð "ð "ð "ð "ð¨¬¨s¬ð ¸¼¸s¼ð ð ð ð ð:¸ð :ÀÄÀsÄð :ð :ð :ð :ð tð °´°s´ð ð ð ð ð Cð ð ð ð ð2°ð 2¸sð 2ÀqÄvÈcÄ{ð 2ð 2ð 2ð 2ðw Sð w°}ð wÈð wð wð wð wð¨Cð °A´F¸3´Kð ð ð ð ð˜aœf Sœkð ð ð ð ð Sð °Tð ¸a¼fÀS¼kð ð ð ð ð
ÀQÄVÈCÄ[ð Ø:=ðØBCÄ&ÈÄ+ðð ð ð ð¨Cð ¸Cð ÀAÄFÈ3ÄKð ð ð ð ð ð r   r   c                   ó”   ‡ — e Zd ZdZddedej        e         fˆ fd„Zdedej        e         fd„Z	ded	edej        e         fd
„Z
ˆ xZS )ÚYasmCompilerÚyasmTÚccacher   c                 ór   •— t          ¦   «                              |¦  «        }t          ¦   «         ddgz   |z   S )Nz
--internalr�   )ÚsuperÚget_exelistr   )r   r�   ÚexelistÚ	__class__s      €r   r“   zYasmCompiler.get_exelistg   s5   ø€ å‘'”'×%Ò% fÑ-Ô-ˆÝ Ñ"Ô" l°FÐ%;Ñ;¸gÑEÐEr   rD   c                 óL   — |r!| j                              ¦   «         rddgS ddgS g S )NrF   ÚnullÚdwarf2rH   rI   s     r   rJ   zYasmCompiler.get_debug_argsl   s:   € Øð 	$ØŒy×#Ò#Ñ%Ô%ð &Ø˜f�~Ð%Ø˜(Ð#Ð#Øˆ	r   rN   rO   c                 ó
   — d|gS )Nz	--depfiler   rQ   s      r   rR   z$YasmCompiler.get_dependency_gen_argss   s   € Ø˜WÐ%Ð%r   )T)r…   r†   r‡   r^   r‰   rŠ   r‹   rŒ   r“   rJ   rR   Ú__classcell__)r•   s   @r   rŽ   rŽ   d   s»   ø€ € € € € Ø	€BðFð F $ð F°!´&¸´+ð Fð Fð Fð Fð Fð Fð
 tð °´°s´ð ð ð ð ð&°ð &¸sð &ÀqÄvÈcÄ{ð &ð &ð &ð &ð &ð &ð &ð &r   rŽ   c                   ó  — e Zd ZdZdZdej        e         fd„Zdefd„Z	de
fd„Zdej        e         fd„Zdej        e         fd„Zd	edej        e         fd
„Zdedej        e         fd„Zde
dej        e         fd„Zdeddddfd„Zdedej        e         fd„Zdej        e         fd„Zdede
dej        e         fd„Zdej        e         dedej        e         fd„Zdededej        e         fd„Zdedej        e         fd „ZdS )!ÚMasmCompilerÚmasmÚmlr   c                 ó   — dgS )Nz/cr   r   s    r   Úget_compile_only_argsz"MasmCompiler.get_compile_only_args{   s	   € Øˆvˆr   c                 ó   — dS )NÚmsvcr   r   s    r   Úget_argument_syntaxz MasmCompiler.get_argument_syntax~   s   € Øˆvr   c                 ó   — dS r   r   r   s    r   r   z MasmCompiler.needs_static_linker�   r   r   c                 ó   — dgS )Nz/nologor   r   s    r   r0   zMasmCompiler.get_always_args„   r3   r   c                 ó   — dgS )Nz/WXr   r   s    r   r2   zMasmCompiler.get_werror_args‡   s	   € Øˆwˆr   r4   c                 ó
   — d|gS )Nz/For   r7   s     r   r8   zMasmCompiler.get_output_argsŠ   s   € Ø�zÐ"Ð"r   r>   c                 ó   — g S r@   r   rB   s     r   rC   z"MasmCompiler.get_optimization_args�   ri   r   rD   c                 ó   — |rdgS g S )Nz/Zir   rI   s     r   rJ   zMasmCompiler.get_debug_args�   s   € Øð 	Ø�7ˆNØˆ	r   rS   rT   r   Nc                 ól   — | j         j        dvr%t          d| j        ›d| j         j        › d�¦  «        ‚d S rV   r\   r_   s      r   r`   zMasmCompiler.sanity_check•   ra   r   rb   c                 ó   — g S r@   r   rd   s     r   re   zMasmCompiler.get_buildtype_args™   rf   r   c                 ó   — g S r@   r   r   s    r   rh   zMasmCompiler.get_pic_args�   ri   r   rj   rk   c                 ó   — |sd}d|z   gS rm   r   rp   s      r   rq   zMasmCompiler.get_include_args    rr   r   rs   rt   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   ro   z/Irw   r|   s        r   r   z3MasmCompiler.compute_parameters_with_absolute_paths¥   s‹   € å Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}  " 1 "¤¨¢ Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øØÐr   r�   c                 ó   — g S r@   r   rƒ   s      r   r„   z!MasmCompiler.get_crt_compile_args¬   ri   r   Úobjfilec                 ó   — d S r@   r   ©r   r°   s     r   Údepfile_for_objectzMasmCompiler.depfile_for_object¯   r   r   )r…   r†   r‡   rˆ   r^   rŠ   r‹   rŒ   r    r£   r‰   r   r0   r2   r8   rC   rJ   r`   re   rh   rq   r   r„   ÚOptionalr³   r   r   r   rœ   rœ   w   se  € € € € € Ø€HØ	€Bð q¤v¨c¤{ð ð ð ð ð Sð ð ð ð ð Tð ð ð ð ð ¤¨¤ð ð ð ð ð ¤¨¤ð ð ð ð ð#¨#ð #°!´&¸´+ð #ð #ð #ð #ð¸ð ÀÄÀsÄð ð ð ð ð tð °´°s´ð ð ð ð ð
w Sð w°}ð wÈð wð wð wð wð¨Cð °A´F¸3´Kð ð ð ð ð˜aœf Sœkð ð ð ð ð Sð °Tð ¸a¼fÀS¼kð ð ð ð ð
ÀQÄVÈCÄ[ð Ø:=ðØBCÄ&ÈÄ+ðð ð ð ð¨Cð ¸Cð ÀAÄFÈ3ÄKð ð ð ð ð¨#ð °!´*¸S´/ð ð ð ð ð ð r   rœ   c                   óî  — e Zd ZdZdZdefd„Zdej        e	         fd„Z
dej        e	         fd„Zde	dej        e	         fd„Zd	e	dej        e	         fd
„Zdedej        e	         fd„Zde	ddddfd„Zde	dej        e	         fd„Zdej        e	         fd„Zde	dedej        e	         fd„Zdej        e	         de	dej        e	         fd„Zde	de	dej        e	         fd„Zde	dej        e	         fd„ZdS )ÚMasmARMCompilerr�   Úarmasmr   c                 ó   — dS r   r   r   s    r   r   z#MasmARMCompiler.needs_static_linker¸   r   r   c                 ó   — dgS )Nz-nologor   r   s    r   r0   zMasmARMCompiler.get_always_args»   r3   r   c                 ó   — g S r@   r   r   s    r   r2   zMasmARMCompiler.get_werror_args¾   ri   r   r4   c                 ó
   — d|gS r6   r   r7   s     r   r8   zMasmARMCompiler.get_output_argsÁ   r9   r   r>   c                 ó   — g S r@   r   rB   s     r   rC   z%MasmARMCompiler.get_optimization_argsÄ   ri   r   rD   c                 ó   — |rdgS g S )NrF   r   rI   s     r   rJ   zMasmARMCompiler.get_debug_argsÇ   s   € Øð 	Ø�6ˆMØˆ	r   rS   rT   r   Nc                 ól   — | j         j        dvr%t          d| j        ›d| j         j        › d�¦  «        ‚d S )N>   ÚarmÚaarch64rY   rZ   r[   r\   r_   s      r   r`   zMasmARMCompiler.sanity_checkÌ   sF   € ØŒ9ÔÐ'9Ð9Ð9Ý&Ð'u°t´wÐ'uÐ'uÐTXÔT]ÔThÐ'uÐ'uÐ'uÑvÔvÐvð :Ð9r   rb   c                 ó   — g S r@   r   rd   s     r   re   z"MasmARMCompiler.get_buildtype_argsÐ   rf   r   c                 ó   — g S r@   r   r   s    r   rh   zMasmARMCompiler.get_pic_argsÔ   ri   r   rj   rk   c                 ó   — |sd}d|z   gS )Nrn   z-ir   rp   s      r   rq   z MasmARMCompiler.get_include_args×   rr   r   rs   rt   c           
      óò   — t          |¦  «        D ]f\  }}|d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   Œg|S rv   rw   r|   s        r   r   z6MasmARMCompiler.compute_parameters_with_absolute_pathsÜ   r€   r   r�   c                 ó   — g S r@   r   rƒ   s      r   r„   z$MasmARMCompiler.get_crt_compile_argsã   ri   r   r°   c                 ó   — d S r@   r   r²   s     r   r³   z"MasmARMCompiler.depfile_for_objectæ   r   r   )r…   r†   r‡   rˆ   r^   r‰   r   rŠ   r‹   rŒ   r0   r2   r8   rC   rJ   r`   re   rh   rq   r   r„   r´   r³   r   r   r   r¶   r¶   ´   s)  € € € € € Ø€HØ	€Bð Tð ð ð ð ð ¤¨¤ð ð ð ð ð ¤¨¤ð ð ð ð ð"¨#ð "°!´&¸´+ð "ð "ð "ð "ð¸ð ÀÄÀsÄð ð ð ð ð tð °´°s´ð ð ð ð ð
w Sð w°}ð wÈð wð wð wð wð¨Cð °A´F¸3´Kð ð ð ð ð˜aœf Sœkð ð ð ð ð Sð °Tð ¸a¼fÀS¼kð ð ð ð ð
ÀQÄVÈCÄ[ð Ø:=ðØBCÄ&ÈÄ+ðð ð ð ð¨Cð ¸Cð ÀAÄFÈ3ÄKð ð ð ð ð¨#ð °!´*¸S´/ð ð ð ð ð ð r   r¶   )ry   ÚtypingrŠ   Úmesonlibr   r   Ú	compilersr   ÚTYPE_CHECKINGrT   r   rA   r   rŽ   rœ   r¶   r   r   r   ú<module>rË      sL  ðØ 	€	€	€	Ø Ð Ð Ð à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð à„?ð *Ø)Ð)Ð)Ð)Ð)Ð)ð Ø
ˆØ
ˆØ
ˆØ
ˆØ
ˆØ
ˆðð Ð ðMð Mð Mð Mð M�8ñ Mô Mð Mð^&ð &ð &ð &ð &�<ñ &ô &ð &ð&9ð 9ð 9ð 9ð 9�8ñ 9ô 9ð 9ðz3ð 3ð 3ð 3ð 3�hñ 3ô 3ð 3ð 3ð 3r   