o
    Wod/                     @  s   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 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                      s   e Zd ZdgZdZdZ		dLdM fddZdNddZdOddZdPddZ	dQdd Z
dRd!d"ZdSd$d%ZdTd'd(ZdUd*d+ZdVd-d.ZdOd/d0ZdWd2d3ZdOd4d5ZdXd8d9ZdOd:d;ZdYd>d?ZdZdDdEZd[dGdHZd\dJdKZ  ZS )]SwiftCompilerz-XlinkerZswiftZllvmNexelistT.List[str]versionstrfor_machiner   is_crossboolinfo'MachineInfo'full_versionT.Optional[str]linkerT.Optional['DynamicLinker']c              
     s&   t  jg |||||||d || _d S )N)r   r   r    )super__init__r   )selfr   r   r   r   r   r   r    	__class__ yhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/compilers/swift.pyr#   -   s
   
zSwiftCompiler.__init__returnc                 C     dS )NTr'   r$   r'   r'   r(   needs_static_linker5      z!SwiftCompiler.needs_static_linkerc                 C     dgS )Nz--fatal-warningsr'   r+   r'   r'   r(   get_werror_args8      zSwiftCompiler.get_werror_args	outtargetoutfilec                 C  r.   )Nz-emit-dependenciesr'   )r$   r1   r2   r'   r'   r(   get_dependency_gen_args;   r0   z%SwiftCompiler.get_dependency_gen_argsobjfilec                 C  s   t j|d d |   S )Nr   .)ospathsplitextget_depfile_suffix)r$   r4   r'   r'   r(   depfile_for_object>   s   z SwiftCompiler.depfile_for_objectc                 C  r*   )Ndr'   r+   r'   r'   r(   r9   A   r-   z SwiftCompiler.get_depfile_suffixtargetc                 C     d|gS )N-or'   )r$   r<   r'   r'   r(   get_output_argsD      zSwiftCompiler.get_output_args
headernamec                 C  r=   )Nz-import-objc-headerr'   )r$   rA   r'   r'   r(   get_header_import_argsG   r@   z$SwiftCompiler.get_header_import_argslevelc                 C  s   g S Nr'   )r$   rC   r'   r'   r(   get_warn_argsJ   r-   zSwiftCompiler.get_warn_args	buildtypec                 C     t | S rD   )r   )r$   rF   r'   r'   r(   get_buildtype_argsM   r@   z SwiftCompiler.get_buildtype_argsc                 C  r.   )N-emit-executabler'   r+   r'   r'   r(   get_std_exe_link_argsP   r0   z#SwiftCompiler.get_std_exe_link_argsmodnamec                 C  r=   )Nz-module-namer'   )r$   rK   r'   r'   r(   get_module_argsS   r@   zSwiftCompiler.get_module_argsc                 C  r.   )Nz-emit-moduler'   r+   r'   r'   r(   get_mod_gen_argsV   r0   zSwiftCompiler.get_mod_gen_argsr7   	is_systemc                 C  s
   d| gS )N-Ir'   )r$   r7   rN   r'   r'   r(   get_include_argsY   s   
zSwiftCompiler.get_include_argsc                 C  r.   )Nz-cr'   r+   r'   r'   r(   get_compile_only_args\   r0   z#SwiftCompiler.get_compile_only_argsparameter_list	build_dirc              
   C  sd   t |D ]+\}}|d d dks|d d dkr/|d d tjtj||dd   ||< q|S )Nr   rO   z-L)	enumerater6   r7   normpathjoin)r$   rR   rS   idxir'   r'   r(   &compute_parameters_with_absolute_paths_   s
    .z4SwiftCompiler.compute_parameters_with_absolute_pathswork_direnvironment'Environment'Nonec           	      C  s
  d}t j||}t j|d}g }||j| j| j7 }| jr'||  7 }n||j	| j| j7 }t
|ddd}|d W d    n1 sIw   Y  tj| j| dd||g |d	}|  |jd
krotd|   | jrtd S t|d
krtd|   d S )Nzswifttest.swiftZ	swifttestwzutf-8)encodingz'print("Swift compilation is working.")
rI   r>   )cwdr   z+Swift compiler %s can not compile programs.z:Executables created by Swift compiler %s are not runnable.)r6   r7   rV   ZcoredataZget_external_argsr   languager   rQ   Zget_external_link_argsopenwrite
subprocessPopenr   wait
returncoder   Zname_stringcall)	r$   rZ   r[   srcZsource_nameZoutput_nameextra_flagsZofileZpcr'   r'   r(   sanity_checkg   s(    
zSwiftCompiler.sanity_checkis_debugc                 C  rG   rD   )r   )r$   rl   r'   r'   r(   get_debug_args~   r@   zSwiftCompiler.get_debug_argsoptimization_levelc                 C  rG   rD   )swift_optimization_args)r$   rn   r'   r'   r(   get_optimization_args   r@   z#SwiftCompiler.get_optimization_args)NN)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   )r)   r   )r)   r   )r1   r   r2   r   r)   r   )r4   r   r)   r   )r)   r   )r<   r   r)   r   )rA   r   r)   r   )rC   r   r)   r   )rF   r   r)   r   )rK   r   r)   r   )r7   r   rN   r   r)   r   )rR   r   rS   r   r)   r   )rZ   r   r[   r\   r)   r]   )rl   r   r)   r   )rn   r   r)   r   )__name__
__module____qualname__ZLINKER_PREFIXra   idr#   r,   r/   r3   r:   r9   r?   rB   rE   rH   rJ   rL   rM   rP   rQ   rY   rk   rm   rp   __classcell__r'   r'   r%   r(   r   '   s2    
















r   )
__future__r   rd   os.pathr6   typingTZmesonlibr   	compilersr   r   r   TYPE_CHECKINGZ	envconfigr	   r[   r
   Zlinkersr   r   ro   r   r'   r'   r'   r(   <module>   s&   
