o
    nc                     @  s   d dl mZ 	 d dlZd dlZd dlZd dlZddlmZ ddlm	Z	 ddl
mZmZ ejr:ddlmZ dd	lmZ G d
d deZdS )    )annotationsN   )GnuLikeCompilergnu_optimization_args   )
Popen_safe	OptionKey)Environment)KeyedOptionDictTypec                      st   e Zd ZdZd" fddZd#d$ddZd%ddZd&ddZd'ddZd(ddZ	d)ddZ
d*ddZd&d d!Z  ZS )+ElbrusCompilerZlccreturnNonec                   sL   t    dd dD | _dg}g ||dg |ddg |ddg d| _d S )Nc                 S  s   h | ]}t |qS  )r	   ).0or   r   home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/compilers/mixins/elbrus.py	<setcomp>(   s    z*ElbrusCompiler.__init__.<locals>.<setcomp>)Zb_pgoZ
b_coverageZb_ndebugZb_staticpicZb_lundefZ
b_asneededz-Wallz-Wextraz
-Wpedantic)0123Z
everything)super__init__Zbase_optionsZ	warn_args)selfZdefault_warn_args	__class__r   r   r   &   s   


zElbrusCompiler.__init__Nenv'Environment'	elf_classT.Optional[int]T.List[str]c                 C  sv   t j }d|d< t| jdddg |dd }|dD ]}|d	r8|d
dd }dd |dD   S qg S )NCLC_ALLFZccache--print-search-dirsr   r   
z
libraries: c                 S  s$   g | ]}t j|rt j|qS r   )ospathexistsrealpathr   pr   r   r   
<listcomp>:   s   $ z3ElbrusCompiler.get_library_dirs.<locals>.<listcomp>:r)   environcopyr   get_exelistsplit
startswith)r   r   r   os_envstdolinelibstrr   r   r   get_library_dirs2      

zElbrusCompiler.get_library_dirsc                 C  sv   t j }d|d< t| jdddg |dd }|dD ]}|d	r8|d
dd }dd |dD   S qg S )Nr"   r#   Fr$   r%   r&   r   r'   z	programs:r(   c                 S  s   g | ]}t j|qS r   )r)   r*   r,   r-   r   r   r   r/   E   s    z3ElbrusCompiler.get_program_dirs.<locals>.<listcomp>r0   r1   )r   r   r7   r8   r9   r:   r   r   r   get_program_dirs=   r<   zElbrusCompiler.get_program_dirsc                 C  s   t j }d|d< tj| jddg d |tjtjtjd}|j	 j
ddd	}g }|d
D ]}| drG|tddtdd| q/|S )Nr"   r#   Fr$   )z-xcz-Ez-v-)r   stdinstdoutstderrzutf-8replace)errorsr'   z--sys_includez\s*\\$ z^\s*--sys_include\s*)r)   r2   r3   
subprocessPopenr4   DEVNULLPIPErA   readdecoder5   lstripr6   appendresub)r   r7   r.   rA   includesr9   r   r   r   get_default_include_dirsH   s   
*z'ElbrusCompiler.get_default_include_dirsoptimization_levelstrc                 C  s   t | S Nr   )r   rQ   r   r   r   get_optimization_argsS   s   z$ElbrusCompiler.get_optimization_argsprelink_nameobj_listc                 C  s   dddd|g| S )Nz-rz-nodefaultlibsz-nostartfilesz-or   )r   rU   rV   r   r   r   get_prelink_argsV   s   zElbrusCompiler.get_prelink_argsc                 C  s   dS )NZpchr   r   r   r   r   get_pch_suffixY   s   zElbrusCompiler.get_pch_suffixoptions'KeyedOptionDictType'c                 C  s8   g }|t d| j| jd }|jdkr|d|j  |S )Nstd)langmachinenonez-std=)r	   languageZfor_machinevaluerL   )r   rZ   argsr\   r   r   r   get_option_compile_args]   s
   
z&ElbrusCompiler.get_option_compile_argsc                 C  s   dgS )Nz-fopenmpr   rX   r   r   r   openmp_flagsd   s   zElbrusCompiler.openmp_flags)r   r   rS   )r   r   r   r    r   r!   )r   r   r   r!   )r   r!   )rQ   rR   r   r!   )rU   rR   rV   r!   r   r!   )r   rR   )rZ   r[   r   r!   )__name__
__module____qualname__idr   r;   r=   rP   rT   rW   rY   rc   rd   __classcell__r   r   r   r   r       s    





r   )
__future__r   r)   typingTrE   rM   Zgnur   r   Zmesonlibr   r	   TYPE_CHECKINGenvironmentr
   Zcoredatar   r   r   r   r   r   <module>   s   