î
_rY“  ã               @   s=  d  d l  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 m	 Z	 Gd d	 „  d	 ƒ Z
 i  Z Gd
 d „  d ƒ Z d d „  Z d d d „ Z Gd d „  d ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z d S)é    Né   )Úbuild)Údependencies)Úmlog)ÚMesonException)ÚpermittedKwargsÚnoKwargsc               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚpermittedSnippetKwargsc             C   s   | |  _  d  S)N)Ú	permitted)Úselfr
   © r   úW/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/modules/__init__.pyÚ__init__   s    zpermittedSnippetKwargs.__init__c                s   ‡  ‡ f d d †  } | S)Nc                sJ   x1 | D]) } | ˆ j  k r t j d | ƒ q q Wˆ  |  | | | | ƒ S)NzRPassed invalid keyword argument "%s". This will become a hard error in the future.)r
   r   Úwarning)ÚsÚinterpreterÚstateÚargsÚkwargsÚk)Úfr   r   r   Úwrapped   s    z0permittedSnippetKwargs.__call__.<locals>.wrappedr   )r   r   r   r   )r   r   r   Ú__call__   s    zpermittedSnippetKwargs.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	   	   s   r	   c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚExtensionModulec             C   s   t  ƒ  |  _ d  S)N)ÚsetÚsnippets)r   r   r   r   r      s    zExtensionModule.__init__c             C   s   | |  j  k S)N)r   )r   Úfuncnamer   r   r   Ú
is_snippet   s    zExtensionModule.is_snippetN)r   r   r   r   r    r   r   r   r   r      s   r   c             C   s^   |  t  k r t  |  St j |  ƒ } | j ƒ  sP d } t | j | |  ƒ ƒ ‚ n  | t  |  <| S)Nz9Target {!r} can't be generated as {!r} could not be found)Ú_found_programsr   ÚExternalProgramÚfoundr   Úformat)Zprogram_nameZtarget_nameZprogramÚmr   r   r   Úfind_program    s    
r&   z-Ic       
      C   s&  |  s
 g  Sg  } x|  D]} t  | d ƒ r8 | j } n | } t | t ƒ rj | d | | f g 7} q n  | j ƒ  } xw | j ƒ  D]i } t j j | | ƒ } t j j d | ƒ } t j j d | ƒ }	 | d | |	 f d | | f g 7} qƒ Wx+ | j	 ƒ  D] } | d | | f g 7} qý Wq W| S)z‹
    Expand include arguments to refer to the source and build dirs
    by using @SOURCE_ROOT@ and @BUILD_ROOT@ for later substitution
    Úheld_objectz%s%sz@SOURCE_ROOT@z@BUILD_ROOT@)
Úhasattrr'   Ú
isinstanceÚstrÚ
get_curdirÚget_incdirsÚosÚpathÚjoinÚget_extra_build_dirs)
Úinclude_dirsÚprefixZdirs_strÚincdirsÚdirsÚbasedirÚdZexpdirZ
srctreedirZbuildtreedirr   r   r   Úget_include_args+   s(    r7   c               @   s   e  Z d  Z d d „  Z d S)ÚModuleReturnValuec             C   s+   | |  _  t | t ƒ s t ‚ | |  _ d  S)N)Úreturn_valuer)   ÚlistÚAssertionErrorÚnew_objects)r   r9   r<   r   r   r   r   L   s    	zModuleReturnValue.__init__N)r   r   r   r   r   r   r   r   r8   K   s   r8   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)ÚGResourceTargetc                s   t  ƒ  j | | | ƒ d  S)N)Úsuperr   )r   ÚnameÚsubdirr   )Ú	__class__r   r   r   R   s    zGResourceTarget.__init__)r   r   r   r   r   r   )rA   r   r=   Q   s   r=   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)ÚGResourceHeaderTargetc                s   t  ƒ  j | | | ƒ d  S)N)r>   r   )r   r?   r@   r   )rA   r   r   r   V   s    zGResourceHeaderTarget.__init__)r   r   r   r   r   r   )rA   r   rB   U   s   rB   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)Ú	GirTargetc                s   t  ƒ  j | | | ƒ d  S)N)r>   r   )r   r?   r@   r   )rA   r   r   r   Z   s    zGirTarget.__init__)r   r   r   r   r   r   )rA   r   rC   Y   s   rC   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)ÚTypelibTargetc                s   t  ƒ  j | | | ƒ d  S)N)r>   r   )r   r?   r@   r   )rA   r   r   r   ^   s    zTypelibTarget.__init__)r   r   r   r   r   r   )rA   r   rD   ]   s   rD   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)Ú
VapiTargetc                s   t  ƒ  j | | | ƒ d  S)N)r>   r   )r   r?   r@   r   )rA   r   r   r   b   s    zVapiTarget.__init__)r   r   r   r   r   r   )rA   r   rE   a   s   rE   )r-   Ú r   r   r   Úmesonlibr   Úinterpreterbaser   r   r	   r!   r   r&   r7   r8   ÚCustomTargetr=   rB   rC   rD   rE   r   r   r   r   Ú<module>   s     