o
    WodG                     @  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Zd dlZddl	m
Z
 ddlmZmZ ddlmZ ejrGddlmZ dd	lmZ dd
l	mZ G dd deeZdS )    )annotationsN   )EnvironmentException   )Compilerjava_buildtype_args)BasicLinkerIsCompilerMixin)MachineInfo)Environment)MachineChoicec                      s   e Zd ZU dZdZdgdgddgddgdZded< 		d@dA fddZdBddZdCddZ	dCddZ
dDdd ZdCd!d"ZdEd%d&ZdFd(d)ZdGd+d,ZdHd/d0ZdId5d6ZdJd8d9ZdKd;d<ZdLd>d?Z  ZS )MJavaCompilerjavaunknown-nowarnz
-Xlint:allz-Xdoclint:all)0123zT.Dict[str, T.List[str]]_WARNING_LEVELSNexelistT.List[str]versionstrfor_machiner   info'MachineInfo'full_versionT.Optional[str]c                   s"   t  jg |||||d d| _d S )N)r   r   )super__init__
javarunner)selfr   r   r   r   r   	__class__ xhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/compilers/java.pyr   ,   s   
zJavaCompiler.__init__levelreturnc                 C  s
   | j | S N)r   )r!   r&   r$   r$   r%   get_warn_args1   s   
zJavaCompiler.get_warn_argsc                 C     dgS )Nz-Werrorr$   r!   r$   r$   r%   get_werror_args4      zJavaCompiler.get_werror_argsc                 C  r*   )Nr   r$   r+   r$   r$   r%   get_no_warn_args7   r-   zJavaCompiler.get_no_warn_args
outputnamec                 C  s   |dkrd}d|d|gS )N z./z-dz-sr$   )r!   r/   r$   r$   r%   get_output_args:   s   zJavaCompiler.get_output_argsc                 C     g S r(   r$   r+   r$   r$   r%   get_pic_args?      zJavaCompiler.get_pic_argspch_dirheaderc                 C  r2   r(   r$   )r!   r5   r6   r$   r$   r%   get_pch_use_argsB   r4   zJavaCompiler.get_pch_use_argsnamec                 C     dS )Nr0   r$   )r!   r8   r$   r$   r%   get_pch_nameE   r4   zJavaCompiler.get_pch_name	buildtypec                 C  s   t | S r(   )r   )r!   r;   r$   r$   r%   get_buildtype_argsH   s   zJavaCompiler.get_buildtype_argsparameter_list	build_dirc                   sh   t |D ]-\}}|dv r1|d t|k r1||d  tj} fdd|D }tj|||d < q|S )N>   z-sourcepathz-cpz
-classpathr   c                   s"   g | ]}t jt j |qS r$   )ospathnormpathjoin).0xr>   r$   r%   
<listcomp>P   s   " zGJavaCompiler.compute_parameters_with_absolute_paths.<locals>.<listcomp>)	enumeratelensplitr?   pathseprB   )r!   r=   r>   idxi	path_listr$   rE   r%   &compute_parameters_with_absolute_pathsK   s   z3JavaCompiler.compute_parameters_with_absolute_pathswork_direnvironment'Environment'Nonec                 C  s   d}d}t j||}t|ddd}|td W d    n1 s%w   Y  tj| j	|g |d}|
  |jdkrHtd	|   d
t| j}|rp||g}	tj|	|d}
|

  |
jdkrntd|   dd S d}t|)NzSanityCheck.javaZSanityCheckwzutf-8)encodingzclass SanityCheck {
                  public static void main(String[] args) {
                    int i;
                  }
                }
                )cwdr   zJava compiler z can not compile programs.z%Executables created by Java compiler z are not runnable.zJava Virtual Machine wasn't found, but it's needed by Meson. Please install a JRE.
If you have specific needs where this requirement doesn't make sense, please open a bug at https://github.com/mesonbuild/meson/issues/new and tell us all about it.)r?   r@   rB   openwritetextwrapdedent
subprocessPopenr   wait
returncoder   Zname_stringshutilwhichr    )r!   rO   rP   srcobjZsource_nameZofileZpcrunnerZcmdlistpemr$   r$   r%   sanity_checkU   s,   

zJavaCompiler.sanity_checkboolc                 C  r9   )NFr$   r+   r$   r$   r%   needs_static_linkert   r4   z JavaCompiler.needs_static_linkeroptimization_levelc                 C  r2   r(   r$   )r!   rh   r$   r$   r%   get_optimization_argsw   r4   z"JavaCompiler.get_optimization_argsis_debugc                 C  s   |rdgS dgS )Nz-gz-g:noner$   )r!   rj   r$   r$   r%   get_debug_argsz   s   zJavaCompiler.get_debug_argsr(   )
r   r   r   r   r   r   r   r   r   r   )r&   r   r'   r   )r'   r   )r/   r   r'   r   )r5   r   r6   r   r'   r   )r8   r   r'   r   )r;   r   r'   r   )r=   r   r>   r   r'   r   )rO   r   rP   rQ   r'   rR   )r'   rf   )rh   r   r'   r   )rj   rf   r'   r   )__name__
__module____qualname__languageidr   __annotations__r   r)   r,   r.   r1   r3   r7   r:   r<   rN   re   rg   ri   rk   __classcell__r$   r$   r"   r%   r       s.   
 












r   )
__future__r   r?   os.pathr^   rZ   rX   typingTZmesonlibr   	compilersr   r   Zmixins.islinkerr   TYPE_CHECKINGZ	envconfigr	   rP   r
   r   r   r$   r$   r$   r%   <module>   s   