o
    eR                     @  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__ >/usr/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
-classpath-cpr   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@   pathseprC   )r!   r=   r>   idxi	path_listr$   rF   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}|rr|dd|g}	tj|	|d}
|

  |
jdkrpt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 cannot compile programs.r?   .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@   rA   rC   openwritetextwrapdedent
subprocessPopenr   wait
returncoder   Zname_stringshutilwhichr    )r!   rP   rQ   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!   rj   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!   rl   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   )rP   r   rQ   rR   r'   rS   )r'   rh   )rj   r   r'   r   )rl   rh   r'   r   )__name__
__module____qualname__languageidr   __annotations__r   r)   r,   r.   r1   r3   r7   r:   r<   rO   rg   ri   rk   rm   __classcell__r$   r$   r"   r%   r       s.   
 











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