
    eR                        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                   rddlmZ dd	lmZ dd
l	mZ  G d dee      Zy)    )annotationsN   )EnvironmentException   )Compilerjava_buildtype_args)BasicLinkerIsCompilerMixin)MachineInfo)Environment)MachineChoicec                       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	 	 	 d fd	Zdd
ZddZ	ddZ
ddZddZddZddZddZ	 	 	 	 ddZd dZd!dZd"dZd#dZ xZS )$JavaCompilerjavaunknown-nowarnz
-Xlint:allz-Xdoclint:all)0123zT.Dict[str, T.List[str]]_WARNING_LEVELSc                >    t         |   g |||||       d| _        y )N)full_versionr   )super__init__
javarunner)selfexelistversionfor_machineinfor   	__class__s         ;/usr/lib/python3/dist-packages/mesonbuild/compilers/java.pyr   zJavaCompiler.__init__,   s$    Wg{D|\     c                     | j                   |   S N)r   )r   levels     r"   get_warn_argszJavaCompiler.get_warn_args1   s    ##E**r#   c                    dgS )Nz-Werror r   s    r"   get_werror_argszJavaCompiler.get_werror_args4   
    {r#   c                    dgS )Nr   r)   r*   s    r"   get_no_warn_argszJavaCompiler.get_no_warn_args7   r,   r#   c                    |dk(  rd}d|d|gS )N z./z-dz-sr)   )r   
outputnames     r"   get_output_argszJavaCompiler.get_output_args:   s    Jj$
33r#   c                    g S r%   r)   r*   s    r"   get_pic_argszJavaCompiler.get_pic_args?       	r#   c                    g S r%   r)   )r   pch_dirheaders      r"   get_pch_use_argszJavaCompiler.get_pch_use_argsB   r5   r#   c                     y)Nr0   r)   )r   names     r"   get_pch_namezJavaCompiler.get_pch_nameE   s    r#   c                    t         |   S r%   )r   )r   	buildtypes     r"   get_buildtype_argszJavaCompiler.get_buildtype_argsH   s    "9--r#   c           
        t        |      D ]  \  }}|dv s|dz   t        |      k  s||dz      j                  t        j                        }|D cg c]?  }t        j
                  j                  t        j
                  j                  ||            A }}t        j                  j                  |      ||dz   <    |S c c}w )N>   
-classpath-sourcepath-cpr   )	enumeratelensplitospathseppathnormpathjoin)r   parameter_list	build_diridxi	path_listxs          r"   &compute_parameters_with_absolute_pathsz3JavaCompiler.compute_parameters_with_absolute_pathsK   s    / 	EFC88S1Ws>GZ=Z*37399"**E	S\]aRWW--bggll9a.HI]	]*,**//)*DsQw'		E  ^s   ACc                   d}d}t         j                  j                  ||      }t        |dd      5 }|j	                  t        j                  d             d d d        t        j                  | j                  |gz   |      }|j                          |j                  dk7  rt        d	| j                          d
      t        j                  | j                         }|rZ|dd|g}	t        j                  |	|      }
|
j                          |
j                  dk7  rt        d| j                          d      y d}t        |      # 1 sw Y   xY w)NzSanityCheck.javaSanityCheckwzutf-8)encodingzclass SanityCheck {
                  public static void main(String[] args) {
                    int i;
                  }
                }
                )cwdr   zJava compiler z cannot compile programs.rC   .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.)rG   rI   rK   openwritetextwrapdedent
subprocessPopenr   wait
returncoder   name_stringshutilwhichr   )r   work_direnvironmentsrcobjsource_nameofilepcrunnercmdlistpems               r"   sanity_checkzJavaCompiler.sanity_checkU   s6    ggll8S1+sW5 	KK 	 dllcU2A
	==A&8H8H8J7KKd'effdoo.uc3/G!!'x8BGGI}}!*-RSWScScSeRffx+yzz " A
 'q))3	 	s   %E		Ec                     y)NFr)   r*   s    r"   needs_static_linkerz JavaCompiler.needs_static_linkert   s    r#   c                    g S r%   r)   )r   optimization_levels     r"   get_optimization_argsz"JavaCompiler.get_optimization_argsw   r5   r#   c                    |rdgS dgS )Nz-gz-g:noner)   )r   is_debugs     r"   get_debug_argszJavaCompiler.get_debug_argsz   s    6M{r#   r%   )
r   T.List[str]r   strr   r   r    z'MachineInfo'r   zT.Optional[str])r&   ry   returnrx   )rz   rx   )r1   ry   rz   rx   )r7   ry   r8   ry   rz   rx   )r;   ry   rz   ry   )r>   ry   rz   rx   )rL   rx   rM   ry   rz   rx   )rd   ry   re   z'Environment'rz   None)rz   bool)rs   ry   rz   rx   )rv   r|   rz   rx   )__name__
__module____qualname__languageidr   __annotations__r   r'   r+   r.   r2   r4   r9   r<   r?   rR   ro   rq   rt   rw   __classcell__)r!   s   @r"   r   r       s    H	B [^O,O,	1O-  GK!$!4C!
+4
.:=BM*>r#   r   )
__future__r   rG   os.pathrb   r]   r[   typingTmesonlibr   	compilersr   r   mixins.islinkerr	   TYPE_CHECKING	envconfigr
   re   r   r   r   r)   r#   r"   <module>r      sF    # 	      + 4 7??')(]-x ]r#   