§
    »lac/  ã                  óÀ   — d dl mZ d dlZd dlZd dlZddlmZ ddl	m
Z
mZ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 g g dgdgdgdgdœZ G d„ de
¦  «        ZdS )é    )ÚannotationsNé   )ÚEnvironmentExceptioné   )ÚCompilerÚswift_buildtype_argsÚclike_debug_args)ÚMachineInfo)ÚEnvironment)ÚDynamicLinker)ÚMachineChoicez-O)ÚplainÚ0ÚgÚ1Ú2Ú3Úsc                  óÄ   ‡ — e Zd ZdgZdZdZ	 	 d9d:ˆ fd„Zd;d„Zd<d„Zd=d„Z	d>d„Z
d?d„Zd@d„ZdAd „ZdBd"„ZdCd$„Zd<d%„ZdDd'„Zd<d(„ZdEd+„Zd<d,„ZdFd/„ZdGd4„ZdHd6„ZdId8„Zˆ xZS )JÚSwiftCompilerz-XlinkerÚswiftÚllvmNÚexelistúT.List[str]ÚversionÚstrÚfor_machiner   Úis_crossÚboolÚinfoú'MachineInfo'Úfull_versionúT.Optional[str]ÚlinkerúT.Optional['DynamicLinker']c           
     óh   •— t          ¦   «                              g |||||||¬¦  «         || _        d S )N)r   r"   r$   )ÚsuperÚ__init__r   )	Úselfr   r   r   r   r    r"   r$   Ú	__class__s	           €ú</usr/lib/python3/dist-packages/mesonbuild/compilers/swift.pyr(   zSwiftCompiler.__init__-   sE   ø€ õ 	‰Œ×Ò˜˜W g¨{¸DØ"*¸Ø &ð 	ñ 	(ô 	(ð 	(ð ˆŒˆˆó    Úreturnc                ó   — dS )NT© ©r)   s    r+   Úneeds_static_linkerz!SwiftCompiler.needs_static_linker5   s   € Øˆtr,   c                ó   — dgS )Nz--fatal-warningsr/   r0   s    r+   Úget_werror_argszSwiftCompiler.get_werror_args8   ó   € Ø"Ð#Ð#r,   Ú	outtargetÚoutfilec                ó   — dgS )Nz-emit-dependenciesr/   )r)   r5   r6   s      r+   Úget_dependency_gen_argsz%SwiftCompiler.get_dependency_gen_args;   s   € Ø$Ð%Ð%r,   Úobjfilec                ó|   — t           j                             |¦  «        d         dz   |                      ¦   «         z   S )Nr   ú.)ÚosÚpathÚsplitextÚget_depfile_suffix)r)   r9   s     r+   Údepfile_for_objectz SwiftCompiler.depfile_for_object>   s3   € ÝŒw×Ò Ñ(Ô(¨Ô+¨cÑ1°D×4KÒ4KÑ4MÔ4MÑMÐMr,   c                ó   — dS )NÚdr/   r0   s    r+   r?   z SwiftCompiler.get_depfile_suffixA   s   € Øˆsr,   Útargetc                ó
   — d|gS )Nú-or/   )r)   rC   s     r+   Úget_output_argszSwiftCompiler.get_output_argsD   s   € Ø�fˆ~Ðr,   Ú
headernamec                ó
   — d|gS )Nz-import-objc-headerr/   )r)   rG   s     r+   Úget_header_import_argsz$SwiftCompiler.get_header_import_argsG   s   € Ø% zÐ2Ð2r,   Úlevelc                ó   — g S ©Nr/   )r)   rJ   s     r+   Úget_warn_argszSwiftCompiler.get_warn_argsJ   s   € Øˆ	r,   Ú	buildtypec                ó   — t           |         S rL   )r   )r)   rN   s     r+   Úget_buildtype_argsz SwiftCompiler.get_buildtype_argsM   s   € Ý# IÔ.Ð.r,   c                ó   — dgS )Nú-emit-executabler/   r0   s    r+   Úget_std_exe_link_argsz#SwiftCompiler.get_std_exe_link_argsP   r4   r,   Úmodnamec                ó
   — d|gS )Nz-module-namer/   )r)   rT   s     r+   Úget_module_argszSwiftCompiler.get_module_argsS   s   € Ø Ð(Ð(r,   c                ó   — dgS )Nz-emit-moduler/   r0   s    r+   Úget_mod_gen_argszSwiftCompiler.get_mod_gen_argsV   s   € ØÐÐr,   r=   Ú	is_systemc                ó   — d|z   gS )Nú-Ir/   )r)   r=   rY   s      r+   Úget_include_argszSwiftCompiler.get_include_argsY   s   € Ø�t‘ˆ}Ðr,   c                ó   — dgS )Nz-cr/   r0   s    r+   Úget_compile_only_argsz#SwiftCompiler.get_compile_only_args\   s	   € Øˆvˆr,   Úparameter_listÚ	build_dirc           
     ó  — 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-L)Ú	enumerater<   r=   ÚnormpathÚjoin)r)   r_   r`   ÚidxÚis        r+   Ú&compute_parameters_with_absolute_pathsz4SwiftCompiler.compute_parameters_with_absolute_paths_   s‹   € å Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}  " 1 "¤¨¢ Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øàÐr,   Úwork_dirÚenvironmentú'Environment'ÚNonec                óD  — d}t           j                             ||¦  «        }t           j                             |d¦  «        }g }||j                             | j        | j        ¦  «        z  }| j        r||                      ¦   «         z  }n(||j         	                    | j        | j        ¦  «        z  }t          |dd¬¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | j        |z   dd||gz   |¬	¦  «        }|                     ¦   «          |j        d
k    r$t#          d|                      ¦   «         z  ¦  «        ‚| j        rd S t          j        |¦  «        d
k    r$t#          d|                      ¦   «         z  ¦  «        ‚d S )Nzswifttest.swiftÚ	swifttestÚwzutf-8)Úencodingz'print("Swift compilation is working.")
rR   rE   )Úcwdr   z+Swift compiler %s can not compile programs.z:Executables created by Swift compiler %s are not runnable.)r<   r=   rd   ÚcoredataÚget_external_argsr   Úlanguager   r^   Úget_external_link_argsÚopenÚwriteÚ
subprocessÚPopenr   ÚwaitÚ
returncoder   Úname_stringÚcall)	r)   rh   ri   ÚsrcÚsource_nameÚoutput_nameÚextra_flagsÚofileÚpcs	            r+   Úsanity_checkzSwiftCompiler.sanity_checkg   sÜ  € ØˆÝ”g—l’l 8¨SÑ1Ô1ˆÝ”g—l’l 8¨[Ñ9Ô9ˆØ#%ˆØ�{Ô+×=Ò=¸dÔ>NÐPTÔP]Ñ^Ô^Ñ^ˆØŒ=ð 	hØ˜4×5Ò5Ñ7Ô7Ñ7ˆKˆKà˜;Ô/×FÒFÀtÔGWÐY]ÔYfÑgÔgÑgˆKÝ�+˜s¨WÐ5Ñ5Ô5ð 	¸Ø�KŠKð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Ô˜dœl¨[Ñ8Ð<NÐPTÐVaÐcfÐ;gÑgÐmuÐvÑvÔvˆØ
�Š‰	Œ	ˆ	ØŒ=˜AÒÐÝ&Ð'TÐW[×WgÒWgÑWiÔWiÑ'iÑjÔjÐjØŒ=ð 	àˆFÝŒ?˜;Ñ'Ô'¨1Ò,Ð,Ý&Ð'cÐfj×fvÒfvÑfxÔfxÑ'xÑyÔyÐyð -Ð,s   ÃC(Ã(C,Ã/C,Úis_debugc                ó   — t           |         S rL   )r	   )r)   r„   s     r+   Úget_debug_argszSwiftCompiler.get_debug_args~   s   € Ý Ô)Ð)r,   Úoptimization_levelc                ó   — t           |         S rL   )Úswift_optimization_args)r)   r‡   s     r+   Úget_optimization_argsz#SwiftCompiler.get_optimization_args�   s   € Ý&Ð'9Ô:Ð:r,   )NN)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   )r-   r   )r-   r   )r5   r   r6   r   r-   r   )r9   r   r-   r#   )r-   r   )rC   r   r-   r   )rG   r   r-   r   )rJ   r   r-   r   )rN   r   r-   r   )rT   r   r-   r   )r=   r   rY   r   r-   r   )r_   r   r`   r   r-   r   )rh   r   ri   rj   r-   rk   )r„   r   r-   r   )r‡   r   r-   r   )Ú__name__Ú
__module__Ú__qualname__ÚLINKER_PREFIXrs   Úidr(   r1   r3   r8   r@   r?   rF   rI   rM   rP   rS   rV   rX   r\   r^   rg   rƒ   r†   rŠ   Ú__classcell__)r*   s   @r+   r   r   '   sÍ  ø€ € € € € à�L€MØ€HØ	€Bð W[Ø7;ðð ð ð ð ð ð ðð ð ð ð$ð $ð $ð $ð&ð &ð &ð &ðNð Nð Nð Nðð ð ð ðð ð ð ð3ð 3ð 3ð 3ðð ð ð ð/ð /ð /ð /ð$ð $ð $ð $ð)ð )ð )ð )ð ð  ð  ð  ðð ð ð ðð ð ð ðð ð ð ðzð zð zð zð.*ð *ð *ð *ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r,   r   )Ú
__future__r   rw   Úos.pathr<   ÚtypingÚTÚmesonlibr   Ú	compilersr   r   r	   ÚTYPE_CHECKINGÚ	envconfigr
   ri   r   Úlinkersr   r   r‰   r   r/   r,   r+   ú<module>rš      s)  ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà„?ð )Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)Ø'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(ð Ø	Ø	Ø
ˆØ
ˆØ
ˆØ
ˆðð Ð ð[;ð [;ð [;ð [;ð [;�Hñ [;ô [;ð [;ð [;ð [;r,   