
    e                    .   d dl mZ d dlZd dlZddlmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZ dd	lmZmZ ej*                  rBd d
lmZmZ ddlmZ ddl	mZ ddlmZ ddlmZ ddlm Z  ddlm!Z!  G d de      Z" G d de      Z# G d de      Z$ddZ%y)    )annotationsN   )ExtensionModuleModuleReturnValue
ModuleInfo   )CustomTarget)NoneTypein_set_validator)typed_pos_argstyped_kwargs	KwargInfo)FileMesonException)Literal	TypedDict)ModuleState)
Executable)
Dependency)Interpreter)ExternalProgram)FileOrStringc                  6    e Zd ZU ded<   ded<   ded<   ded<   y)ScanXMLboolpublicclientserverinclude_core_onlyN__name__
__module____qualname____annotations__     </usr/lib/python3/dist-packages/mesonbuild/modules/wayland.pyr   r   #   s    r&   r   c                  "    e Zd ZU ded<   ded<   y)FindProtocolz(Literal['stable', 'staging', 'unstable']statezT.Optional[int]versionNr    r%   r&   r'   r)   r)   *   s    77  r&   r)   c                  6    e Zd Z eddd      Zd fdZ edeefd       e	d e
d	ed
       e
ded       e
ded
       e
dedd            dd              Z ede       e	d e
ded eh d             e
deef            dd              Z xZS )WaylandModulewaylandz0.62.0T)unstablec                    t         |   |       d | _        d | _        d | _        | j
                  j                  | j                  | j                  d       y )N)scan_xmlfind_protocol)	super__init__protocols_dep
pkgdatadirscanner_binmethodsupdater1   r2   )selfinterpreter	__class__s     r'   r4   zWaylandModule.__init__3   sN    %59+/MQ!//
 	r&   zwayland.scan_xmlr   )varargsmin_varargsr   F)defaultr   r   r   z0.64.0)r?   sincer*   c                   | j                   5|j                  d      }|j                  ddd|j                        | _         |d   rdnd}t	        j
                  ddd	g      D cg c]
  }||   s	| }}|st        d
      | j                  j                  |d         }g }	|D ];  }
t        j                  j                  t        j                  j                  |
j                              d   }t        | d|j                  |j                   |j"                  | j                   | dddg|
g| dg|j$                        }|	j'                  |       |D ]  }| j                   | dddg}|d   r|j'                  d       t        | d| d|j                  |j                   |j"                  ||
g| d| dg|j$                        }|	j'                  |        > t)        |	|	      S c c}w )Nzwayland-clientzwayland-scannerwayland_scanner)wantedr   privatez#T.List[Literal['client', 'server']]r   r   zFAt least one of client or server keyword argument must be set to true.r   z	-protocolz-codez@INPUT@z@OUTPUT@z-protocol.c)backendz-headerr   z--include-core-only-z-protocol.h)r7   
dependency	find_toolr+   Tcastr   r;   source_strings_to_filesospathsplitextbasenamefnamer	   subdir
subprojectenvironmentrE   appendr   )r:   r*   argskwargsdepscopeisides	xml_filestargetsxml_filenamecodesidecommandheaders                   r'   r1   zWaylandModule.scan_xml?   s    # ""#34C$/@BSUf69kk  /  CD #8,)FF#H8U]J^_mqcijkclmm !ijj$$<<T!WE	(*! 	'H77##BGG$4$4X^^$DEaHD&	"  !!!!eWE?IzJ
6%&	D NN4  '++vW-=y*U-.NN#89%fAdV9-LL$$%%JvQtfK01!MM	 v&'	'@ !'22M ns   %
G00G0zwayland.find_protocolstable>   rc   stagingr/   )r?   	validatorr+   c                .   |d   }|d   }|d   }|dk7  r|t        | d      |dk(  r|t        d      | j                  |j                  d      | _        | j                  "| j                  j	                  dd	      | _        |dk(  r| d
}n|dk(  r	| d| d
}n| d| d
}t
        j                  j                  | j                  |||      }t
        j                  j                  |      st        d| d      t        j                  |      S )Nr   r*   r+   rc   z$ protocols require a version number.z1stable protocols do not require a version number.zwayland-protocolsr6   )	pkgconfiginternalz.xmlrd   z-vz-unstable-vz	The file z does not exist.)r   r5   rG   r6   get_variablerL   rM   joinexistsr   from_absolute_file)	r:   r*   rU   rV   	base_name	xml_stater+   xml_namerM   s	            r'   r2   zWaylandModule.find_protocoly   s2    G	7O	# W_ I;.R!STT W%8 !TUU%!&!1!12E!FD??""00==_k=lDO #D)H)##Bwit4H#Ky=Hww||DOOY	8Lww~~d# 9TF2B!CDD&&t,,r&   )r;   r   returnNone)r*   r   rU   zT.Tuple[T.List[FileOrString]]rV   r   rp   r   )r*   r   rU   zT.Tuple[str]rV   r)   rp   r   )r!   r"   r#   r   INFOr4   r   strr   r   r   r   r1   r   intr
   r2   __classcell__)r<   s   @r'   r-   r-   /   s    iD9D
 &dK(D%0(D$/(D%0%tTJ03 L03d +S1'3<LMn<op)c8_-
- 2-r&   r-   c                    t        |       S )N)r-   )r;   s    r'   
initializerw      s    %%r&   )r;   r   rp   r-   )&
__future__r   rL   typingrI    r   r   r   buildr	   interpreter.type_checkingr
   r   interpreterbaser   r   r   mesonlibr   r   TYPE_CHECKINGtyping_extensionsr   r   r   r   dependenciesr   r;   r   programsr   r   r   r)   r-   rw   r%   r&   r'   <module>r      sm    # 	  < <   B E E +??4"))*' )  !y !
m-O m-`&r&   