o
    e                     @  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
mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZ dd	lmZmZmZ d
dlmZ ejrcddlmZ d
dl m!Z! d
dl"m#Z# G dd deZ$dddZ%dS )    )annotationsN)mesonlib)CustomTargetCustomTargetIndexGeneratedListTarget)detect_compiler_for)ContainerTypeInfoFeatureDeprecated
FeatureNew	KwargInfotyped_pos_argstyped_kwargs)version_compareMachineChoice   )NewExtensionModuleModuleReturnValue
ModuleInfo   )NoneType)ModuleState)Compiler)Interpreterc                      s   e Zd ZeddZd# fddZd$ddZeddedde	de
ejeeefdededeee
g dddede
efddd%ddZedde	de
ejeeefdededeee
g dddede
efddd%dd Zd%d!d"Z  ZS )&
JavaModulejavaz0.60.0interpreterr   c                   s$   t    | j| j| jd d S )N)generate_native_headersnative_headers)super__init__methodsupdater   r   )selfr   	__class__ </usr/lib/python3.10/site-packages/mesonbuild/modules/java.pyr    $   s
   
zJavaModule.__init__stater   returnr   c                 C  s:   d|j jjtj vrt|j dtjd |j jjtj d S )Nr   F)environmentZcoredata	compilersr   ZBUILDr   )r#   r(   r&   r&   r'   Z__get_java_compiler+   s   zJavaModule.__get_java_compilerzjava.generate_native_headersz0.62.0z1.0.0)varargsclassesT)defaultlistifyrequiredpackageN)r.   args&T.Tuple[T.List[mesonlib.FileOrString]]kwargsT.Dict[str, T.Optional[str]]r   c                 C     |  |||S N_JavaModule__native_headersr#   r(   r2   r4   r&   r&   r'   r   0   s   z"JavaModule.generate_native_headerszjava.native_headersc                 C  r6   r7   r8   r:   r&   r&   r'   r   =   s   
zJavaModule.native_headersc              
   C  s  t d|d}|d}|r|dddd}g }|D ]}|dd}	|r4|| d|	 d q||	 d q| |}
t|
jdd	d
|j	dg}|sU|d n|}t
| d|j	|j|j||d ||jd}t|
jdrt|j|jddd t||gS )NzT.List[str]r-   r1   -_.z.hz-dz@PRIVATE_DIR@z-hz@INPUT@r   z-native-headers)sourcesoutputsbackendz1.8.0T)parentsexist_ok)Tcastgetreplaceappend_JavaModule__get_java_compilerr   r/   ZexelistZsubdirr   Z
subprojectr*   r@   r   versionpathlibPathZget_target_private_dir_absmkdirr   )r#   r(   r2   r4   r-   r1   Zsanitized_packageheadersZclazzZsanitized_clazzZjavaccommandprefixtargetr&   r&   r'   Z__native_headersI   s<   

	
	zJavaModule.__native_headers)r   r   )r(   r   r)   r   )r(   r   r2   r3   r4   r5   r)   r   )__name__
__module____qualname__r   INFOr    rH   r   r
   r   strr   ZFiler   r   r   r   r   r	   listr   r   r   r9   __classcell__r&   r&   r$   r'   r       s8    

r   r2   T.Anyr4   r)   c                  O  s   t | i |S r7   )r   )r2   r4   r&   r&   r'   
initializet   s   rY   )r2   rX   r4   rX   r)   r   )&
__future__r   rJ   typingrC   Z
mesonbuildr   Zmesonbuild.buildr   r   r   r   Zmesonbuild.compilersr   Z%mesonbuild.interpreterbase.decoratorsr	   r
   r   r   r   r   Zmesonbuild.mesonlibr   r    r   r   r   Zinterpreter.type_checkingr   TYPE_CHECKINGr   r+   r   r   r   r   rY   r&   r&   r&   r'   <module>   s     T