
    e                        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<                  rddlmZ d
dl m!Z! d
dl"m#Z#  G d de      Z$ddZ%y)    )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                      e Zd Z edd      Zd fdZddZ edd       edd       e	de
ej                  eeef       ed ed	 eee
      g d
d
       ede
efd            	 	 	 	 dd                            Z edd       e	de
ej                  eeef       ed ed	 eee
      g d
d
       ede
efd            	 	 	 	 dd                     Z	 	 	 	 ddZ xZS )
JavaModulejavaz0.60.0c                    t         |           | j                  j                  | j                  | j
                  d       y )N)generate_native_headersnative_headers)super__init__methodsupdater   r    )selfinterpreter	__class__s     9/usr/lib/python3/dist-packages/mesonbuild/modules/java.pyr"   zJavaModule.__init__$   s7    '+'C'C"11
 	    c                   d|j                   j                  j                  t        j                     vr&t        |j                   dt        j                  d       |j                   j                  j                  t        j                     d   S )Nr   F)environmentcoredata	compilersr   BUILDr	   )r%   states     r(   __get_java_compilerzJavaModule.__get_java_compiler+   sj    **33==m>Q>QRR 1 16=;N;NPUV  ))33M4G4GHPPr)   zjava.generate_native_headersz0.62.0z1.0.0)varargsclassesT)defaultlistifyrequiredpackageN)r3   c                (    | j                  |||      S N_JavaModule__native_headersr%   r/   argskwargss       r(   r   z"JavaModule.generate_native_headers0   s     $$UD&99r)   zjava.native_headersc                (    | j                  |||      S r8   r9   r;   s       r(   r    zJavaModule.native_headers=   s     $$UD&99r)   c           
         t        j                  d|j                  d            }|j                  d      }|r"|j                  dd      j                  dd      }g }|D ]B  }|j                  dd      }	|r|j	                   d|	 d       /|j	                  |	 d       D | j                  |      }
t        j                  |
j                  dd	d
|j                  dg      }|s|d   n|}t        | d|j                  |j                  |j                  ||d   ||j                        }t        |
j                  d      r?t!        j"                  |j                  j%                  |            j'                  dd       t)        ||g      S )NzT.List[str]r2   r6   -_.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   r4   exelistsubdirr   
subprojectr+   rE   r   versionpathlibPathget_target_private_dir_absmkdirr   )r%   r/   r<   r=   r2   r6   sanitized_packageheadersclazzsanitized_clazzjavaccommandprefixtargets                 r(   __native_headerszJavaModule.__native_headersI   s|   &&

9(=>**Y' 'S 9 A A#s K! 	7E#mmC5O"3!4Ao5FbIJ/!2"56	7 ((/""MMLL$
  $+8#ll#..#//%&*1gwW 5=='2LLAA&IJPPY]hlPm &22r)   )r&   r   )r/   r   returnr   )r/   r   r<   z&T.Tuple[T.List[mesonlib.FileOrString]]r=   zT.Dict[str, T.Optional[str]]r_   r   )__name__
__module____qualname__r   INFOr"   rM   r   r   r   strr   Filer   r   r   r   r   r
   listr   r   r    r:   __classcell__)r'   s   @r(   r   r       sX   fh'DQ
 .95w?&hmmV->NP &).tS92t^bc)c8_d;=:(D:IZ:	=P @ :: %w/hmmV->NP ).tS92t^bc)c8_d;=:;:@Q:	=P 0:)3!=)3BS)3r)   r   c                     t        | i |S r8   )r   )r<   r=   s     r(   
initializeri   t   s    t&v&&r)   )r<   T.Anyr=   rj   r_   r   )&
__future__r   rR   typingrH   
mesonbuildr   mesonbuild.buildr   r   r   r   mesonbuild.compilersr	   %mesonbuild.interpreterbase.decoratorsr
   r   r   r   r   r   mesonbuild.mesonlibr   r    r   r   r   interpreter.type_checkingr   TYPE_CHECKINGr   r-   r   r&   r   r   ri    r)   r(   <module>rv      sY    #    S S 4 L  L > ? ? 0??$)R3# R3h'r)   