o
    Wod                     @  s   d dl mZ d dlZd dlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZ ejr;ddlmZ dd	lmZ dd
lmZ G dd deZdS )    )annotationsN   )mlog)EnvironmentExceptionversion_compare	OptionKey   )CompilerLibType)MachineInfo)Environment)MachineChoicec                      s   e Zd ZdZdZdJ fddZdKddZdLddZdMddZdNddZ	dOddZ
dOddZdOdd ZdOd!d"ZdOd#d$ZdPd&d'ZdOd(d)ZdOd*d+ZdQd-d.ZdRd1d2ZdSd7d8ZdTd:d;Zejd<fdUdDdEZdVdFdGZdVdHdIZ  ZS )WValaCompilerZvalaZvalacexelistT.List[str]versionstrfor_machiner   is_crossboolinfo'MachineInfo'c                   s.   t  jg |||||d || _tdh| _d S )N)r   Z
b_colorout)super__init__r   r   Zbase_options)selfr   r   r   r   r   	__class__ xhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/compilers/vala.pyr   "   s   zValaCompiler.__init__returnc                 C  s   dS )NFr   r   r   r   r   needs_static_linker(      z ValaCompiler.needs_static_linkeroptimization_levelc                 C     g S Nr   )r   r#   r   r   r   get_optimization_args+   r"   z"ValaCompiler.get_optimization_argsis_debugc                 C  s   |rdgS g S )N--debugr   )r   r'   r   r   r   get_debug_args.   s   zValaCompiler.get_debug_argstargetc                 C  r$   r%   r   )r   r*   r   r   r   get_output_args1   r"   zValaCompiler.get_output_argsc                 C  r$   r%   r   r    r   r   r   get_compile_only_args4   r"   z"ValaCompiler.get_compile_only_argsc                 C  r$   r%   r   r    r   r   r   get_pic_args7   r"   zValaCompiler.get_pic_argsc                 C  r$   r%   r   r    r   r   r   get_pie_args:   r"   zValaCompiler.get_pie_argsc                 C  r$   r%   r   r    r   r   r   get_pie_link_args=   r"   zValaCompiler.get_pie_link_argsc                 C     dgS )Nz-Cr   r    r   r   r   get_always_args@      zValaCompiler.get_always_argswarning_levelc                 C  r$   r%   r   )r   r3   r   r   r   get_warn_argsC   r"   zValaCompiler.get_warn_argsc                 C  r0   )Nz--disable-warningsr   r    r   r   r   get_no_warn_argsF   r2   zValaCompiler.get_no_warn_argsc                 C  r0   )Nz--fatal-warningsr   r    r   r   r   get_werror_argsI   r2   zValaCompiler.get_werror_args	colortypec                 C  s   t | jdrd| gS g S )Nz>=0.37.1z--color=)r   r   )r   r7   r   r   r   get_colorout_argsL   s   
zValaCompiler.get_colorout_argsparameter_list	build_dirc              
   C  s  t |D ]\}}|d d dkr'|d d tjtj||dd   ||< |d d dkrF|d d tjtj||dd   ||< |d d dkre|d d tjtj||dd   ||< |d d dkr|d d tjtj||dd   ||< q|S )	N	   z	--girdir=
   z
--vapidir=   z--includedir=   z--metadatadir=)	enumerateospathnormpathjoin)r   r9   r:   idxir   r   r   &compute_parameters_with_absolute_pathsQ   s   ....z3ValaCompiler.compute_parameters_with_absolute_pathswork_direnvironment'Environment'Nonec                 C  s   d}g }||j | j| j7 }| jr||  7 }n||j | j| j7 }| j||j |dd}|jdkr@d| 	 d}t
|W d    d S 1 sKw   Y  d S )Nz#class MesonSanityCheck : Object { }compile
extra_argsmoder   zVala compiler z can not compile programs)coredataget_external_argsr   languager   r,   Zget_external_link_argscached_compile
returncodeZname_stringr   )r   rG   rH   codeextra_flagspmsgr   r   r   sanity_check_   s   
"zValaCompiler.sanity_check	buildtypec                 C  s   |dv rdgS g S )N>   ZminsizeZdebugoptimizeddebugr(   r   )r   rY   r   r   r   get_buildtype_argsl   s   zValaCompiler.get_buildtype_argsTlibnameenv
extra_dirslibtyper
   lib_prefix_warningT.Optional[T.List[str]]c                 C  s   |r
t |tr
|g}|sKd}g }||j| j| j7 }d|g}||7 }| j||j|dd}	|	jdkr<|W  d    S W d    n1 sFw   Y  |D ]}
tj	
|
|d }tj	|rc|g  S qMtd|d|d	 d S )
Nz#class MesonFindLibrary : Object { }z--pkgrK   rL   r   z.vapiz	Searched z and z wasn't found)
isinstancer   rO   rP   r   rQ   rR   rS   r@   rA   rC   isfiler   rZ   )r   r\   r]   r^   r_   r`   rT   argsZ	vapi_argsrV   dZvapir   r   r   find_libraryq   s*   

zValaCompiler.find_libraryc                 C  r$   r%   r   r   r]   r   r   r   thread_flags   r"   zValaCompiler.thread_flagsc                 C  r$   r%   r   rg   r   r   r   thread_link_flags   r"   zValaCompiler.thread_link_flags)
r   r   r   r   r   r   r   r   r   r   )r   r   )r#   r   r   r   )r'   r   r   r   )r*   r   r   r   )r   r   )r3   r   r   r   )r7   r   r   r   )r9   r   r:   r   r   r   )rG   r   rH   rI   r   rJ   )rY   r   r   r   )r\   r   r]   rI   r^   r   r_   r
   r`   r   r   ra   )r]   rI   r   r   )__name__
__module____qualname__rQ   idr   r!   r&   r)   r+   r,   r-   r.   r/   r1   r4   r5   r6   r8   rF   rX   r[   r
   ZPREFER_SHAREDrf   rh   ri   __classcell__r   r   r   r   r      s0    
















r   )
__future__r   os.pathr@   typingT r   Zmesonlibr   r   r   	compilersr	   r
   TYPE_CHECKINGZ	envconfigr   rH   r   r   r   r   r   r   r   <module>   s   